Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / RemoteEndpointMessageProperty.cs / 1 / RemoteEndpointMessageProperty.cs
//---------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------------------- namespace System.ServiceModel.Channels { using System; using System.Net; using System.Collections.Specialized; using System.ServiceModel.Activation; public sealed class RemoteEndpointMessageProperty { string address; int port; IPEndPoint remoteEndPoint; HostedRequestContainer hostedRequestContainer; InitializationState state; object thisLock = new object(); public RemoteEndpointMessageProperty(string address, int port) { if (string.IsNullOrEmpty(address)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("address"); } if (port < IPEndPoint.MinPort || port > IPEndPoint.MaxPort) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("port", SR.GetString(SR.ValueMustBeInRange, IPEndPoint.MinPort, IPEndPoint.MaxPort)); } this.port = port; this.address = address; this.state = InitializationState.All; } internal RemoteEndpointMessageProperty(HostedRequestContainer hostedRequestContainer) { this.hostedRequestContainer = hostedRequestContainer; } internal RemoteEndpointMessageProperty(IPEndPoint remoteEndPoint) { this.remoteEndPoint = remoteEndPoint; } public static string Name { get { return "System.ServiceModel.Channels.RemoteEndpointMessageProperty"; } } public string Address { get { if ((this.state & InitializationState.Address) != InitializationState.Address) { lock (ThisLock) { if ((this.state & InitializationState.Address) != InitializationState.Address) { Initialize(false); } } } return this.address; } } public int Port { get { if ((this.state & InitializationState.Port) != InitializationState.Port) { lock (ThisLock) { if ((this.state & InitializationState.Port) != InitializationState.Port) { Initialize(true); } } } return this.port; } } object ThisLock { get { return thisLock; } } void Initialize(bool getHostedPort) { if (remoteEndPoint != null) { this.address = remoteEndPoint.Address.ToString(); this.port = remoteEndPoint.Port; this.state = InitializationState.All; this.remoteEndPoint = null; } else { if ((this.state & InitializationState.Address) != InitializationState.Address) { this.address = hostedRequestContainer.GetRemoteAddress(); this.state |= InitializationState.Address; } if (getHostedPort) { this.port = hostedRequestContainer.GetRemotePort(); this.state |= InitializationState.Port; this.hostedRequestContainer = null; } } } [Flags] enum InitializationState { None = 0, Address = 1, Port = 2, All = 3 } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GetWorkflowTree.cs
- OrderingExpression.cs
- MenuBase.cs
- EncryptedKey.cs
- OdbcConnectionString.cs
- FontInfo.cs
- unsafenativemethodsother.cs
- OdbcError.cs
- ComponentEvent.cs
- ValueUtilsSmi.cs
- ConfigurationException.cs
- _UriSyntax.cs
- TableDetailsCollection.cs
- CallbackWrapper.cs
- AutomationPatternInfo.cs
- XmlSerializerAssemblyAttribute.cs
- ToolstripProfessionalRenderer.cs
- ClockController.cs
- ApplicationId.cs
- URIFormatException.cs
- Control.cs
- Trace.cs
- WebPartManagerInternals.cs
- SplitContainer.cs
- ReachUIElementCollectionSerializer.cs
- ping.cs
- webproxy.cs
- DataGridView.cs
- HistoryEventArgs.cs
- DataGridBoundColumn.cs
- Nullable.cs
- IOThreadScheduler.cs
- ConditionalAttribute.cs
- WebPartManagerInternals.cs
- DispatcherObject.cs
- ExpressionBuilderContext.cs
- StringDictionaryWithComparer.cs
- FilteredAttributeCollection.cs
- TableSectionStyle.cs
- OrderingExpression.cs
- OutputWindow.cs
- TemplateField.cs
- ColorMap.cs
- HttpWebRequest.cs
- FontNamesConverter.cs
- ScrollBar.cs
- XmlSchemaInferenceException.cs
- PathSegment.cs
- WinFormsUtils.cs
- BitmapMetadataEnumerator.cs
- JpegBitmapEncoder.cs
- ServiceHostFactory.cs
- HyperLinkColumn.cs
- SafeRsaProviderHandle.cs
- ThousandthOfEmRealPoints.cs
- SimpleBitVector32.cs
- BrushValueSerializer.cs
- DesignerSerializerAttribute.cs
- DesignerSerializationVisibilityAttribute.cs
- CopyOfAction.cs
- ConfigXmlCDataSection.cs
- MdiWindowListStrip.cs
- HyperLinkStyle.cs
- DebugTraceHelper.cs
- RemoteWebConfigurationHostServer.cs
- NativeActivityMetadata.cs
- ScrollEventArgs.cs
- CodeAccessSecurityEngine.cs
- WindowsFormsHelpers.cs
- GPRECT.cs
- SqlDataSourceCustomCommandEditor.cs
- HttpHandlerAction.cs
- Proxy.cs
- AutoResizedEvent.cs
- Roles.cs
- SEHException.cs
- Request.cs
- EntityDataSourceValidationException.cs
- XmlChoiceIdentifierAttribute.cs
- ResponseStream.cs
- SizeIndependentAnimationStorage.cs
- RequestResizeEvent.cs
- RuleInfoComparer.cs
- HttpConfigurationContext.cs
- DBSchemaTable.cs
- AdPostCacheSubstitution.cs
- InputScope.cs
- LogicalExpressionTypeConverter.cs
- RuleInfoComparer.cs
- UTF32Encoding.cs
- FileUpload.cs
- WebPartTransformerAttribute.cs
- SystemIcmpV4Statistics.cs
- Error.cs
- EncryptedData.cs
- AttachInfo.cs
- RawKeyboardInputReport.cs
- OrderToken.cs
- AdjustableArrowCap.cs
- DesignRelationCollection.cs