Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / TerminatingOperationBehavior.cs / 1 / TerminatingOperationBehavior.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.Dispatcher
{
using System.ServiceModel.Channels;
internal class TerminatingOperationBehavior
{
static void AbortChannel(object state)
{
((IChannel)state).Abort();
}
public static TerminatingOperationBehavior CreateIfNecessary(DispatchRuntime dispatch)
{
if (IsTerminatingOperationBehaviorNeeded(dispatch))
{
return new TerminatingOperationBehavior();
}
else
{
return null;
}
}
static bool IsTerminatingOperationBehaviorNeeded(DispatchRuntime dispatch)
{
for (int i = 0; i < dispatch.Operations.Count; i++)
{
DispatchOperation operation = dispatch.Operations[i];
if (operation.IsTerminating)
{
return true;
}
}
return false;
}
internal void AfterReply(ref MessageRpc rpc)
{
if (rpc.Operation.IsTerminating && rpc.Channel.HasSession)
{
IOThreadTimer timer = new IOThreadTimer(TerminatingOperationBehavior.AbortChannel,
rpc.Channel.Binder.Channel, false);
timer.Set(rpc.Channel.CloseTimeout);
}
}
internal static void AfterReply(ref ProxyRpc rpc)
{
if (rpc.Operation.IsTerminating && rpc.Channel.HasSession)
{
IChannel sessionChannel = rpc.Channel.Binder.Channel;
rpc.Channel.Close(rpc.TimeoutHelper.RemainingTime());
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ReadOnlyNameValueCollection.cs
- AdapterDictionary.cs
- QueryOptionExpression.cs
- TextEndOfSegment.cs
- SByte.cs
- Span.cs
- DBCommand.cs
- ComponentResourceKey.cs
- HandlerFactoryCache.cs
- CacheModeValueSerializer.cs
- DocumentCollection.cs
- AnnotationResourceCollection.cs
- DataGridTextBoxColumn.cs
- DeferredReference.cs
- Invariant.cs
- AuthenticationModuleElement.cs
- Trace.cs
- Attributes.cs
- DataGridViewTextBoxEditingControl.cs
- SqlUdtInfo.cs
- mediaeventargs.cs
- PerCallInstanceContextProvider.cs
- TransactionCache.cs
- WebControl.cs
- SafeHandles.cs
- FloatUtil.cs
- DesignerSerializationVisibilityAttribute.cs
- Tile.cs
- typedescriptorpermission.cs
- Debugger.cs
- DataBoundControlHelper.cs
- EmbossBitmapEffect.cs
- SmiTypedGetterSetter.cs
- XPathNodeHelper.cs
- PageBuildProvider.cs
- log.cs
- TypeUtils.cs
- RootAction.cs
- OuterGlowBitmapEffect.cs
- DataGridViewSelectedRowCollection.cs
- DataGridParentRows.cs
- Point3D.cs
- SortableBindingList.cs
- EdmComplexPropertyAttribute.cs
- FeatureAttribute.cs
- CallSite.cs
- CellParaClient.cs
- TrackingMemoryStreamFactory.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- DbQueryCommandTree.cs
- HttpValueCollection.cs
- RectKeyFrameCollection.cs
- ProviderException.cs
- FormViewUpdateEventArgs.cs
- Deserializer.cs
- ThreadInterruptedException.cs
- StringUtil.cs
- StringKeyFrameCollection.cs
- Container.cs
- ChannelFactoryRefCache.cs
- DurableInstanceManager.cs
- SiteMapProvider.cs
- CategoryAttribute.cs
- MemoryStream.cs
- Focus.cs
- COM2TypeInfoProcessor.cs
- ClientScriptManager.cs
- CollectionBase.cs
- EventKeyword.cs
- SRef.cs
- ReferenceService.cs
- ConnectionPoint.cs
- XPathPatternBuilder.cs
- Point3D.cs
- File.cs
- LineSegment.cs
- BuildProviderCollection.cs
- ZipIOExtraFieldZip64Element.cs
- BypassElement.cs
- FacetValues.cs
- DataGridCellsPresenter.cs
- Quaternion.cs
- DynamicControlParameter.cs
- TextElementAutomationPeer.cs
- QilTypeChecker.cs
- NetworkAddressChange.cs
- PositiveTimeSpanValidatorAttribute.cs
- NativeCppClassAttribute.cs
- TemplateControl.cs
- DetailsViewUpdatedEventArgs.cs
- ChangeNode.cs
- SoapReflectionImporter.cs
- TagNameToTypeMapper.cs
- SizeValueSerializer.cs
- AssociationSet.cs
- SourceInterpreter.cs
- DesignerListAdapter.cs
- FontWeight.cs
- DBConnection.cs
- XmlAttributes.cs