|
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
namespace System.ServiceModel.Configuration
{
using System.ComponentModel;
using System.Configuration;
using System.Runtime;
using System.ServiceModel;
using System.ServiceModel.Channels;
public abstract partial class ConnectionOrientedTransportElement : TransportElement
{
internal ConnectionOrientedTransportElement()
{
}
[ConfigurationProperty(ConfigurationStrings.ConnectionBufferSize, DefaultValue = ConnectionOrientedTransportDefaults.ConnectionBufferSize)]
[IntegerValidator(MinValue = 1)]
public int ConnectionBufferSize
{
get { return (int)base[ConfigurationStrings.ConnectionBufferSize]; }
set { base[ConfigurationStrings.ConnectionBufferSize] = value; }
}
[ConfigurationProperty(ConfigurationStrings.HostNameComparisonMode, DefaultValue = ConnectionOrientedTransportDefaults.HostNameComparisonMode)]
[ServiceModelEnumValidatorAttribute(typeof(HostNameComparisonModeHelper))]
public HostNameComparisonMode HostNameComparisonMode
{
get { return (HostNameComparisonMode)base[ConfigurationStrings.HostNameComparisonMode]; }
set { base[ConfigurationStrings.HostNameComparisonMode] = value; }
}
[ConfigurationProperty(ConfigurationStrings.ChannelInitializationTimeout, DefaultValue = ConnectionOrientedTransportDefaults.ChannelInitializationTimeoutString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanOneTick)]
public TimeSpan ChannelInitializationTimeout
{
get { return (TimeSpan)base[ConfigurationStrings.ChannelInitializationTimeout]; }
set { base[ConfigurationStrings.ChannelInitializationTimeout] = value; }
}
[ConfigurationProperty(ConfigurationStrings.MaxBufferSize, DefaultValue = TransportDefaults.MaxBufferSize)]
[IntegerValidator(MinValue = 1)]
public int MaxBufferSize
{
get { return (int)base[ConfigurationStrings.MaxBufferSize]; }
set { base[ConfigurationStrings.MaxBufferSize] = value; }
}
[ConfigurationProperty(ConfigurationStrings.MaxPendingConnections, DefaultValue = ConnectionOrientedTransportDefaults.MaxPendingConnectionsConst)]
[IntegerValidator(MinValue = 0)]
public int MaxPendingConnections
{
get { return (int)base[ConfigurationStrings.MaxPendingConnections]; }
set { base[ConfigurationStrings.MaxPendingConnections] = value; }
}
[ConfigurationProperty(ConfigurationStrings.MaxOutputDelay, DefaultValue = ConnectionOrientedTransportDefaults.MaxOutputDelayString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan MaxOutputDelay
{
get { return (TimeSpan)base[ConfigurationStrings.MaxOutputDelay]; }
set { base[ConfigurationStrings.MaxOutputDelay] = value; }
}
[ConfigurationProperty(ConfigurationStrings.MaxPendingAccepts, DefaultValue = ConnectionOrientedTransportDefaults.MaxPendingAcceptsConst)]
[IntegerValidator(MinValue = 0)]
public int MaxPendingAccepts
{
get { return (int)base[ConfigurationStrings.MaxPendingAccepts]; }
set { base[ConfigurationStrings.MaxPendingAccepts] = value; }
}
[ConfigurationProperty(ConfigurationStrings.TransferMode, DefaultValue = ConnectionOrientedTransportDefaults.TransferMode)]
[ServiceModelEnumValidator(typeof(TransferModeHelper))]
public TransferMode TransferMode
{
get { return (TransferMode)base[ConfigurationStrings.TransferMode]; }
set { base[ConfigurationStrings.TransferMode] = value; }
}
public override void ApplyConfiguration(BindingElement bindingElement)
{
base.ApplyConfiguration(bindingElement);
ConnectionOrientedTransportBindingElement binding = (ConnectionOrientedTransportBindingElement)bindingElement;
binding.ConnectionBufferSize = this.ConnectionBufferSize;
binding.HostNameComparisonMode = this.HostNameComparisonMode;
binding.ChannelInitializationTimeout = this.ChannelInitializationTimeout;
PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
{
binding.MaxBufferSize = this.MaxBufferSize;
}
if (this.MaxPendingConnections != ConnectionOrientedTransportDefaults.MaxPendingConnectionsConst)
{
binding.MaxPendingConnections = this.MaxPendingConnections;
}
binding.MaxOutputDelay = this.MaxOutputDelay;
if (this.MaxPendingAccepts != ConnectionOrientedTransportDefaults.MaxPendingAcceptsConst)
{
binding.MaxPendingAccepts = this.MaxPendingAccepts;
}
binding.TransferMode = this.TransferMode;
}
public override void CopyFrom(ServiceModelExtensionElement from)
{
base.CopyFrom(from);
ConnectionOrientedTransportElement source = (ConnectionOrientedTransportElement)from;
#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
this.ConnectionBufferSize = source.ConnectionBufferSize;
this.HostNameComparisonMode = source.HostNameComparisonMode;
this.ChannelInitializationTimeout = source.ChannelInitializationTimeout;
this.MaxBufferSize = source.MaxBufferSize;
this.MaxPendingConnections = source.MaxPendingConnections;
this.MaxOutputDelay = source.MaxOutputDelay;
this.MaxPendingAccepts = source.MaxPendingAccepts;
this.TransferMode = source.TransferMode;
}
protected internal override void InitializeFrom(BindingElement bindingElement)
{
base.InitializeFrom(bindingElement);
ConnectionOrientedTransportBindingElement binding = (ConnectionOrientedTransportBindingElement)bindingElement;
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ConnectionBufferSize, binding.ConnectionBufferSize);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.HostNameComparisonMode, binding.HostNameComparisonMode);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ChannelInitializationTimeout, binding.ChannelInitializationTimeout);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferSize, binding.MaxBufferSize);
if (binding.IsMaxPendingConnectionsSet)
{
ConfigurationProperty maxPendingConnectionsProperty = this.Properties[ConfigurationStrings.MaxPendingConnections];
SetPropertyValue(maxPendingConnectionsProperty, binding.MaxPendingConnections, /*ignoreLocks = */ false);
}
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxOutputDelay, binding.MaxOutputDelay);
if (binding.IsMaxPendingAcceptsSet)
{
ConfigurationProperty maxPendingAcceptsProperty = this.Properties[ConfigurationStrings.MaxPendingAccepts];
SetPropertyValue(maxPendingAcceptsProperty, binding.MaxPendingAccepts, /*ignoreLocks = */ false);
}
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransferMode, binding.TransferMode);
}
}
}
|