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
- Number.cs
- RequestCacheManager.cs
- DefaultIfEmptyQueryOperator.cs
- WebScriptServiceHost.cs
- BufferedGraphicsContext.cs
- SBCSCodePageEncoding.cs
- SafeThreadHandle.cs
- GenericWebPart.cs
- WindowsImpersonationContext.cs
- SqlConnection.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- DataRecordInfo.cs
- XmlAttributeCollection.cs
- SingleObjectCollection.cs
- UTF8Encoding.cs
- LeafCellTreeNode.cs
- CodeAttachEventStatement.cs
- SplashScreenNativeMethods.cs
- CompiledQueryCacheKey.cs
- Ipv6Element.cs
- TreeIterator.cs
- DataObject.cs
- LinearGradientBrush.cs
- SettingsBindableAttribute.cs
- RecordManager.cs
- VisualBasicValue.cs
- RelationshipSet.cs
- PixelFormats.cs
- QueryCacheKey.cs
- XmlSchemaExternal.cs
- StrokeRenderer.cs
- SolidColorBrush.cs
- SaveFileDialog.cs
- ConfigUtil.cs
- IpcChannel.cs
- CatalogZoneBase.cs
- SchemaImporterExtensionElement.cs
- COM2ExtendedUITypeEditor.cs
- smtppermission.cs
- FindCriteria11.cs
- ListViewInsertedEventArgs.cs
- XmlEntity.cs
- TextOutput.cs
- XmlCollation.cs
- SudsCommon.cs
- EdmProviderManifest.cs
- SortDescriptionCollection.cs
- TypeExtension.cs
- CardSpaceException.cs
- TableParaClient.cs
- SelectionRangeConverter.cs
- contentDescriptor.cs
- CatalogZone.cs
- GridView.cs
- SamlSerializer.cs
- EntityParameterCollection.cs
- XmlValidatingReader.cs
- DataGridRowEventArgs.cs
- ValidationPropertyAttribute.cs
- AnnotationDocumentPaginator.cs
- GeometryDrawing.cs
- SqlBulkCopyColumnMappingCollection.cs
- Vector.cs
- EditorPart.cs
- ManagementPath.cs
- MultilineStringConverter.cs
- XmlMemberMapping.cs
- EntityContainer.cs
- AppDomainGrammarProxy.cs
- MediaScriptCommandRoutedEventArgs.cs
- SizeLimitedCache.cs
- XmlSchemaIdentityConstraint.cs
- StructuredCompositeActivityDesigner.cs
- EntityParameter.cs
- VarRemapper.cs
- Brush.cs
- CapabilitiesPattern.cs
- SamlAuthenticationClaimResource.cs
- UIAgentMonitor.cs
- InfiniteTimeSpanConverter.cs
- ProtocolsConfiguration.cs
- ToolStripScrollButton.cs
- ColorTransform.cs
- MemberInfoSerializationHolder.cs
- ToolStripCollectionEditor.cs
- EntityTypeEmitter.cs
- TextModifier.cs
- EUCJPEncoding.cs
- SqlTypeSystemProvider.cs
- HtmlButton.cs
- ThreadInterruptedException.cs
- ImageCodecInfoPrivate.cs
- CanExecuteRoutedEventArgs.cs
- StateItem.cs
- IISMapPath.cs
- ProvidersHelper.cs
- SparseMemoryStream.cs
- ReverseInheritProperty.cs
- EmptyCollection.cs
- PageThemeBuildProvider.cs