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
- SafeCoTaskMem.cs
- ChannelTraceRecord.cs
- unsafeIndexingFilterStream.cs
- IdentifierCollection.cs
- TagMapCollection.cs
- MachineKeySection.cs
- RawStylusInputCustomDataList.cs
- ToolboxService.cs
- ExceptionAggregator.cs
- Collection.cs
- RootBrowserWindow.cs
- FeatureSupport.cs
- HttpVersion.cs
- SamlConditions.cs
- DataServiceQueryException.cs
- Main.cs
- HitTestParameters.cs
- EntityDataSourceEntityTypeFilterItem.cs
- Error.cs
- StackOverflowException.cs
- AnimationClock.cs
- RegisteredDisposeScript.cs
- NameSpaceEvent.cs
- BlurEffect.cs
- MatrixKeyFrameCollection.cs
- GeneralTransform3DTo2D.cs
- ObjectQuery_EntitySqlExtensions.cs
- SqlWebEventProvider.cs
- BitmapEffectInput.cs
- KeyBinding.cs
- WebPartTransformer.cs
- LoginName.cs
- PrintDialogException.cs
- URI.cs
- ItemsControlAutomationPeer.cs
- ExpressionBuilderContext.cs
- RijndaelManagedTransform.cs
- AnalyzedTree.cs
- SessionEndingEventArgs.cs
- BufferedReadStream.cs
- QueryableDataSourceView.cs
- Table.cs
- XhtmlBasicValidationSummaryAdapter.cs
- ExceptionUtil.cs
- Graphics.cs
- SiteMapHierarchicalDataSourceView.cs
- GradientBrush.cs
- MessageQueueException.cs
- EndpointBehaviorElementCollection.cs
- ChildrenQuery.cs
- GeneralTransform.cs
- ServiceOperationParameter.cs
- OdbcInfoMessageEvent.cs
- ImageClickEventArgs.cs
- OleDbConnectionFactory.cs
- CellTreeNodeVisitors.cs
- InstanceKeyCompleteException.cs
- WhiteSpaceTrimStringConverter.cs
- DataGridViewBindingCompleteEventArgs.cs
- EncryptedPackageFilter.cs
- DesignerHelpers.cs
- ImportCatalogPart.cs
- IsolatedStorageSecurityState.cs
- SaveFileDialog.cs
- FormatException.cs
- DirectionalLight.cs
- XmlParser.cs
- TemplatedWizardStep.cs
- TextEditorCopyPaste.cs
- Propagator.ExtentPlaceholderCreator.cs
- DateTimeValueSerializerContext.cs
- ITreeGenerator.cs
- DataControlFieldHeaderCell.cs
- Tablet.cs
- CommandValueSerializer.cs
- ReferenceCountedObject.cs
- ModelEditingScope.cs
- GlyphTypeface.cs
- PropertyIDSet.cs
- AttributeTable.cs
- AutoCompleteStringCollection.cs
- XPathNodeIterator.cs
- XsdValidatingReader.cs
- TemplateColumn.cs
- EventSinkHelperWriter.cs
- SessionStateSection.cs
- DataBindingCollectionEditor.cs
- AdornerLayer.cs
- LinqDataSourceInsertEventArgs.cs
- EmptyEnumerable.cs
- MonthCalendarDesigner.cs
- InsufficientMemoryException.cs
- MobileControlsSection.cs
- InputReferenceExpression.cs
- RoutedEventArgs.cs
- COM2TypeInfoProcessor.cs
- URLAttribute.cs
- XhtmlMobileTextWriter.cs
- TaiwanLunisolarCalendar.cs
- JavaScriptString.cs