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
- RoutedEventConverter.cs
- AssemblyAssociatedContentFileAttribute.cs
- InputMethodStateTypeInfo.cs
- StateRuntime.cs
- WsatAdminException.cs
- ConfigXmlReader.cs
- SymDocumentType.cs
- PathData.cs
- HtmlPageAdapter.cs
- ValidatingReaderNodeData.cs
- ContractCodeDomInfo.cs
- Wildcard.cs
- ExpressionLink.cs
- ObjectQuery_EntitySqlExtensions.cs
- StreamUpgradeAcceptor.cs
- WizardStepBase.cs
- StrokeNodeEnumerator.cs
- TrailingSpaceComparer.cs
- ComMethodElementCollection.cs
- AutomationPeer.cs
- ExpandoObject.cs
- ZipIOLocalFileDataDescriptor.cs
- SqlGenerator.cs
- ControlSerializer.cs
- ReferenceSchema.cs
- ObjectMemberMapping.cs
- ScriptResourceHandler.cs
- WebPartConnection.cs
- Encoder.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- ManagementObject.cs
- DoWorkEventArgs.cs
- DataBindingHandlerAttribute.cs
- filewebresponse.cs
- LinkConverter.cs
- PathGradientBrush.cs
- Rectangle.cs
- EmptyWorkItem.cs
- PeerCustomResolverBindingElement.cs
- DispatcherEventArgs.cs
- GenericWebPart.cs
- SecureStringHasher.cs
- StaticContext.cs
- FileChangesMonitor.cs
- CompatibleIComparer.cs
- ConfigurationProviderException.cs
- Stack.cs
- DiagnosticsConfiguration.cs
- TypeGeneratedEventArgs.cs
- CSharpCodeProvider.cs
- FixedTextView.cs
- NetworkAddressChange.cs
- PagePropertiesChangingEventArgs.cs
- HttpVersion.cs
- SortFieldComparer.cs
- SerializationSectionGroup.cs
- TransformPattern.cs
- SiteIdentityPermission.cs
- SQLStringStorage.cs
- ConstrainedDataObject.cs
- PerformanceCounter.cs
- CqlLexer.cs
- COM2PictureConverter.cs
- ValidationSummary.cs
- PropertyNames.cs
- StringReader.cs
- BitmapFrameDecode.cs
- AnimatedTypeHelpers.cs
- ReflectionUtil.cs
- QilBinary.cs
- CacheRequest.cs
- QilPatternFactory.cs
- UrlAuthFailedErrorFormatter.cs
- CheckBoxBaseAdapter.cs
- ToolStripHighContrastRenderer.cs
- ThreadExceptionDialog.cs
- HatchBrush.cs
- BinarySerializer.cs
- SystemColorTracker.cs
- Assert.cs
- OracleColumn.cs
- EDesignUtil.cs
- LinkedList.cs
- BaseServiceProvider.cs
- _Semaphore.cs
- MetaModel.cs
- EntryPointNotFoundException.cs
- ProvidePropertyAttribute.cs
- X509CertificateCollection.cs
- SQLInt32.cs
- XmlConvert.cs
- XmlCharCheckingReader.cs
- CodeTypeParameter.cs
- PriorityBinding.cs
- ObjectSelectorEditor.cs
- DataGridItem.cs
- ResourcesBuildProvider.cs
- ImageIndexConverter.cs
- StringWriter.cs
- SqlConnectionString.cs