public bool EndTryReceiveRequest(IAsyncResult asyncResult, out RequestContext requestContext) { if (asyncResult == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("asyncResult"); } ReceiveTimeoutAsyncResult result = asyncResult as ReceiveTimeoutAsyncResult; if (result == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.AsyncEndCalledWithAnIAsyncResult))); } RequestContext innerContext; if (InnerChannel.EndTryReceiveRequest(result.InnerResult, out innerContext)) { requestContext = FinishReceiveRequest(innerContext, result.TimeoutHelper.RemainingTime()); return(true); } else { requestContext = null; return(false); } }
public IAsyncResult BeginTryReceiveRequest(TimeSpan timeout, AsyncCallback callback, object state) { ReceiveTimeoutAsyncResult result = new ReceiveTimeoutAsyncResult(timeout, callback, state); result.InnerResult = this.InnerChannel.BeginTryReceiveRequest(timeout, result.InnerCallback, result.InnerState); return(result); }
private static void Callback(IAsyncResult result) { if (result == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("result"); } ReceiveTimeoutAsyncResult asyncState = (ReceiveTimeoutAsyncResult)result.AsyncState; asyncState.InnerResult = result; asyncState.Complete(result.CompletedSynchronously); }
public bool EndTryReceiveRequest(IAsyncResult asyncResult, out RequestContext requestContext) { RequestContext context; if (asyncResult == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("asyncResult"); } ReceiveTimeoutAsyncResult result = asyncResult as ReceiveTimeoutAsyncResult; if (result == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(System.ServiceModel.SR.GetString("AsyncEndCalledWithAnIAsyncResult"))); } if (base.InnerChannel.EndTryReceiveRequest(result.InnerResult, out context)) { requestContext = this.FinishReceiveRequest(context, result.TimeoutHelper.RemainingTime()); return(true); } requestContext = null; return(false); }