File: System\ServiceModel\Discovery\UdpTransportSettings.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.Channels;
    using System.Diagnostics.CodeAnalysis;
 
    [Fx.Tag.XamlVisible(false)]
    public class UdpTransportSettings
    {
        int maxPendingMessageCount;
        
        internal UdpTransportSettings(UdpTransportBindingElement udpTransportBindingElement)
        {
            this.maxPendingMessageCount = UdpConstants.Defaults.MaxPendingMessageCount;
            this.UdpTransportBindingElement = udpTransportBindingElement;
        }
 
        public int DuplicateMessageHistoryLength
        {
            get
            {
                return this.UdpTransportBindingElement.DuplicateMessageHistoryLength;
            }
            set
            {
                this.UdpTransportBindingElement.DuplicateMessageHistoryLength = value;
            }
        }
 
        public int MaxPendingMessageCount
        {
            get
            {
                return this.maxPendingMessageCount;
            }
            set
            {
                this.maxPendingMessageCount = value;
                this.UdpTransportBindingElement.MaxPendingMessagesTotalSize = this.MaxReceivedMessageSize * this.MaxPendingMessageCount;
            }
        }
 
        public int MaxMulticastRetransmitCount 
        {
            get
            {
                return this.UdpTransportBindingElement.RetransmissionSettings.MaxMulticastRetransmitCount;
            }
            set
            {
                this.UdpTransportBindingElement.RetransmissionSettings.MaxMulticastRetransmitCount = value;
            }
        }
 
        [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Unicast is a valid name.")]
        public int MaxUnicastRetransmitCount
        {
            get
            {
                return this.UdpTransportBindingElement.RetransmissionSettings.MaxUnicastRetransmitCount;
            }
            set
            {
                this.UdpTransportBindingElement.RetransmissionSettings.MaxUnicastRetransmitCount = value;
            }
        }
 
        public string MulticastInterfaceId
        {
            get
            {
                return this.UdpTransportBindingElement.MulticastInterfaceId;
            }
            set
            {
                this.UdpTransportBindingElement.MulticastInterfaceId = value;
            }
        }
 
        public int SocketReceiveBufferSize
        {
            get
            {
                return this.UdpTransportBindingElement.SocketReceiveBufferSize;
            }
            set
            {
                this.UdpTransportBindingElement.SocketReceiveBufferSize = value;
            }
        }
 
        public long MaxReceivedMessageSize
        {
            get
            {
                return this.UdpTransportBindingElement.MaxReceivedMessageSize;
            }
            set
            {
                this.UdpTransportBindingElement.MaxReceivedMessageSize = value;
            }
        }
 
        public long MaxBufferPoolSize
        {
            get
            {
                return this.UdpTransportBindingElement.MaxBufferPoolSize;
            }
            set
            {
                this.UdpTransportBindingElement.MaxBufferPoolSize = value;
            }
        }
 
        public int TimeToLive 
        {
            get
            {
                return this.UdpTransportBindingElement.TimeToLive;
            }
            set
            {
                this.UdpTransportBindingElement.TimeToLive = value;
            }
        }
 
        internal UdpTransportBindingElement UdpTransportBindingElement
        {
            get;
            private set;
        }
    }
}