| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- //------------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------
- namespace System.ServiceModel
- {
- using System.Collections.Generic;
- using System.Globalization;
- using System.Collections.ObjectModel;
- using System.Net;
- using System.Runtime.Serialization;
- using System.ServiceModel.Channels;
- [DataContract(Name = "PeerNodeAddress", Namespace = PeerStrings.Namespace)]
- [KnownType(typeof(IPAddress[]))]
- public sealed class PeerNodeAddress
- {
- [DataMember(Name = "EndpointAddress")]
- internal EndpointAddress10 InnerEPR
- {
- get { return this.endpointAddress == null ? null : EndpointAddress10.FromEndpointAddress(this.endpointAddress); }
- set { this.endpointAddress = (value == null ? null : value.ToEndpointAddress()); }
- }
- EndpointAddress endpointAddress;
- string servicePath;
- ReadOnlyCollection<IPAddress> ipAddresses;
- [DataMember(Name = "IPAddresses")]
- internal IList<IPAddress> ipAddressesDataMember
- {
- get { return ipAddresses; }
- set { ipAddresses = new ReadOnlyCollection<IPAddress>((value == null) ? new IPAddress[0] : value); }
- }
- //NOTE: if a default constructor is provided, make sure to review ServicePath property getter.
- public PeerNodeAddress(EndpointAddress endpointAddress, ReadOnlyCollection<IPAddress> ipAddresses)
- {
- if (endpointAddress == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("endpointAddress"));
- if (ipAddresses == null)
- throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("ipAddresses"));
- Initialize(endpointAddress, ipAddresses);
- }
- void Initialize(EndpointAddress endpointAddress, ReadOnlyCollection<IPAddress> ipAddresses)
- {
- this.endpointAddress = endpointAddress;
- servicePath = this.endpointAddress.Uri.PathAndQuery.ToUpperInvariant();
- this.ipAddresses = ipAddresses;
- }
- public EndpointAddress EndpointAddress
- {
- get { return this.endpointAddress; }
- }
- internal string ServicePath
- {
- get
- {
- if (this.servicePath == null)
- {
- this.servicePath = this.endpointAddress.Uri.PathAndQuery.ToUpperInvariant();
- }
- return this.servicePath;
- }
- }
- public ReadOnlyCollection<IPAddress> IPAddresses
- {
- get
- {
- if (this.ipAddresses == null)
- {
- this.ipAddresses = new ReadOnlyCollection<IPAddress>(new IPAddress[0]);
- }
- return this.ipAddresses;
- }
- }
- }
- }
|