e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
131 lines
6.6 KiB
C#
131 lines
6.6 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
namespace System.ServiceModel.Configuration
|
|
{
|
|
using System.ComponentModel;
|
|
using System.Configuration;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using System.Runtime;
|
|
using System.ServiceModel.Channels;
|
|
using System.Text;
|
|
|
|
public partial class UdpBindingElement : StandardBindingElement
|
|
{
|
|
public UdpBindingElement(string name)
|
|
: base(name)
|
|
{
|
|
}
|
|
|
|
public UdpBindingElement()
|
|
: this(null)
|
|
{
|
|
}
|
|
|
|
protected override Type BindingElementType
|
|
{
|
|
get { return typeof(UdpBinding); }
|
|
}
|
|
|
|
[ConfigurationProperty(UdpTransportConfigurationStrings.DuplicateMessageHistoryLength, DefaultValue = UdpConstants.Defaults.DuplicateMessageHistoryLength)]
|
|
[IntegerValidator(MinValue = 0)]
|
|
public int DuplicateMessageHistoryLength
|
|
{
|
|
get { return (int)base[UdpTransportConfigurationStrings.DuplicateMessageHistoryLength]; }
|
|
set { base[UdpTransportConfigurationStrings.DuplicateMessageHistoryLength] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(UdpTransportConfigurationStrings.MaxBufferPoolSize, DefaultValue = TransportDefaults.MaxBufferPoolSize)]
|
|
[LongValidator(MinValue = 0)]
|
|
public long MaxBufferPoolSize
|
|
{
|
|
get { return (long)base[UdpTransportConfigurationStrings.MaxBufferPoolSize]; }
|
|
set { base[UdpTransportConfigurationStrings.MaxBufferPoolSize] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(UdpTransportConfigurationStrings.MaxRetransmitCount, DefaultValue = UdpConstants.Defaults.MaxRetransmitCount)]
|
|
[IntegerValidator(MinValue = 0)]
|
|
public int MaxRetransmitCount
|
|
{
|
|
get { return (int)base[UdpTransportConfigurationStrings.MaxRetransmitCount]; }
|
|
set { base[UdpTransportConfigurationStrings.MaxRetransmitCount] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(UdpTransportConfigurationStrings.MaxPendingMessagesTotalSize, DefaultValue = UdpConstants.Defaults.DefaultMaxPendingMessagesTotalSize)]
|
|
[LongValidator(MinValue = UdpConstants.MinPendingMessagesTotalSize)]
|
|
public long MaxPendingMessagesTotalSize
|
|
{
|
|
get { return (long)base[UdpTransportConfigurationStrings.MaxPendingMessagesTotalSize]; }
|
|
set { base[UdpTransportConfigurationStrings.MaxPendingMessagesTotalSize] = value; }
|
|
}
|
|
|
|
// Min value has to be 1, because it's 1 in the TransportBindingElement
|
|
[ConfigurationProperty(UdpTransportConfigurationStrings.MaxReceivedMessageSize, DefaultValue = UdpConstants.Defaults.MaxReceivedMessageSize)]
|
|
[LongValidator(MinValue = 1)]
|
|
public long MaxReceivedMessageSize
|
|
{
|
|
get { return (long)this[UdpTransportConfigurationStrings.MaxReceivedMessageSize]; }
|
|
set { this[UdpTransportConfigurationStrings.MaxReceivedMessageSize] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(UdpTransportConfigurationStrings.MulticastInterfaceId, DefaultValue = UdpConstants.Defaults.MulticastInterfaceId)]
|
|
[StringValidator()]
|
|
public string MulticastInterfaceId
|
|
{
|
|
get { return (string)base[UdpTransportConfigurationStrings.MulticastInterfaceId]; }
|
|
set { base[UdpTransportConfigurationStrings.MulticastInterfaceId] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(UdpTransportConfigurationStrings.ReaderQuotas)]
|
|
public XmlDictionaryReaderQuotasElement ReaderQuotas
|
|
{
|
|
get { return (XmlDictionaryReaderQuotasElement)base[UdpTransportConfigurationStrings.ReaderQuotas]; }
|
|
}
|
|
|
|
[ConfigurationProperty(UdpTransportConfigurationStrings.TextEncoding, DefaultValue = UdpConstants.Defaults.EncodingString)]
|
|
[TypeConverter(typeof(EncodingConverter))]
|
|
[SuppressMessage(FxCop.Category.Configuration, FxCop.Rule.ConfigurationValidatorAttributeRule, Justification = "this property not a configuration property")]
|
|
public Encoding TextEncoding
|
|
{
|
|
get { return (Encoding)base[UdpTransportConfigurationStrings.TextEncoding]; }
|
|
set { base[UdpTransportConfigurationStrings.TextEncoding] = value; }
|
|
}
|
|
|
|
[ConfigurationProperty(UdpTransportConfigurationStrings.TimeToLive, DefaultValue = UdpConstants.Defaults.TimeToLive)]
|
|
[IntegerValidator(MinValue = UdpConstants.MinTimeToLive, MaxValue = UdpConstants.MaxTimeToLive)]
|
|
public int TimeToLive
|
|
{
|
|
get { return (int)base[UdpTransportConfigurationStrings.TimeToLive]; }
|
|
set { base[UdpTransportConfigurationStrings.TimeToLive] = value; }
|
|
}
|
|
|
|
protected internal override void InitializeFrom(Binding binding)
|
|
{
|
|
base.InitializeFrom(binding);
|
|
UdpBinding udpBinding = (UdpBinding)binding;
|
|
|
|
this.SetPropertyValueIfNotDefaultValue(UdpTransportConfigurationStrings.DuplicateMessageHistoryLength, udpBinding.DuplicateMessageHistoryLength);
|
|
this.SetPropertyValueIfNotDefaultValue(UdpTransportConfigurationStrings.MaxBufferPoolSize, udpBinding.MaxBufferPoolSize);
|
|
this.SetPropertyValueIfNotDefaultValue(UdpTransportConfigurationStrings.MaxRetransmitCount, udpBinding.MaxRetransmitCount);
|
|
this.SetPropertyValueIfNotDefaultValue(UdpTransportConfigurationStrings.MaxPendingMessagesTotalSize, udpBinding.MaxPendingMessagesTotalSize);
|
|
this.SetPropertyValueIfNotDefaultValue(UdpTransportConfigurationStrings.MaxReceivedMessageSize, udpBinding.MaxReceivedMessageSize);
|
|
this.SetPropertyValueIfNotDefaultValue(UdpTransportConfigurationStrings.MulticastInterfaceId, udpBinding.MulticastInterfaceId);
|
|
this.SetPropertyValueIfNotDefaultValue(UdpTransportConfigurationStrings.TimeToLive, udpBinding.TimeToLive);
|
|
}
|
|
|
|
protected override void OnApplyConfiguration(Binding binding)
|
|
{
|
|
UdpBinding udpBinding = (UdpBinding)binding;
|
|
|
|
udpBinding.DuplicateMessageHistoryLength = this.DuplicateMessageHistoryLength;
|
|
udpBinding.MaxBufferPoolSize = this.MaxBufferPoolSize;
|
|
udpBinding.MaxRetransmitCount = this.MaxRetransmitCount;
|
|
udpBinding.MaxPendingMessagesTotalSize = this.MaxPendingMessagesTotalSize;
|
|
udpBinding.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
|
|
udpBinding.MulticastInterfaceId = this.MulticastInterfaceId;
|
|
udpBinding.TimeToLive = this.TimeToLive;
|
|
}
|
|
}
|
|
}
|