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
- ProxySimple.cs
- OleDbDataAdapter.cs
- SegmentInfo.cs
- DecoderExceptionFallback.cs
- JoinQueryOperator.cs
- TypeInformation.cs
- CellLabel.cs
- CryptoApi.cs
- ObjectKeyFrameCollection.cs
- RealizationContext.cs
- OperationPerformanceCounters.cs
- ObjectListDataBindEventArgs.cs
- TextBox.cs
- PrimitiveSchema.cs
- UdpDiscoveryEndpointProvider.cs
- ApplicationCommands.cs
- DrawingAttributes.cs
- WinCategoryAttribute.cs
- DataGridColumnCollection.cs
- WindowsHyperlink.cs
- UserControl.cs
- HttpCapabilitiesBase.cs
- SqlDataSource.cs
- Identity.cs
- DocumentGrid.cs
- FileDetails.cs
- QuaternionValueSerializer.cs
- Calendar.cs
- SequenceFullException.cs
- ObjectCloneHelper.cs
- CopyAction.cs
- _AuthenticationState.cs
- EmbeddedObject.cs
- SpanIndex.cs
- TypeConverterHelper.cs
- parserscommon.cs
- BufferBuilder.cs
- AdapterSwitches.cs
- ProgressChangedEventArgs.cs
- HMACMD5.cs
- SqlNodeAnnotations.cs
- ImageDrawing.cs
- Hyperlink.cs
- RowCache.cs
- CaseKeyBox.xaml.cs
- MemoryMappedFileSecurity.cs
- ErrorProvider.cs
- SortExpressionBuilder.cs
- ToolStripOverflow.cs
- PrimitiveSchema.cs
- NumberFunctions.cs
- TextDecorations.cs
- ScopelessEnumAttribute.cs
- DataGridViewRowsRemovedEventArgs.cs
- RecordsAffectedEventArgs.cs
- GraphicsPath.cs
- TreeBuilder.cs
- Executor.cs
- Route.cs
- DefaultAssemblyResolver.cs
- KernelTypeValidation.cs
- InputQueueChannelAcceptor.cs
- DataControlField.cs
- BindingNavigatorDesigner.cs
- PropertyGridEditorPart.cs
- MediaContextNotificationWindow.cs
- GridViewEditEventArgs.cs
- DispatchChannelSink.cs
- WeakReadOnlyCollection.cs
- infer.cs
- LabelLiteral.cs
- StrongName.cs
- ClientScriptManager.cs
- TableAdapterManagerNameHandler.cs
- List.cs
- PropertyFilterAttribute.cs
- ThemeInfoAttribute.cs
- NetworkInformationPermission.cs
- WindowsGraphicsWrapper.cs
- FocusWithinProperty.cs
- ProfileGroupSettingsCollection.cs
- WindowsListBox.cs
- AssemblyUtil.cs
- AvtEvent.cs
- XmlDataImplementation.cs
- ApplicationGesture.cs
- RelativeSource.cs
- DetailsViewPagerRow.cs
- ProvidersHelper.cs
- WorkflowDesignerMessageFilter.cs
- XmlWrappingReader.cs
- InputLanguageProfileNotifySink.cs
- SByteConverter.cs
- PeerNameRecord.cs
- DictionaryBase.cs
- DigitalSignature.cs
- AnnotationAdorner.cs
- AppSettingsReader.cs
- DynamicActivity.cs
- FeatureSupport.cs