Ejemplo n.º 1
0
		public void DebugAdd(String user, String text, DataLoadedCallback callback)
		{
			if (String.IsNullOrEmpty(text)) return;

			var urlString = string.Format("{0}?user={1}&debugtext={2}&ranval={3}", ApiUrl, user, text, Environment.TickCount);

			var webRequest = new WebClient();
			webRequest.DownloadStringCompleted += WebRequestDownloadStringCompleted;
			var guid = Guid.NewGuid();
			_callback.Add(guid, callback);
			webRequest.DownloadStringAsync(new Uri(urlString), guid);
		}
Ejemplo n.º 2
0
		/// <summary>
		/// Overriding classes call this method to initiate a request.
		/// </summary>
		/// <param name="url">Caller URL</param>
		/// <param name="parameters">Caller parameters</param>
		/// <param name="callback">Returns on response</param>
		/// <param name="userObject">UserState, if needed</param>
		protected void CallApi(String url, IDictionary<string, string> parameters, DataLoadedCallback callback, object userObject = null)
		{
			Guid guid;

			Utils.NotNullArgument(callback, "callback", @"Callback for an ApiOperation MUST EXIST!");

			switch (ApiRequestType)
			{
				case RequestType.Get:
					guid = WebRequestDispatcher.InitiateGet(url, OnOperationCompleted, parameters, userObject);
					break;
				case RequestType.Post:
					guid = WebRequestDispatcher.InitiatePost(url, OnOperationCompleted, parameters, userObject);
					break;
				default:
					throw new ArgumentOutOfRangeException();
			}

			lock (this)
			{
				_concurrentRequests.Add(guid, callback);
			}
		}
Ejemplo n.º 3
0
		/// <summary>
		/// Cancel a request by callback
		/// </summary>
		/// <param name="callback">Target callbacks </param>
		public void CancelRequest(DataLoadedCallback callback)
		{
			var cancellable = _concurrentRequests.Where(kvp => kvp.Value == callback).ToList();

			foreach (var keyValuePair in cancellable)
			{
				Utils.ConcurrentWebService.CancelRequest(keyValuePair.Key);
				_concurrentRequests.Remove(keyValuePair);
			}
		}