Exemple #1
0
		public override Guid InitiatePost(string url, WebServiceResult result, string writableString, object userState)
		{
			var guid = Guid.NewGuid();

			var requestItem = new DoubleQueueRequestData(guid, RequestType.Post, url, writableString, userState, result, _currentWorker);

			switch (_currentWorker)
			{
				case CurrentlyUsedWorker.Primary:
					_primaryWorker.EnqueueOperation(requestItem);
					_currentWorker = CurrentlyUsedWorker.Secondary;
					break;
				case CurrentlyUsedWorker.Secondary:
					_secondaryWorker.EnqueueOperation(requestItem);
					_currentWorker = CurrentlyUsedWorker.Primary;
					break;
				default:
					throw new ArgumentOutOfRangeException();
			}

			return guid;
		}
Exemple #2
0
			public DoubleQueueRequestData(Guid apiGuidToken, RequestType requestType, string requestUri, string parameters, object userState, WebServiceResult result, CurrentlyUsedWorker currentWorker, bool returnOnUi = false)
				: base(apiGuidToken, requestType, requestUri, parameters, userState, result, returnOnUi)
			{

				_currentWorker = currentWorker;

			}
Exemple #3
0
		public override Guid InitiateGet(string url, WebServiceResult result, IDictionary<string, string> parameters, object userState)
		{
			var guid = Guid.NewGuid();

			var pars = Utils.ProcessArguments(parameters);
			var requestItem = new DoubleQueueRequestData(guid, RequestType.Get, url, pars, userState, result, _currentWorker);

			ThreadPool.QueueUserWorkItem(state =>
											 {
												 var item = (DoubleQueueRequestData)state;

												 switch (_currentWorker)
												 {
													 case CurrentlyUsedWorker.Primary:
														 _primaryWorker.EnqueueOperation(item);
														 _currentWorker = CurrentlyUsedWorker.Secondary;
														 break;
													 case CurrentlyUsedWorker.Secondary:
														 _secondaryWorker.EnqueueOperation(item);
														 _currentWorker = CurrentlyUsedWorker.Primary;
														 break;
													 default:
														 throw new ArgumentOutOfRangeException();
												 }
											 }, requestItem);
			return guid;
		}