//------------------------------------------------------------------------------ // 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; public partial class NetNamedPipeBindingElement : StandardBindingElement { public NetNamedPipeBindingElement(string name) : base(name) { } public NetNamedPipeBindingElement() : this(null) { } protected override Type BindingElementType { get { return typeof(NetNamedPipeBinding); } } [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.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.ReaderQuotas)] public XmlDictionaryReaderQuotasElement ReaderQuotas { get { return (XmlDictionaryReaderQuotasElement)base[ConfigurationStrings.ReaderQuotas]; } } [ConfigurationProperty(ConfigurationStrings.Security)] public NetNamedPipeSecurityElement Security { get { return (NetNamedPipeSecurityElement)base[ConfigurationStrings.Security]; } } protected internal override void InitializeFrom(Binding binding) { base.InitializeFrom(binding); NetNamedPipeBinding npnpBinding = (NetNamedPipeBinding)binding; SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransactionFlow, npnpBinding.TransactionFlow); SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransferMode, npnpBinding.TransferMode); SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransactionProtocol, npnpBinding.TransactionProtocol); SetPropertyValueIfNotDefaultValue(ConfigurationStrings.HostNameComparisonMode, npnpBinding.HostNameComparisonMode); SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferPoolSize, npnpBinding.MaxBufferPoolSize); SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferSize, npnpBinding.MaxBufferSize); if (npnpBinding.IsMaxConnectionsSet) { ConfigurationProperty maxConnectionsProperty = this.Properties[ConfigurationStrings.MaxConnections]; SetPropertyValue(maxConnectionsProperty, npnpBinding.MaxConnections, false /*ignore locks*/); } SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxReceivedMessageSize, npnpBinding.MaxReceivedMessageSize); this.Security.InitializeFrom(npnpBinding.Security); this.ReaderQuotas.InitializeFrom(npnpBinding.ReaderQuotas); } protected override void OnApplyConfiguration(Binding binding) { NetNamedPipeBinding npnpBinding = (NetNamedPipeBinding)binding; npnpBinding.TransactionFlow = this.TransactionFlow; npnpBinding.TransferMode = this.TransferMode; npnpBinding.TransactionProtocol = this.TransactionProtocol; npnpBinding.HostNameComparisonMode = this.HostNameComparisonMode; npnpBinding.MaxBufferPoolSize = this.MaxBufferPoolSize; PropertyInformationCollection propertyInfo = this.ElementInformation.Properties; if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default) { npnpBinding.MaxBufferSize = this.MaxBufferSize; } if (this.MaxConnections != 0) { npnpBinding.MaxConnections = this.MaxConnections; } npnpBinding.MaxReceivedMessageSize = this.MaxReceivedMessageSize; this.Security.ApplyConfiguration(npnpBinding.Security); this.ReaderQuotas.ApplyConfiguration(npnpBinding.ReaderQuotas); } } }