private static void TimerCallback(object state) { DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult duplexCorrelationAsyncResult = (DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult)state; if (duplexCorrelationAsyncResult.parent.inflightRequests.TryRemove(duplexCorrelationAsyncResult.RequestMessageId, out duplexCorrelationAsyncResult)) { string timeoutOnRequest = Resources.TimeoutOnRequest; object[] originalTimeout = new object[] { duplexCorrelationAsyncResult.OriginalTimeout }; string str = SRClient.TrackableExceptionMessageFormat(Microsoft.ServiceBus.SR.GetString(timeoutOnRequest, originalTimeout), duplexCorrelationAsyncResult.CreateClientTrackingExceptionInfo()); MessagingClientEtwProvider.TraceClient(() => MessagingClientEtwProvider.Provider.EventWriteLogOperationWarning("DuplexMessageCorrelation.TimerCallback", string.Format(CultureInfo.InvariantCulture, "In IO Thread Time callback , removing Request with Message Id:{0} and terminating the request with error: {1}", new object[] { duplexCorrelationAsyncResult.RequestMessageId.ToString(), str }))); duplexCorrelationAsyncResult.TryComplete(false, new TimeoutException(str)); } }
private void CancelPendingOperations(bool isFaulted) { this.CancelPing(); if (Interlocked.Exchange(ref this.interlockedSync, 1) == 0) { foreach (DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult value in this.inflightRequests.Values) { DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult duplexCorrelationAsyncResult = value; string str = SRClient.TrackableExceptionMessageFormat(SRClient.ServerDidNotReply, duplexCorrelationAsyncResult.CreateClientTrackingExceptionInfo()); Exception communicationObjectAbortedException = new CommunicationObjectAbortedException(str); if (isFaulted) { communicationObjectAbortedException = new CommunicationObjectFaultedException(str); } ActionItem.Schedule((object s) => duplexCorrelationAsyncResult.TryComplete(false, communicationObjectAbortedException), null); } this.inflightRequests.Clear(); } }