]> git.saurik.com Git - apple/configd.git/blob - libSystemConfiguration/libSystemConfiguration_server.h
configd-963.200.27.tar.gz
[apple/configd.git] / libSystemConfiguration / libSystemConfiguration_server.h
1 /*
2 * Copyright (c) 2012, 2018 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24 #ifndef _LIBSYSTEMCONFIGURATION_SERVER_H
25 #define _LIBSYSTEMCONFIGURATION_SERVER_H
26
27 #include <os/availability.h>
28 #include <TargetConditionals.h>
29 #include <sys/cdefs.h>
30 #include <dispatch/dispatch.h>
31 #include <xpc/xpc.h>
32 #include <CoreFoundation/CoreFoundation.h>
33
34 // ------------------------------------------------------------
35
36 #pragma mark -
37 #pragma mark [XPC] information server common code
38
39 // ------------------------------------------------------------
40
41
42 /*
43 * libSC_info_server_t
44 * data (CFData)
45 * stored configuration
46 * generation
47 * generation of the last stored configuration
48 * info (CFDictionary)
49 * key = xpc_connection_t [CFData]
50 * val = [CFData] (process name, last push'd, last ack'd)
51 * inSync_NO, inSync_YES
52 * count of client connections that have ack'd a configuration that
53 * are (or are not) in sync with the last stored generation#
54 */
55 typedef struct {
56 CFDataRef data;
57 uint64_t generation;
58 CFMutableDictionaryRef info;
59 int inSync_NO; // ack'ing clients not in sync w/generation
60 int inSync_YES; // ack'ing clients in sync w/generation
61 } libSC_info_server_t;
62
63
64 __BEGIN_DECLS
65
66 // Global server info SPIs
67
68 void
69 _libSC_info_server_init (
70 libSC_info_server_t *server_info
71 );
72
73 Boolean
74 _libSC_info_server_in_sync (
75 libSC_info_server_t *server_info
76 );
77
78 void
79 _libSC_info_server_set_data (
80 libSC_info_server_t *server_info,
81 CFDataRef data,
82 uint64_t generation
83 );
84
85 // Per-session server info SPIs
86
87 void
88 _libSC_info_server_open (
89 libSC_info_server_t *server_info,
90 xpc_connection_t c
91 );
92
93 CFDataRef
94 _libSC_info_server_get_data (
95 libSC_info_server_t *server_info,
96 xpc_connection_t c,
97 uint64_t *generation
98 );
99
100 Boolean
101 _libSC_info_server_acknowledged (
102 libSC_info_server_t *server_info,
103 xpc_connection_t c,
104 uint64_t generation
105 );
106
107 Boolean
108 _libSC_info_server_close (
109 libSC_info_server_t *server_info,
110 xpc_connection_t c
111 );
112
113 __END_DECLS
114
115 #endif // _LIBSYSTEMCONFIGURATION_SERVER_H