|
|
@@ -25,29 +25,6 @@ NSString *kReachabilityChangedNotification = @"kNetworkReachabilityChangedNotifi
|
|
|
|
|
|
#pragma mark - Supporting functions
|
|
|
|
|
|
-#define kShouldPrintReachabilityFlags 0
|
|
|
-
|
|
|
-static void PrintReachabilityFlags(SCNetworkReachabilityFlags flags, const char* comment)
|
|
|
-{
|
|
|
-#if kShouldPrintReachabilityFlags
|
|
|
-
|
|
|
- NSLog(@"Reachability Flag Status: %c%c %c%c%c%c%c%c%c %s\n",
|
|
|
- (flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-',
|
|
|
- (flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-',
|
|
|
-
|
|
|
- (flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-',
|
|
|
- (flags & kSCNetworkReachabilityFlagsConnectionRequired) ? 'c' : '-',
|
|
|
- (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) ? 'C' : '-',
|
|
|
- (flags & kSCNetworkReachabilityFlagsInterventionRequired) ? 'i' : '-',
|
|
|
- (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) ? 'D' : '-',
|
|
|
- (flags & kSCNetworkReachabilityFlagsIsLocalAddress) ? 'l' : '-',
|
|
|
- (flags & kSCNetworkReachabilityFlagsIsDirect) ? 'd' : '-',
|
|
|
- comment
|
|
|
- );
|
|
|
-#endif
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info)
|
|
|
{
|
|
|
#pragma unused (target, flags)
|
|
|
@@ -132,7 +109,7 @@ static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReach
|
|
|
|
|
|
if (SCNetworkReachabilitySetCallback(_reachabilityRef, ReachabilityCallback, &context))
|
|
|
{
|
|
|
- if (SCNetworkReachabilityScheduleWithRunLoop(_reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode))
|
|
|
+ if (SCNetworkReachabilityScheduleWithRunLoop(_reachabilityRef, CFRunLoopGetMain(), kCFRunLoopDefaultMode))
|
|
|
{
|
|
|
returnValue = YES;
|
|
|
}
|
|
|
@@ -165,7 +142,6 @@ static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReach
|
|
|
|
|
|
- (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags
|
|
|
{
|
|
|
- PrintReachabilityFlags(flags, "networkStatusForFlags");
|
|
|
if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)
|
|
|
{
|
|
|
// The target host is not reachable.
|
|
|
@@ -238,5 +214,29 @@ static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReach
|
|
|
return returnValue;
|
|
|
}
|
|
|
|
|
|
+- (NSString*)currentReachabilityFlagsToString
|
|
|
+{
|
|
|
+ NSAssert(_reachabilityRef != NULL, @"currentReachabilityFlags called with NULL SCNetworkReachabilityRef");
|
|
|
+ SCNetworkReachabilityFlags flags;
|
|
|
+
|
|
|
+ if (SCNetworkReachabilityGetFlags(_reachabilityRef, &flags)) {
|
|
|
+ return [NSString stringWithFormat:@"%c%c %c%c%c%c%c%c%c",
|
|
|
+ (flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-',
|
|
|
+ (flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-',
|
|
|
+
|
|
|
+ (flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-',
|
|
|
+ (flags & kSCNetworkReachabilityFlagsConnectionRequired) ? 'c' : '-',
|
|
|
+ (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) ? 'C' : '-',
|
|
|
+ (flags & kSCNetworkReachabilityFlagsInterventionRequired) ? 'i' : '-',
|
|
|
+ (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) ? 'D' : '-',
|
|
|
+ (flags & kSCNetworkReachabilityFlagsIsLocalAddress) ? 'l' : '-',
|
|
|
+ (flags & kSCNetworkReachabilityFlagsIsDirect) ? 'd' : '-'
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ return @"";
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
|
|
|
@end
|