e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
83 lines
2.9 KiB
C#
83 lines
2.9 KiB
C#
//------------------------------------------------------------
|
|
// 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;
|
|
}
|
|
}
|
|
}
|
|
}
|