static public StatusCode TryGetSupportedInterfaces(out string[] supportedInterfaces) { IntPtr array = CNCopySupportedInterfaces(); if (array == IntPtr.Zero) { supportedInterfaces = null; return(StatusCodeError.SCError()); } supportedInterfaces = NSArray.StringArrayFromHandle(array); CFObject.CFRelease(array); return(StatusCode.OK); }
static public StatusCode TryCopyCurrentNetworkInfo(string interfaceName, out NSDictionary currentNetworkInfo) { using (var nss = new NSString(interfaceName)) { var ni = CNCopyCurrentNetworkInfo(nss.Handle); if (ni == IntPtr.Zero) { currentNetworkInfo = null; return(StatusCodeError.SCError()); } currentNetworkInfo = new NSDictionary(ni); // Must release since the IntPtr constructor calls Retain currentNetworkInfo.DangerousRelease(); return(StatusCode.OK); } }
public StatusCode SetNotification(Notification callback) { if (notification == null) { if (callback == null) { return(StatusCode.OK); } gch = GCHandle.Alloc(this); var ctx = new SCNetworkReachabilityContext(GCHandle.ToIntPtr(gch)); lock (typeof(NetworkReachability)){ if (callouth == null) { callouth = Callback; } } if (!SCNetworkReachabilitySetCallback(handle, callouth, ref ctx)) { return(StatusCodeError.SCError()); } } else { if (callback == null) { this.notification = null; callouth = null; if (!SCNetworkReachabilitySetCallback(handle, null, IntPtr.Zero)) { return(StatusCodeError.SCError()); } return(StatusCode.OK); } } this.notification = callback; return(StatusCode.OK); }
public StatusCode GetFlags(out NetworkReachabilityFlags flags) { return(SCNetworkReachabilityGetFlags(handle, out flags) == 0 ? StatusCodeError.SCError() : StatusCode.OK); }
internal static SystemConfigurationException FromMostRecentCall() { var code = StatusCodeError.SCError(); return(new SystemConfigurationException(code)); }
public SystemConfigurationException(StatusCode statusErrorCode) : base(StatusCodeError.GetErrorDescription(statusErrorCode)) { StatusErrorCode = statusErrorCode; }