186 lines
8.7 KiB
C#
186 lines
8.7 KiB
C#
|
//------------------------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
namespace System.ServiceModel.Configuration
|
||
|
{
|
||
|
using System.ComponentModel;
|
||
|
using System.Configuration;
|
||
|
using System.ServiceModel;
|
||
|
using System.Globalization;
|
||
|
using System.ServiceModel.Security;
|
||
|
using System.ServiceModel.Channels;
|
||
|
using System.Net.Security;
|
||
|
using System.Net.Sockets;
|
||
|
|
||
|
public partial class NetTcpBindingElement : StandardBindingElement
|
||
|
{
|
||
|
public NetTcpBindingElement(string name)
|
||
|
: base(name)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public NetTcpBindingElement()
|
||
|
: this(null)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
protected override Type BindingElementType
|
||
|
{
|
||
|
get { return typeof(NetTcpBinding); }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.TransactionFlow, DefaultValue = TransactionFlowDefaults.Transactions)]
|
||
|
public bool TransactionFlow
|
||
|
{
|
||
|
get { return (bool)base[ConfigurationStrings.TransactionFlow]; }
|
||
|
set { base[ConfigurationStrings.TransactionFlow] = value; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.TransferMode, DefaultValue = ConnectionOrientedTransportDefaults.TransferMode)]
|
||
|
[ServiceModelEnumValidator(typeof(TransferModeHelper))]
|
||
|
public TransferMode TransferMode
|
||
|
{
|
||
|
get { return (TransferMode)base[ConfigurationStrings.TransferMode]; }
|
||
|
set { base[ConfigurationStrings.TransferMode] = value; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.TransactionProtocol, DefaultValue = TransactionFlowDefaults.TransactionProtocolString)]
|
||
|
[TypeConverter(typeof(TransactionProtocolConverter))]
|
||
|
public TransactionProtocol TransactionProtocol
|
||
|
{
|
||
|
get { return (TransactionProtocol)base[ConfigurationStrings.TransactionProtocol]; }
|
||
|
set { base[ConfigurationStrings.TransactionProtocol] = value; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.HostNameComparisonMode, DefaultValue = ConnectionOrientedTransportDefaults.HostNameComparisonMode)]
|
||
|
[ServiceModelEnumValidator(typeof(HostNameComparisonModeHelper))]
|
||
|
public HostNameComparisonMode HostNameComparisonMode
|
||
|
{
|
||
|
get { return (HostNameComparisonMode)base[ConfigurationStrings.HostNameComparisonMode]; }
|
||
|
set { base[ConfigurationStrings.HostNameComparisonMode] = value; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.ListenBacklog, DefaultValue = TcpTransportDefaults.ListenBacklogConst)]
|
||
|
[IntegerValidator(MinValue = 0)]
|
||
|
public int ListenBacklog
|
||
|
{
|
||
|
get { return (int)base[ConfigurationStrings.ListenBacklog]; }
|
||
|
set { base[ConfigurationStrings.ListenBacklog] = value; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.MaxBufferPoolSize, DefaultValue = TransportDefaults.MaxBufferPoolSize)]
|
||
|
[LongValidator(MinValue = 0)]
|
||
|
public long MaxBufferPoolSize
|
||
|
{
|
||
|
get { return (long)base[ConfigurationStrings.MaxBufferPoolSize]; }
|
||
|
set { base[ConfigurationStrings.MaxBufferPoolSize] = 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.MaxConnections, DefaultValue = ConnectionOrientedTransportDefaults.MaxPendingConnectionsConst)]
|
||
|
[IntegerValidator(MinValue = 0)]
|
||
|
public int MaxConnections
|
||
|
{
|
||
|
get { return (int)base[ConfigurationStrings.MaxConnections]; }
|
||
|
set { base[ConfigurationStrings.MaxConnections] = value; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.MaxReceivedMessageSize, DefaultValue = TransportDefaults.MaxReceivedMessageSize)]
|
||
|
[LongValidator(MinValue = 1)]
|
||
|
public long MaxReceivedMessageSize
|
||
|
{
|
||
|
get { return (long)base[ConfigurationStrings.MaxReceivedMessageSize]; }
|
||
|
set { base[ConfigurationStrings.MaxReceivedMessageSize] = value; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.PortSharingEnabled, DefaultValue = TcpTransportDefaults.PortSharingEnabled)]
|
||
|
public bool PortSharingEnabled
|
||
|
{
|
||
|
get { return (bool)base[ConfigurationStrings.PortSharingEnabled]; }
|
||
|
set { base[ConfigurationStrings.PortSharingEnabled] = value; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.ReaderQuotas)]
|
||
|
public XmlDictionaryReaderQuotasElement ReaderQuotas
|
||
|
{
|
||
|
get { return (XmlDictionaryReaderQuotasElement)base[ConfigurationStrings.ReaderQuotas]; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.ReliableSession)]
|
||
|
public StandardBindingOptionalReliableSessionElement ReliableSession
|
||
|
{
|
||
|
get { return (StandardBindingOptionalReliableSessionElement)base[ConfigurationStrings.ReliableSession]; }
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty(ConfigurationStrings.Security)]
|
||
|
public NetTcpSecurityElement Security
|
||
|
{
|
||
|
get { return (NetTcpSecurityElement)base[ConfigurationStrings.Security]; }
|
||
|
}
|
||
|
|
||
|
protected internal override void InitializeFrom(Binding binding)
|
||
|
{
|
||
|
base.InitializeFrom(binding);
|
||
|
NetTcpBinding nptBinding = (NetTcpBinding)binding;
|
||
|
|
||
|
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransactionFlow, nptBinding.TransactionFlow);
|
||
|
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransferMode, nptBinding.TransferMode);
|
||
|
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransactionProtocol, nptBinding.TransactionProtocol);
|
||
|
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.HostNameComparisonMode, nptBinding.HostNameComparisonMode);
|
||
|
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferPoolSize, nptBinding.MaxBufferPoolSize);
|
||
|
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferSize, nptBinding.MaxBufferSize);
|
||
|
if (nptBinding.IsMaxConnectionsSet)
|
||
|
{
|
||
|
ConfigurationProperty maxConnectionsProperty = this.Properties[ConfigurationStrings.MaxConnections];
|
||
|
SetPropertyValue(maxConnectionsProperty, nptBinding.MaxConnections, false /*ignore locks*/);
|
||
|
}
|
||
|
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxReceivedMessageSize, nptBinding.MaxReceivedMessageSize);
|
||
|
if (nptBinding.IsListenBacklogSet)
|
||
|
{
|
||
|
ConfigurationProperty listenBacklogProperty = this.Properties[ConfigurationStrings.ListenBacklog];
|
||
|
SetPropertyValue(listenBacklogProperty, nptBinding.ListenBacklog, false /*ignore locks*/);
|
||
|
}
|
||
|
this.ReliableSession.InitializeFrom(nptBinding.ReliableSession);
|
||
|
this.Security.InitializeFrom(nptBinding.Security);
|
||
|
this.ReaderQuotas.InitializeFrom(nptBinding.ReaderQuotas);
|
||
|
}
|
||
|
|
||
|
protected override void OnApplyConfiguration(Binding binding)
|
||
|
{
|
||
|
NetTcpBinding nptBinding = (NetTcpBinding)binding;
|
||
|
|
||
|
PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
|
||
|
nptBinding.TransactionFlow = this.TransactionFlow;
|
||
|
nptBinding.TransferMode = this.TransferMode;
|
||
|
nptBinding.TransactionProtocol = this.TransactionProtocol;
|
||
|
nptBinding.HostNameComparisonMode = this.HostNameComparisonMode;
|
||
|
if (this.ListenBacklog != TcpTransportDefaults.ListenBacklogConst)
|
||
|
{
|
||
|
nptBinding.ListenBacklog = this.ListenBacklog;
|
||
|
}
|
||
|
nptBinding.MaxBufferPoolSize = this.MaxBufferPoolSize;
|
||
|
if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
|
||
|
{
|
||
|
nptBinding.MaxBufferSize = this.MaxBufferSize;
|
||
|
}
|
||
|
if (this.MaxConnections != 0)
|
||
|
{
|
||
|
nptBinding.MaxConnections = this.MaxConnections;
|
||
|
}
|
||
|
nptBinding.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
|
||
|
nptBinding.PortSharingEnabled = this.PortSharingEnabled;
|
||
|
this.ReliableSession.ApplyConfiguration(nptBinding.ReliableSession);
|
||
|
this.Security.ApplyConfiguration(nptBinding.Security);
|
||
|
this.ReaderQuotas.ApplyConfiguration(nptBinding.ReaderQuotas);
|
||
|
}
|
||
|
}
|
||
|
}
|