-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathiOSApi.SCNetworkReachability.pas
81 lines (65 loc) · 3.55 KB
/
iOSApi.SCNetworkReachability.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
unit iOSApi.SCNetworkReachability;
interface
{$IFDEF IOS}
uses
Macapi.CoreFoundation,
Posix.SysSocket,
Macapi.Dispatch;
const
libSystemConfiguration = '/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration';
kSCNetworkFlagsConnectionAutomatic = 8;
kSCNetworkFlagsConnectionRequired = 4;
kSCNetworkFlagsInterventionRequired = 16;
kSCNetworkFlagsIsDirect = 131072;
kSCNetworkFlagsIsLocalAddress = 65536;
kSCNetworkFlagsReachable = 2;
kSCNetworkFlagsTransientConnection = 1;
kSCNetworkReachabilityFlagsConnectionAutomatic = 8;
kSCNetworkReachabilityFlagsConnectionOnDemand = 32;
kSCNetworkReachabilityFlagsConnectionOnTraffic = 8;
kSCNetworkReachabilityFlagsConnectionRequired = 4;
kSCNetworkReachabilityFlagsInterventionRequired = 16;
kSCNetworkReachabilityFlagsIsDirect = 131072;
kSCNetworkReachabilityFlagsIsLocalAddress = 65536;
kSCNetworkReachabilityFlagsReachable = 2;
kSCNetworkReachabilityFlagsTransientConnection = 1;
kSCNetworkReachabilityFlagsIsWWAN = $40000; // iOS only
type
SCNetworkReachabilityFlags = UInt32;
SCNetworkReachabilityRef = ^__SCNetworkReachability;
__SCNetworkReachability = record
end;
SCNetworkReachabilityContext = record
version: CFIndex;
info: Pointer;
retain: function(info: Pointer): Pointer;
release: procedure(info: Pointer);
copyDescription: function(info: Pointer): CFStringRef;
end;
SCNetworkReachabilityContextPtr = ^SCNetworkReachabilityContext;
SCNetworkReachabilityCallback = procedure(target: SCNetworkReachabilityRef;
flags: SCNetworkReachabilityFlags; info: Pointer);
function SCNetworkReachabilityCreateWithAddress(allocator: CFAllocatorRef; address: psockaddr): SCNetworkReachabilityRef; cdecl;
external libSystemConfiguration name _PU + 'SCNetworkReachabilityCreateWithAddress';
function SCNetworkReachabilityCreateWithAddressPair(allocator: CFAllocatorRef; localAddress: psockaddr;
remoteAddress: psockaddr): SCNetworkReachabilityRef; cdecl;
external libSystemConfiguration name _PU + 'SCNetworkReachabilityCreateWithAddressPair';
function SCNetworkReachabilityCreateWithName(allocator: CFAllocatorRef; nodename: PChar): SCNetworkReachabilityRef; cdecl;
external libSystemConfiguration name _PU + 'SCNetworkReachabilityCreateWithName';
function SCNetworkReachabilityGetTypeID: CFTypeID; cdecl;
external libSystemConfiguration name _PU + 'SCNetworkReachabilityGetTypeID';
function SCNetworkReachabilityGetFlags(target: SCNetworkReachabilityRef; var flags: SCNetworkReachabilityFlags): Boolean; cdecl;
external libSystemConfiguration name _PU + 'SCNetworkReachabilityGetFlags';
function SCNetworkReachabilitySetCallback(target: SCNetworkReachabilityRef; callout: SCNetworkReachabilityCallback;
var context: SCNetworkReachabilityContext): Boolean; cdecl;
external libSystemConfiguration name _PU + 'SCNetworkReachabilitySetCallback';
function SCNetworkReachabilityScheduleWithRunLoop(target: SCNetworkReachabilityRef; runLoop: CFRunLoopRef;
runLoopMode: CFStringRef): Boolean; cdecl;
external libSystemConfiguration name _PU + 'SCNetworkReachabilityScheduleWithRunLoop';
function SCNetworkReachabilityUnscheduleFromRunLoop(target: SCNetworkReachabilityRef; runLoop: CFRunLoopRef; runLoopMode: CFStringRef): Boolean; cdecl;
external libSystemConfiguration name _PU + 'SCNetworkReachabilityUnscheduleFromRunLoop';
function SCNetworkReachabilitySetDispatchQueue(target: SCNetworkReachabilityRef; queue: dispatch_queue_t): Boolean; cdecl;
external libSystemConfiguration name _PU + 'SCNetworkReachabilitySetDispatchQueue';
{$ENDIF}
implementation
end.