File: System\ServiceModel\Discovery\DiscoveryOperationContextExtension.cs
Project: ndp\cdf\src\NetFx40\System.ServiceModel.Discovery\System.ServiceModel.Discovery.csproj (System.ServiceModel.Discovery)
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//----------------------------------------------------------------
namespace System.ServiceModel.Discovery
{
    using System.Runtime;
    using System.ServiceModel.Description;
    using System.ServiceModel.Dispatcher;
 
    [Fx.Tag.XamlVisible(false)] 
    public class DiscoveryOperationContextExtension : IExtension<OperationContext>
    {
        TimeSpan maxResponseDelay;
        ServiceDiscoveryMode discoveryMode;
        DiscoveryVersion discoveryVersion;
 
        internal DiscoveryOperationContextExtension()
            : this(TimeSpan.Zero, ServiceDiscoveryMode.Adhoc, DiscoveryVersion.DefaultDiscoveryVersion)
        {
        }
 
        internal DiscoveryOperationContextExtension(TimeSpan maxResponseDelay, ServiceDiscoveryMode discoveryMode, DiscoveryVersion discoveryVersion)
        {            
            TimeoutHelper.ThrowIfNegativeArgument(maxResponseDelay, "maxResponseDelay");
            Fx.Assert(discoveryVersion != null, "discoveryVersion can't be null");
 
            this.maxResponseDelay = maxResponseDelay;
            this.discoveryMode = discoveryMode;
            this.discoveryVersion = discoveryVersion;
        }
 
        public TimeSpan MaxResponseDelay
        {
            get
            {
                return this.maxResponseDelay;
            }
            internal set
            {
                TimeoutHelper.ThrowIfNegativeArgument(value, "values");
                this.maxResponseDelay = value;
            }
        }
 
        public ServiceDiscoveryMode DiscoveryMode
        {
            get
            {
                return this.discoveryMode;
            }
        }
 
        public DiscoveryVersion DiscoveryVersion
        {
            get
            {
                return this.discoveryVersion;
            }
        }
 
        void IExtension<OperationContext>.Attach(OperationContext owner)
        {
        }
 
        void IExtension<OperationContext>.Detach(OperationContext owner)
        {
        }
    }
}