Beispiel #1
0
        internal static string [] FetchArray(IntPtr cfArrayString, bool owns)
        {
            string [] ret;
            // Fetc the values from the array that we own.
            var arr = new CFArray(cfArrayString, owns: owns);
            int c   = (int)arr.Count;

            ret = new string [c];
            for (int i = 0; i < c; i++)
            {
                ret [i] = CFString.FetchString(arr.GetValue(i));
            }
            arr.Dispose();

            return(ret);
        }
 public override void Dispose(CTParagraphStyleSettingValue[] values, int index)
 {
     values [index].pointer = IntPtr.Zero;
     value.Dispose();
     value = null;
 }
Beispiel #3
0
		public static CFProxy[] ExecuteProxyAutoConfigurationURL (IntPtr proxyAutoConfigURL, Uri targetURL)
		{
			CFUrl url = CFUrl.Create (targetURL.AbsoluteUri);
			if (url == null)
				return null;

			CFProxy[] proxies = null;

			var runLoop = CFRunLoop.CurrentRunLoop;

			// Callback that will be called after executing the configuration script
			CFProxyAutoConfigurationResultCallback cb = delegate (IntPtr client, IntPtr proxyList, IntPtr error) {
				if (proxyList != IntPtr.Zero) {
					var array = new CFArray (proxyList, false);
					proxies = new CFProxy [array.Count];
					for (int i = 0; i < proxies.Length; i++) {
						CFDictionary dict = new CFDictionary (array[i], false);
						proxies[i] = new CFProxy (dict);
					}
					array.Dispose ();
				}
				runLoop.Stop ();
			};

			var clientContext = new CFStreamClientContext ();
			var loopSource = CFNetworkExecuteProxyAutoConfigurationURL (proxyAutoConfigURL, url.Handle, cb, ref clientContext);

			// Create a private mode
			var mode = CFString.Create ("Mono.MacProxy");

			runLoop.AddSource (loopSource, mode);
			runLoop.RunInMode (mode, double.MaxValue, false);
			runLoop.RemoveSource (loopSource, mode);

			return proxies;
		}