private static IPromise <IHttpResponse> SendSync(SyncHttpClient service, HttpRequest req, LogData trace) { try { return(Promises.Resolved((IHttpResponse)service.Send(req))); } catch (System.Net.WebException webex) { switch (webex.Status) { case System.Net.WebExceptionStatus.RequestCanceled: case System.Net.WebExceptionStatus.Timeout: return(Promises.Rejected <IHttpResponse>(new HttpTimeoutException(string.Format("A response was not received after waiting for {0:m' minutes, 's' seconds'}", req.Timeout)))); default: foreach (var kvp in trace) { webex.Data[kvp.Key] = kvp.Value; } trace.Add("exception", webex); return(Promises.Rejected <IHttpResponse>(webex)); } } catch (Exception ex) { foreach (var kvp in trace) { ex.Data[kvp.Key] = kvp.Value; } trace.Add("exception", ex); return(Promises.Rejected <IHttpResponse>(ex)); } }
public IPromise <ExplicitHashCredentials> HashCredentials(ICredentials credentials, bool async) { if (_state != ConnectionState.Normal) { return(Promises.Rejected <ExplicitHashCredentials>(new ObjectDisposedException("Cannot execute a query because the connection is being disposed (i.e. logged out)."))); } Interlocked.Increment(ref _concurrentQueries); return(_conn.HashCredentials(credentials, async) .Always(() => { var newCount = Interlocked.Decrement(ref _concurrentQueries); if (newCount < 1 && _state == ConnectionState.Disposing) { ExecuteDispose(); } })); }
public IPromise <Stream> Process(Command cmd, bool async) { if (_state != ConnectionState.Normal) { return(Promises.Rejected <Stream>(new ObjectDisposedException("Cannot execute a query because the connection is being disposed (i.e. logged out)."))); } Interlocked.Increment(ref _concurrentQueries); return(_conn.Process(cmd, async) .Always(() => { var newCount = Interlocked.Decrement(ref _concurrentQueries); if (newCount < 1 && _state == ConnectionState.Disposing) { ExecuteDispose(); } })); }