Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / ServiceModel / Dispatcher / DurableMessageDispatchInspector.cs / 1305376 / DurableMessageDispatchInspector.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System.ServiceModel.Channels; class DurableMessageDispatchInspector : IDispatchMessageInspector { public const string NewDurableInstanceIdPropertyName = "newDurableInstanceIdProperty"; const string suppressContextOnReply = "suppressContextOnReply"; SessionMode sessionMode; public DurableMessageDispatchInspector(SessionMode sessionMode) { this.sessionMode = sessionMode; } public static void SuppressContextOnReply(OperationContext operationContext) { if (operationContext == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operationContext"); } operationContext.OutgoingMessageProperties[suppressContextOnReply] = true; } public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) { if (instanceContext == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("instanceContext"); } if (request == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("request"); } if (sessionMode != SessionMode.NotAllowed) { object result = null; if (request.Properties.TryGetValue(NewDurableInstanceIdPropertyName, out result)) { return result.ToString(); } } return null; } public void BeforeSendReply(ref Message reply, object correlationState) { try { if (reply != null) { ContextMessageProperty context = null; if (sessionMode == SessionMode.NotAllowed || reply.Properties.ContainsKey(suppressContextOnReply)) { if (ContextMessageProperty.TryGet(reply, out context)) { context.Context.Clear(); } } else { string newInstanceId = correlationState as string; if (newInstanceId != null) { if (!ContextMessageProperty.TryGet(reply, out context)) { context = new ContextMessageProperty(); context.Context[WellKnownContextProperties.InstanceId] = newInstanceId; context.AddOrReplaceInMessage(reply); } else { context.Context[WellKnownContextProperties.InstanceId] = newInstanceId; } } } } } finally { DurableInstance durableInstance = OperationContext.Current.InstanceContext.Extensions.Find(); if (durableInstance == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new InvalidOperationException( SR2.GetString( SR2.RequiredInstanceContextExtensionNotFound, typeof(DurableInstance).Name))); } //Decrement InstanceActivity Count durableInstance.DecrementActivityCount(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TextElementCollectionHelper.cs
- AccessText.cs
- WebConfigurationHostFileChange.cs
- TextEncodedRawTextWriter.cs
- ListControlConvertEventArgs.cs
- TextEditorLists.cs
- TextServicesCompartmentContext.cs
- XmlWriter.cs
- Char.cs
- SplitterPanel.cs
- IdnElement.cs
- CombinedGeometry.cs
- KoreanCalendar.cs
- Zone.cs
- TransformationRules.cs
- ScriptingProfileServiceSection.cs
- XmlDictionary.cs
- TypeExtension.cs
- PagedDataSource.cs
- TabControl.cs
- UsernameTokenFactoryCredential.cs
- UnsignedPublishLicense.cs
- XmlTypeAttribute.cs
- ParameterModifier.cs
- OutOfMemoryException.cs
- DocumentSchemaValidator.cs
- SystemIcons.cs
- EndOfStreamException.cs
- PieceNameHelper.cs
- SQLDateTimeStorage.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- StyleCollection.cs
- CapacityStreamGeometryContext.cs
- TypeBuilderInstantiation.cs
- validationstate.cs
- PropertyNames.cs
- Matrix3DValueSerializer.cs
- AttributeTable.cs
- Stylus.cs
- WindowPattern.cs
- ItemType.cs
- PassportAuthenticationModule.cs
- MobileListItem.cs
- DataBindingExpressionBuilder.cs
- CommonRemoteMemoryBlock.cs
- ExtensibleClassFactory.cs
- ScrollViewer.cs
- WebServiceTypeData.cs
- KerberosSecurityTokenProvider.cs
- SystemWebSectionGroup.cs
- TableLayoutPanelResizeGlyph.cs
- DataObjectSettingDataEventArgs.cs
- GridSplitterAutomationPeer.cs
- Hex.cs
- AsyncOperationContext.cs
- DoubleAnimationClockResource.cs
- BaseTemplateBuildProvider.cs
- IPAddressCollection.cs
- SimpleBitVector32.cs
- DrawingContextWalker.cs
- XPathChildIterator.cs
- HttpWebResponse.cs
- TextSelectionHelper.cs
- TopClause.cs
- WindowsSysHeader.cs
- FontNamesConverter.cs
- JsonEncodingStreamWrapper.cs
- HttpProfileGroupBase.cs
- HttpListenerResponse.cs
- ProxyWebPart.cs
- MatrixConverter.cs
- SchemaExporter.cs
- LinqDataSourceValidationException.cs
- ConsumerConnectionPoint.cs
- ValidatedControlConverter.cs
- ErrorWrapper.cs
- GradientStop.cs
- ClipboardProcessor.cs
- metadatamappinghashervisitor.cs
- ScrollProperties.cs
- COM2ICategorizePropertiesHandler.cs
- WindowsScrollBarBits.cs
- TemplateNameScope.cs
- SubqueryTrackingVisitor.cs
- QuadraticBezierSegment.cs
- BrowserCapabilitiesFactory.cs
- StringBuilder.cs
- ArglessEventHandlerProxy.cs
- ExpiredSecurityTokenException.cs
- RectAnimationUsingKeyFrames.cs
- SqlCacheDependencySection.cs
- ArgumentException.cs
- ContentType.cs
- LeaseManager.cs
- DataViewSettingCollection.cs
- DynamicEndpointElement.cs
- LicenseContext.cs
- FixedElement.cs
- String.cs
- QuaternionValueSerializer.cs