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
- PopupControlService.cs
- FamilyMap.cs
- WeakReferenceEnumerator.cs
- Exceptions.cs
- XmlSchemaCompilationSettings.cs
- LocationUpdates.cs
- FormViewUpdatedEventArgs.cs
- IdentityHolder.cs
- ColumnPropertiesGroup.cs
- XmlHierarchicalEnumerable.cs
- IApplicationTrustManager.cs
- NamespaceList.cs
- Validator.cs
- MetadataCache.cs
- BitArray.cs
- FormatterConverter.cs
- CommonRemoteMemoryBlock.cs
- StatusBarPanelClickEvent.cs
- TransformerInfoCollection.cs
- SystemColorTracker.cs
- SchemaNotation.cs
- DiscoveryServerProtocol.cs
- ReceiveActivity.cs
- NativeBuffer.cs
- UrlAuthFailedErrorFormatter.cs
- GridItemPatternIdentifiers.cs
- DashStyle.cs
- StringArrayConverter.cs
- EpmCustomContentSerializer.cs
- ConfigurationSchemaErrors.cs
- OneWayBindingElementImporter.cs
- NativeMethods.cs
- AlphabetConverter.cs
- StyleXamlTreeBuilder.cs
- WebPartConnectionCollection.cs
- CookielessHelper.cs
- XmlSchemaSubstitutionGroup.cs
- ListViewInsertionMark.cs
- Solver.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- EventWaitHandleSecurity.cs
- SecUtil.cs
- ArraySet.cs
- ColorPalette.cs
- PlainXmlWriter.cs
- AggregatePushdown.cs
- SrgsGrammarCompiler.cs
- StoragePropertyMapping.cs
- SetIndexBinder.cs
- Sql8ExpressionRewriter.cs
- AstNode.cs
- Memoizer.cs
- XmlILStorageConverter.cs
- SecurityDescriptor.cs
- BreadCrumbTextConverter.cs
- FontUnitConverter.cs
- StringCollection.cs
- Viewport3DVisual.cs
- PreviewPageInfo.cs
- TransportContext.cs
- ObjectReferenceStack.cs
- ReadOnlyDataSourceView.cs
- ValidationSummary.cs
- ContainerControlDesigner.cs
- HttpServerUtilityBase.cs
- AmbientProperties.cs
- TrackingServices.cs
- DesignConnectionCollection.cs
- WebPermission.cs
- XmlUnspecifiedAttribute.cs
- ListBox.cs
- TdsRecordBufferSetter.cs
- XamlStream.cs
- NetDispatcherFaultException.cs
- FixedSOMImage.cs
- DrawingAttributes.cs
- ToolStripPanelSelectionBehavior.cs
- CacheDict.cs
- Point3DCollectionConverter.cs
- Positioning.cs
- DataBindEngine.cs
- SafeArrayRankMismatchException.cs
- ChannelServices.cs
- Crc32.cs
- ControlCollection.cs
- ELinqQueryState.cs
- ToolTip.cs
- NonBatchDirectoryCompiler.cs
- ResourcePool.cs
- ConfigXmlElement.cs
- XmlDataCollection.cs
- PreDigestedSignedInfo.cs
- CharAnimationBase.cs
- DataGridCommandEventArgs.cs
- TextRangeEditLists.cs
- Privilege.cs
- CompositeFontFamily.cs
- UniqueIdentifierService.cs
- DataControlCommands.cs
- QueryConverter.cs