|
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------
namespace System.ServiceModel.Discovery
{
using System.Runtime;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
[Fx.Tag.XamlVisible(false)]
public class DiscoveryEndpoint : ServiceEndpoint
{
readonly DiscoveryOperationContextExtension discoveryOperationContextExtension;
public DiscoveryEndpoint()
: this(DiscoveryVersion.DefaultDiscoveryVersion, ServiceDiscoveryMode.Managed)
{
}
public DiscoveryEndpoint(Binding binding, EndpointAddress endpointAddress)
: this(DiscoveryVersion.DefaultDiscoveryVersion, ServiceDiscoveryMode.Managed, binding, endpointAddress)
{
}
public DiscoveryEndpoint(DiscoveryVersion discoveryVersion, ServiceDiscoveryMode discoveryMode)
: this(discoveryVersion, discoveryMode, null, null)
{
}
public DiscoveryEndpoint(DiscoveryVersion discoveryVersion, ServiceDiscoveryMode discoveryMode, Binding binding, EndpointAddress endpointAddress)
: base(GetDiscoveryContract(discoveryVersion, discoveryMode))
{
base.IsSystemEndpoint = true;
this.discoveryOperationContextExtension = new DiscoveryOperationContextExtension(TimeSpan.Zero, discoveryMode, discoveryVersion);
base.Behaviors.Add(new DiscoveryOperationContextExtensionInitializer(this.discoveryOperationContextExtension));
base.Behaviors.Add(new DiscoveryEndpointValidator());
base.Address = endpointAddress;
base.Binding = binding;
}
public TimeSpan MaxResponseDelay
{
get
{
return this.discoveryOperationContextExtension.MaxResponseDelay;
}
set
{
TimeoutHelper.ThrowIfNegativeArgument(value, "value");
this.discoveryOperationContextExtension.MaxResponseDelay = value;
}
}
public DiscoveryVersion DiscoveryVersion
{
get
{
return this.discoveryOperationContextExtension.DiscoveryVersion;
}
}
public ServiceDiscoveryMode DiscoveryMode
{
get
{
return this.discoveryOperationContextExtension.DiscoveryMode;
}
}
static ContractDescription GetDiscoveryContract(DiscoveryVersion discoveryVersion, ServiceDiscoveryMode discoveryMode)
{
if (discoveryVersion == null)
{
throw FxTrace.Exception.ArgumentNull("discoveryVersion");
}
return discoveryVersion.Implementation.GetDiscoveryContract(discoveryMode);
}
}
}
|