2 * Copyright (c) 2012, 2018 Apple Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
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
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.
21 * @APPLE_LICENSE_HEADER_END@
24 #ifndef _LIBSYSTEMCONFIGURATION_SERVER_H
25 #define _LIBSYSTEMCONFIGURATION_SERVER_H
27 #include <os/availability.h>
28 #include <TargetConditionals.h>
29 #include <sys/cdefs.h>
30 #include <dispatch/dispatch.h>
32 #include <CoreFoundation/CoreFoundation.h>
34 // ------------------------------------------------------------
37 #pragma mark [XPC] information server common code
39 // ------------------------------------------------------------
45 * stored configuration
47 * generation of the last stored configuration
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#
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
;
66 // Global server info SPIs
69 _libSC_info_server_init (
70 libSC_info_server_t
*server_info
74 _libSC_info_server_in_sync (
75 libSC_info_server_t
*server_info
79 _libSC_info_server_set_data (
80 libSC_info_server_t
*server_info
,
85 // Per-session server info SPIs
88 _libSC_info_server_open (
89 libSC_info_server_t
*server_info
,
94 _libSC_info_server_get_data (
95 libSC_info_server_t
*server_info
,
101 _libSC_info_server_acknowledged (
102 libSC_info_server_t
*server_info
,
108 _libSC_info_server_close (
109 libSC_info_server_t
*server_info
,
115 #endif // _LIBSYSTEMCONFIGURATION_SERVER_H