NetNamedPipeBindingElement.cs 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. //------------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------------------------
  4. namespace System.ServiceModel.Configuration
  5. {
  6. using System.ComponentModel;
  7. using System.Configuration;
  8. using System.ServiceModel;
  9. using System.Globalization;
  10. using System.ServiceModel.Security;
  11. using System.ServiceModel.Channels;
  12. using System.Net.Security;
  13. public partial class NetNamedPipeBindingElement : StandardBindingElement
  14. {
  15. public NetNamedPipeBindingElement(string name)
  16. : base(name)
  17. {
  18. }
  19. public NetNamedPipeBindingElement()
  20. : this(null)
  21. {
  22. }
  23. protected override Type BindingElementType
  24. {
  25. get { return typeof(NetNamedPipeBinding); }
  26. }
  27. [ConfigurationProperty(ConfigurationStrings.TransactionFlow, DefaultValue = TransactionFlowDefaults.Transactions)]
  28. public bool TransactionFlow
  29. {
  30. get { return (bool)base[ConfigurationStrings.TransactionFlow]; }
  31. set { base[ConfigurationStrings.TransactionFlow] = value; }
  32. }
  33. [ConfigurationProperty(ConfigurationStrings.TransferMode, DefaultValue = ConnectionOrientedTransportDefaults.TransferMode)]
  34. [ServiceModelEnumValidator(typeof(TransferModeHelper))]
  35. public TransferMode TransferMode
  36. {
  37. get { return (TransferMode)base[ConfigurationStrings.TransferMode]; }
  38. set { base[ConfigurationStrings.TransferMode] = value; }
  39. }
  40. [ConfigurationProperty(ConfigurationStrings.TransactionProtocol, DefaultValue = TransactionFlowDefaults.TransactionProtocolString)]
  41. [TypeConverter(typeof(TransactionProtocolConverter))]
  42. public TransactionProtocol TransactionProtocol
  43. {
  44. get { return (TransactionProtocol)base[ConfigurationStrings.TransactionProtocol]; }
  45. set { base[ConfigurationStrings.TransactionProtocol] = value; }
  46. }
  47. [ConfigurationProperty(ConfigurationStrings.HostNameComparisonMode, DefaultValue = ConnectionOrientedTransportDefaults.HostNameComparisonMode)]
  48. [ServiceModelEnumValidator(typeof(HostNameComparisonModeHelper))]
  49. public HostNameComparisonMode HostNameComparisonMode
  50. {
  51. get { return (HostNameComparisonMode)base[ConfigurationStrings.HostNameComparisonMode]; }
  52. set { base[ConfigurationStrings.HostNameComparisonMode] = value; }
  53. }
  54. [ConfigurationProperty(ConfigurationStrings.MaxBufferPoolSize, DefaultValue = TransportDefaults.MaxBufferPoolSize)]
  55. [LongValidator(MinValue = 0)]
  56. public long MaxBufferPoolSize
  57. {
  58. get { return (long)base[ConfigurationStrings.MaxBufferPoolSize]; }
  59. set { base[ConfigurationStrings.MaxBufferPoolSize] = value; }
  60. }
  61. [ConfigurationProperty(ConfigurationStrings.MaxBufferSize, DefaultValue = TransportDefaults.MaxBufferSize)]
  62. [IntegerValidator(MinValue = 1)]
  63. public int MaxBufferSize
  64. {
  65. get { return (int)base[ConfigurationStrings.MaxBufferSize]; }
  66. set { base[ConfigurationStrings.MaxBufferSize] = value; }
  67. }
  68. [ConfigurationProperty(ConfigurationStrings.MaxConnections, DefaultValue = ConnectionOrientedTransportDefaults.MaxPendingConnectionsConst)]
  69. [IntegerValidator(MinValue = 0)]
  70. public int MaxConnections
  71. {
  72. get { return (int)base[ConfigurationStrings.MaxConnections]; }
  73. set { base[ConfigurationStrings.MaxConnections] = value; }
  74. }
  75. [ConfigurationProperty(ConfigurationStrings.MaxReceivedMessageSize, DefaultValue = TransportDefaults.MaxReceivedMessageSize)]
  76. [LongValidator(MinValue = 1)]
  77. public long MaxReceivedMessageSize
  78. {
  79. get { return (long)base[ConfigurationStrings.MaxReceivedMessageSize]; }
  80. set { base[ConfigurationStrings.MaxReceivedMessageSize] = value; }
  81. }
  82. [ConfigurationProperty(ConfigurationStrings.ReaderQuotas)]
  83. public XmlDictionaryReaderQuotasElement ReaderQuotas
  84. {
  85. get { return (XmlDictionaryReaderQuotasElement)base[ConfigurationStrings.ReaderQuotas]; }
  86. }
  87. [ConfigurationProperty(ConfigurationStrings.Security)]
  88. public NetNamedPipeSecurityElement Security
  89. {
  90. get { return (NetNamedPipeSecurityElement)base[ConfigurationStrings.Security]; }
  91. }
  92. protected internal override void InitializeFrom(Binding binding)
  93. {
  94. base.InitializeFrom(binding);
  95. NetNamedPipeBinding npnpBinding = (NetNamedPipeBinding)binding;
  96. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransactionFlow, npnpBinding.TransactionFlow);
  97. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransferMode, npnpBinding.TransferMode);
  98. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TransactionProtocol, npnpBinding.TransactionProtocol);
  99. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.HostNameComparisonMode, npnpBinding.HostNameComparisonMode);
  100. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferPoolSize, npnpBinding.MaxBufferPoolSize);
  101. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferSize, npnpBinding.MaxBufferSize);
  102. if (npnpBinding.IsMaxConnectionsSet)
  103. {
  104. ConfigurationProperty maxConnectionsProperty = this.Properties[ConfigurationStrings.MaxConnections];
  105. SetPropertyValue(maxConnectionsProperty, npnpBinding.MaxConnections, false /*ignore locks*/);
  106. }
  107. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxReceivedMessageSize, npnpBinding.MaxReceivedMessageSize);
  108. this.Security.InitializeFrom(npnpBinding.Security);
  109. this.ReaderQuotas.InitializeFrom(npnpBinding.ReaderQuotas);
  110. }
  111. protected override void OnApplyConfiguration(Binding binding)
  112. {
  113. NetNamedPipeBinding npnpBinding = (NetNamedPipeBinding)binding;
  114. npnpBinding.TransactionFlow = this.TransactionFlow;
  115. npnpBinding.TransferMode = this.TransferMode;
  116. npnpBinding.TransactionProtocol = this.TransactionProtocol;
  117. npnpBinding.HostNameComparisonMode = this.HostNameComparisonMode;
  118. npnpBinding.MaxBufferPoolSize = this.MaxBufferPoolSize;
  119. PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
  120. if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
  121. {
  122. npnpBinding.MaxBufferSize = this.MaxBufferSize;
  123. }
  124. if (this.MaxConnections != 0)
  125. {
  126. npnpBinding.MaxConnections = this.MaxConnections;
  127. }
  128. npnpBinding.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
  129. this.Security.ApplyConfiguration(npnpBinding.Security);
  130. this.ReaderQuotas.ApplyConfiguration(npnpBinding.ReaderQuotas);
  131. }
  132. }
  133. }