Beispiel #1
0
		public NSUrlConnectionWrapper(NSUrlRequest request, EscozUrlDelegate del) : base(request, del, true)
		{
			if (Connections.ContainsKey(del.Name)) {
				KillConnection(del.Name);
			}
			Connections.Add(del.Name, this);			
		}
Beispiel #2
0
		public static void Launch (string url, bool callbackOnMainThread, Action<string> callback)
		{
			Util.PushNetworkActive ();
			Uri uri = new Uri (url);
			
			Util.Log(uri.OriginalString);
			
			// Wake up 3G if it has been more than 3 minutes
			lock (minuteLock){
				var nowTicks = DateTime.UtcNow.Ticks;
				if (nowTicks-lastLaunchTick > TimeSpan.TicksPerMinute*3)
					MonoTouch.ObjCRuntime.Runtime.StartWWAN (uri);
				lastLaunchTick = nowTicks;
			}			
			
			var req = new NSMutableUrlRequest(new NSUrl(url), NSUrlRequestCachePolicy.ReloadIgnoringCacheData,5);			
			//req["User-Agent"]=_UserAgent;			
			var mydelegate = new EscozUrlDelegate(url,(result)=>
           { 				
				try
				{
					lock (queue)
						pending--;
					
					Util.PopNetworkActive ();					
					
					if (callbackOnMainThread)
						invoker.BeginInvokeOnMainThread (delegate { callback(result); });
					else 
						callback(result);
					
				} catch (Exception e){
					Util.LogException ("Launch", e);
				}
				lock (queue){
					if (queue.Count > 0){
						var nextRequest = queue.Dequeue ();
						Launch (nextRequest.Url, nextRequest.CallbackOnMainThread, nextRequest.Callback);
					}
				}
			});
			//new NSUrlConnectionWrapper(req, mydelegate);
			invoker.BeginInvokeOnMainThread(()=>
            {
				new NSUrlConnection(req, mydelegate, true);
			});
		}