Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Discovery / System / ServiceModel / Discovery / DiscoveryOperationContext.cs / 1305376 / DiscoveryOperationContext.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.ServiceModel.Discovery { using System; using System.Runtime; using System.ServiceModel.Channels; using System.Xml; class DiscoveryOperationContext { [Fx.Tag.SynchronizationObject] readonly object thisLock; readonly OperationContext operationContext; readonly DiscoveryOperationContextExtension operationContextExtension; readonly DiscoveryMessageProperty messageProperty; MessageHeaders outgoingMessageHeaders; public DiscoveryOperationContext(OperationContext operationContext) { Fx.Assert(operationContext != null, "The operationContext must be non null."); this.operationContext = operationContext; this.operationContextExtension = DiscoveryOperationContext.GetDiscoveryOperationContextExtension(this.operationContext); this.messageProperty = DiscoveryOperationContext.GetDiscoveryMessageProperty(this.operationContext); this.thisLock = new object(); } public ServiceDiscoveryMode DiscoveryMode { get { return this.operationContextExtension.DiscoveryMode; } } public TimeSpan MaxResponseDelay { get { return this.operationContextExtension.MaxResponseDelay; } } public TResponseChannel GetCallbackChannel() { return this.operationContext.GetCallbackChannel (); } public void AddressDuplexResponseMessage(OperationContext responseOperationContext) { EnsureOutgoingMessageHeaders(); responseOperationContext.OutgoingMessageHeaders.CopyHeadersFrom(this.outgoingMessageHeaders); responseOperationContext.OutgoingMessageHeaders.MessageId = new UniqueId(); this.AddDiscoveryMessageProperty(responseOperationContext); } public void AddressRequestResponseMessage(OperationContext responseOperationContext) { responseOperationContext.OutgoingMessageHeaders.MessageId = new UniqueId(); this.AddDiscoveryMessageProperty(responseOperationContext); } static DiscoveryOperationContextExtension GetDiscoveryOperationContextExtension(OperationContext operationContext) { DiscoveryOperationContextExtension operationContextExtension = operationContext.Extensions.Find (); if (operationContextExtension == null) { operationContextExtension = new DiscoveryOperationContextExtension(); } return operationContextExtension; } static DiscoveryMessageProperty GetDiscoveryMessageProperty(OperationContext operationContext) { object messageProperty; if (operationContext.IncomingMessageProperties.TryGetValue(DiscoveryMessageProperty.Name, out messageProperty)) { return messageProperty as DiscoveryMessageProperty; } else { return null; } } static MessageHeaders GetOutgoingMessageHeaders(OperationContext operationContext) { MessageHeaders outgoingMessageHeaders = new MessageHeaders(operationContext.IncomingMessageVersion); EndpointAddress replyTo = operationContext.IncomingMessageHeaders.ReplyTo; if (replyTo != null) { outgoingMessageHeaders.To = replyTo.Uri; foreach (AddressHeader addrHeader in replyTo.Headers) { outgoingMessageHeaders.Add(addrHeader.ToMessageHeader()); } } outgoingMessageHeaders.RelatesTo = operationContext.IncomingMessageHeaders.MessageId; return outgoingMessageHeaders; } void AddDiscoveryMessageProperty(OperationContext responseOperationContext) { if (this.messageProperty != null) { responseOperationContext.OutgoingMessageProperties.Add( DiscoveryMessageProperty.Name, this.messageProperty); } } void EnsureOutgoingMessageHeaders() { if (this.outgoingMessageHeaders == null) { lock (this.thisLock) { if (this.outgoingMessageHeaders == null) { this.outgoingMessageHeaders = DiscoveryOperationContext.GetOutgoingMessageHeaders(this.operationContext); } } } } } } // 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
- ListBindableAttribute.cs
- PixelFormats.cs
- RelatedPropertyManager.cs
- ArraySegment.cs
- DurableInstanceManager.cs
- XmlAttributes.cs
- GlyphRunDrawing.cs
- Boolean.cs
- WriteFileContext.cs
- CodeObject.cs
- WebRequestModulesSection.cs
- Parallel.cs
- XmlSchemas.cs
- ColumnMapCopier.cs
- WebRequestModuleElementCollection.cs
- Compiler.cs
- OdbcInfoMessageEvent.cs
- XmlBufferReader.cs
- SizeFConverter.cs
- SystemEvents.cs
- WindowPattern.cs
- counter.cs
- HealthMonitoringSectionHelper.cs
- ProgramNode.cs
- HttpSessionStateWrapper.cs
- CaseInsensitiveHashCodeProvider.cs
- SR.Designer.cs
- TextParagraph.cs
- MimeTypePropertyAttribute.cs
- TextReader.cs
- SerializationObjectManager.cs
- XmlMemberMapping.cs
- BitmapFrameEncode.cs
- TimeSpanStorage.cs
- PasswordPropertyTextAttribute.cs
- ToolStripDropDownClosingEventArgs.cs
- CustomAttributeFormatException.cs
- SpAudioStreamWrapper.cs
- Int32EqualityComparer.cs
- DesignTimeVisibleAttribute.cs
- CapacityStreamGeometryContext.cs
- SQLInt32Storage.cs
- HashSet.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- SQLDouble.cs
- IImplicitResourceProvider.cs
- CustomValidator.cs
- FloatUtil.cs
- Point3DCollection.cs
- VBCodeProvider.cs
- TransactionalPackage.cs
- DataGridViewCell.cs
- ScrollBarAutomationPeer.cs
- DataSourceComponent.cs
- ColorDialog.cs
- InternalBase.cs
- PageParser.cs
- FrameworkReadOnlyPropertyMetadata.cs
- LocalizeDesigner.cs
- Bezier.cs
- ILGenerator.cs
- PassportAuthenticationModule.cs
- InertiaRotationBehavior.cs
- UniformGrid.cs
- wpf-etw.cs
- KeyNotFoundException.cs
- WebSysDescriptionAttribute.cs
- BezierSegment.cs
- ProfileSettingsCollection.cs
- StaticDataManager.cs
- StrongNameMembershipCondition.cs
- FacetValueContainer.cs
- DispatchChannelSink.cs
- FilterQueryOptionExpression.cs
- SqlProfileProvider.cs
- TextControlDesigner.cs
- RowCache.cs
- PersonalizationProviderCollection.cs
- _SslStream.cs
- CodeDomConfigurationHandler.cs
- HtmlForm.cs
- DrawingGroup.cs
- WebPart.cs
- Line.cs
- MappingSource.cs
- QilFunction.cs
- InsufficientMemoryException.cs
- ReadOnlyPermissionSet.cs
- FormViewPageEventArgs.cs
- FieldTemplateUserControl.cs
- WsdlInspector.cs
- CodeCommentStatement.cs
- DbProviderFactoriesConfigurationHandler.cs
- Nullable.cs
- AuthStoreRoleProvider.cs
- FrameworkObject.cs
- XmlSerializer.cs
- CodeDefaultValueExpression.cs
- ConsumerConnectionPointCollection.cs
- OdbcConnectionOpen.cs