267 lines
11 KiB
C#
267 lines
11 KiB
C#
//----------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//----------------------------------------------------------------
|
|
|
|
namespace System.ServiceModel.Discovery.Configuration
|
|
{
|
|
using System.Configuration;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using System.Runtime;
|
|
using System.ServiceModel.Channels;
|
|
|
|
[Fx.Tag.XamlVisible(false)]
|
|
public sealed class UdpTransportSettingsElement : ConfigurationElement
|
|
{
|
|
ConfigurationPropertyCollection properties;
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.DuplicateMessageHistoryLength, DefaultValue = DiscoveryDefaults.Udp.DuplicateMessageHistoryLength)]
|
|
[IntegerValidator(MinValue = 0, MaxValue = int.MaxValue)]
|
|
public int DuplicateMessageHistoryLength
|
|
{
|
|
get
|
|
{
|
|
return (int)base[ConfigurationStrings.DuplicateMessageHistoryLength];
|
|
}
|
|
set
|
|
{
|
|
base[ConfigurationStrings.DuplicateMessageHistoryLength] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.MaxPendingMessageCount, DefaultValue = UdpConstants.Defaults.MaxPendingMessageCount)]
|
|
[IntegerValidator(MinValue = 1, MaxValue = int.MaxValue)]
|
|
public int MaxPendingMessageCount
|
|
{
|
|
get
|
|
{
|
|
return (int)base[ConfigurationStrings.MaxPendingMessageCount];
|
|
}
|
|
set
|
|
{
|
|
base[ConfigurationStrings.MaxPendingMessageCount] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.MaxMulticastRetransmitCount, DefaultValue = DiscoveryDefaults.Udp.MaxMulticastRetransmitCount)]
|
|
[IntegerValidator(MinValue = 0, MaxValue = int.MaxValue)]
|
|
public int MaxMulticastRetransmitCount
|
|
{
|
|
get
|
|
{
|
|
return (int)base[ConfigurationStrings.MaxMulticastRetransmitCount];
|
|
}
|
|
set
|
|
{
|
|
base[ConfigurationStrings.MaxMulticastRetransmitCount] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.MaxUnicastRetransmitCount, DefaultValue = DiscoveryDefaults.Udp.MaxUnicastRetransmitCount)]
|
|
[SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Unicast is a valid name.")]
|
|
[IntegerValidator(MinValue = 0, MaxValue = int.MaxValue)]
|
|
public int MaxUnicastRetransmitCount
|
|
{
|
|
get
|
|
{
|
|
return (int)base[ConfigurationStrings.MaxUnicastRetransmitCount];
|
|
}
|
|
set
|
|
{
|
|
base[ConfigurationStrings.MaxUnicastRetransmitCount] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.MulticastInterfaceId)]
|
|
[SuppressMessage(FxCop.Category.Configuration, FxCop.Rule.ConfigurationValidatorAttributeRule)]
|
|
public string MulticastInterfaceId
|
|
{
|
|
get
|
|
{
|
|
return (string)base[ConfigurationStrings.MulticastInterfaceId];
|
|
}
|
|
set
|
|
{
|
|
base[ConfigurationStrings.MulticastInterfaceId] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.SocketReceiveBufferSize, DefaultValue = UdpConstants.Defaults.SocketReceiveBufferSize)]
|
|
[IntegerValidator(MinValue = UdpConstants.MinReceiveBufferSize, MaxValue = int.MaxValue)]
|
|
public int SocketReceiveBufferSize
|
|
{
|
|
get
|
|
{
|
|
return (int)base[ConfigurationStrings.SocketReceiveBufferSize];
|
|
}
|
|
set
|
|
{
|
|
base[ConfigurationStrings.SocketReceiveBufferSize] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.TimeToLive, DefaultValue = UdpConstants.Defaults.TimeToLive)]
|
|
[IntegerValidator(MinValue = UdpConstants.MinTimeToLive, MaxValue = UdpConstants.MaxTimeToLive)]
|
|
public int TimeToLive
|
|
{
|
|
get
|
|
{
|
|
return (int)base[ConfigurationStrings.TimeToLive];
|
|
}
|
|
|
|
set
|
|
{
|
|
base[ConfigurationStrings.TimeToLive] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.MaxReceivedMessageSize, DefaultValue = UdpConstants.Defaults.MaxReceivedMessageSize)]
|
|
[LongValidator(MinValue = 1L, MaxValue = UdpConstants.Defaults.MaxReceivedMessageSize)]
|
|
public long MaxReceivedMessageSize
|
|
{
|
|
get
|
|
{
|
|
return (long)base[ConfigurationStrings.MaxReceivedMessageSize];
|
|
}
|
|
set
|
|
{
|
|
base[ConfigurationStrings.MaxReceivedMessageSize] = value;
|
|
}
|
|
}
|
|
|
|
[ConfigurationProperty(ConfigurationStrings.MaxBufferPoolSize, DefaultValue = TransportDefaults.MaxBufferPoolSize)]
|
|
[LongValidator(MinValue = 1L, MaxValue = long.MaxValue)]
|
|
public long MaxBufferPoolSize
|
|
{
|
|
get
|
|
{
|
|
return (long)base[ConfigurationStrings.MaxBufferPoolSize];
|
|
}
|
|
set
|
|
{
|
|
base[ConfigurationStrings.MaxBufferPoolSize] = value;
|
|
}
|
|
}
|
|
|
|
protected override ConfigurationPropertyCollection Properties
|
|
{
|
|
get
|
|
{
|
|
if (this.properties == null)
|
|
{
|
|
ConfigurationPropertyCollection properties = new ConfigurationPropertyCollection();
|
|
|
|
properties.Add(
|
|
new ConfigurationProperty(
|
|
ConfigurationStrings.DuplicateMessageHistoryLength,
|
|
typeof(int),
|
|
DiscoveryDefaults.Udp.DuplicateMessageHistoryLength,
|
|
null,
|
|
new IntegerValidator(0, int.MaxValue),
|
|
System.Configuration.ConfigurationPropertyOptions.None));
|
|
|
|
properties.Add(
|
|
new ConfigurationProperty(
|
|
ConfigurationStrings.MaxPendingMessageCount,
|
|
typeof(int),
|
|
UdpConstants.Defaults.MaxPendingMessageCount,
|
|
null,
|
|
new IntegerValidator(1, int.MaxValue),
|
|
System.Configuration.ConfigurationPropertyOptions.None));
|
|
|
|
properties.Add(
|
|
new ConfigurationProperty(
|
|
ConfigurationStrings.MaxMulticastRetransmitCount,
|
|
typeof(int),
|
|
DiscoveryDefaults.Udp.MaxMulticastRetransmitCount,
|
|
null,
|
|
new IntegerValidator(0, int.MaxValue),
|
|
System.Configuration.ConfigurationPropertyOptions.None));
|
|
|
|
properties.Add(
|
|
new ConfigurationProperty(
|
|
ConfigurationStrings.MaxUnicastRetransmitCount,
|
|
typeof(int),
|
|
DiscoveryDefaults.Udp.MaxUnicastRetransmitCount,
|
|
null,
|
|
new IntegerValidator(0, int.MaxValue),
|
|
System.Configuration.ConfigurationPropertyOptions.None));
|
|
|
|
properties.Add(
|
|
new ConfigurationProperty(
|
|
ConfigurationStrings.MulticastInterfaceId,
|
|
typeof(string),
|
|
null,
|
|
null,
|
|
null,
|
|
System.Configuration.ConfigurationPropertyOptions.None));
|
|
|
|
properties.Add(
|
|
new ConfigurationProperty(
|
|
ConfigurationStrings.SocketReceiveBufferSize,
|
|
typeof(int),
|
|
UdpConstants.Defaults.SocketReceiveBufferSize,
|
|
null,
|
|
new IntegerValidator(UdpConstants.MinReceiveBufferSize, int.MaxValue),
|
|
System.Configuration.ConfigurationPropertyOptions.None));
|
|
|
|
properties.Add(
|
|
new ConfigurationProperty(
|
|
ConfigurationStrings.TimeToLive,
|
|
typeof(int),
|
|
UdpConstants.Defaults.TimeToLive,
|
|
null,
|
|
new IntegerValidator(UdpConstants.MinTimeToLive, UdpConstants.MaxTimeToLive),
|
|
System.Configuration.ConfigurationPropertyOptions.None));
|
|
|
|
properties.Add(
|
|
new ConfigurationProperty(
|
|
ConfigurationStrings.MaxReceivedMessageSize,
|
|
typeof(long),
|
|
UdpConstants.Defaults.MaxReceivedMessageSize,
|
|
null,
|
|
new LongValidator(1L, UdpConstants.Defaults.MaxReceivedMessageSize),
|
|
System.Configuration.ConfigurationPropertyOptions.None));
|
|
|
|
properties.Add(
|
|
new ConfigurationProperty(
|
|
ConfigurationStrings.MaxBufferPoolSize,
|
|
typeof(long),
|
|
TransportDefaults.MaxBufferPoolSize,
|
|
null,
|
|
new LongValidator(1L, long.MaxValue),
|
|
System.Configuration.ConfigurationPropertyOptions.None));
|
|
|
|
this.properties = properties;
|
|
}
|
|
return this.properties;
|
|
}
|
|
}
|
|
|
|
internal void ApplyConfiguration(UdpTransportSettings target)
|
|
{
|
|
target.DuplicateMessageHistoryLength = this.DuplicateMessageHistoryLength;
|
|
target.MaxPendingMessageCount = this.MaxPendingMessageCount;
|
|
target.MaxMulticastRetransmitCount = this.MaxMulticastRetransmitCount;
|
|
target.MaxUnicastRetransmitCount = this.MaxUnicastRetransmitCount;
|
|
target.MulticastInterfaceId = this.MulticastInterfaceId;
|
|
target.SocketReceiveBufferSize = this.SocketReceiveBufferSize;
|
|
target.TimeToLive = this.TimeToLive;
|
|
target.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
|
|
target.MaxBufferPoolSize = this.MaxBufferPoolSize;
|
|
}
|
|
|
|
internal void InitializeFrom(UdpTransportSettings source)
|
|
{
|
|
this.DuplicateMessageHistoryLength = source.DuplicateMessageHistoryLength;
|
|
this.MaxPendingMessageCount = source.MaxPendingMessageCount;
|
|
this.MaxMulticastRetransmitCount = source.MaxMulticastRetransmitCount;
|
|
this.MaxUnicastRetransmitCount = source.MaxUnicastRetransmitCount;
|
|
this.MulticastInterfaceId = source.MulticastInterfaceId;
|
|
this.SocketReceiveBufferSize = source.SocketReceiveBufferSize;
|
|
this.TimeToLive = source.TimeToLive;
|
|
this.MaxReceivedMessageSize = source.MaxReceivedMessageSize;
|
|
this.MaxBufferPoolSize = source.MaxBufferPoolSize;
|
|
}
|
|
}
|
|
}
|