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; }
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; }
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; }