private void WhatToDoOnFail(DoubleQueueRequestData obj) { if (obj.IsHandled) return; Responser(obj, new WebServiceEventArgs(WebApiServerStatus.Error, new Exception(), String.Empty, obj.UserState)); }
private void StartApiOperation(DoubleQueueRequestData arg1) { Executor(arg1); }
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; }
private void Executor(DoubleQueueRequestData requestData) { Debug.Assert(requestData.Result != null); Debug.Assert(HasInternetConnectivity); if (requestData.RequestType == RequestType.Get) { CreateGetRequestWithState(requestData, GetResponseProcessorCallback); } else { CreatePostRequestWithState(requestData, StartPostRequestStreamCallback); } }
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; }