TcpConnectionPoolSettingsElement.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. //------------------------------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------------------------
  4. namespace System.ServiceModel.Configuration
  5. {
  6. using System;
  7. using System.ComponentModel;
  8. using System.Configuration;
  9. using System.Runtime;
  10. using System.ServiceModel;
  11. using System.ServiceModel.Channels;
  12. public sealed partial class TcpConnectionPoolSettingsElement : ServiceModelConfigurationElement
  13. {
  14. public TcpConnectionPoolSettingsElement()
  15. {
  16. }
  17. [ConfigurationProperty(ConfigurationStrings.GroupName, DefaultValue = ConnectionOrientedTransportDefaults.ConnectionPoolGroupName)]
  18. [StringValidator(MinLength = 0)]
  19. public string GroupName
  20. {
  21. get { return (string)base[ConfigurationStrings.GroupName]; }
  22. set
  23. {
  24. if (String.IsNullOrEmpty(value))
  25. {
  26. value = String.Empty;
  27. }
  28. base[ConfigurationStrings.GroupName] = value;
  29. }
  30. }
  31. [ConfigurationProperty(ConfigurationStrings.LeaseTimeout, DefaultValue = TcpTransportDefaults.ConnectionLeaseTimeoutString)]
  32. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  33. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  34. public TimeSpan LeaseTimeout
  35. {
  36. get { return (TimeSpan)base[ConfigurationStrings.LeaseTimeout]; }
  37. set { base[ConfigurationStrings.LeaseTimeout] = value; }
  38. }
  39. [ConfigurationProperty(ConfigurationStrings.IdleTimeout, DefaultValue = ConnectionOrientedTransportDefaults.IdleTimeoutString)]
  40. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  41. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  42. public TimeSpan IdleTimeout
  43. {
  44. get { return (TimeSpan)base[ConfigurationStrings.IdleTimeout]; }
  45. set { base[ConfigurationStrings.IdleTimeout] = value; }
  46. }
  47. [ConfigurationProperty(ConfigurationStrings.MaxOutboundConnectionsPerEndpoint, DefaultValue = ConnectionOrientedTransportDefaults.MaxOutboundConnectionsPerEndpoint)]
  48. [IntegerValidator(MinValue = 0)]
  49. public int MaxOutboundConnectionsPerEndpoint
  50. {
  51. get { return (int)base[ConfigurationStrings.MaxOutboundConnectionsPerEndpoint]; }
  52. set { base[ConfigurationStrings.MaxOutboundConnectionsPerEndpoint] = value; }
  53. }
  54. internal void ApplyConfiguration(TcpConnectionPoolSettings settings)
  55. {
  56. if (null == settings)
  57. {
  58. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("settings");
  59. }
  60. settings.GroupName = this.GroupName;
  61. settings.IdleTimeout = this.IdleTimeout;
  62. settings.LeaseTimeout = this.LeaseTimeout;
  63. settings.MaxOutboundConnectionsPerEndpoint = this.MaxOutboundConnectionsPerEndpoint;
  64. }
  65. internal void InitializeFrom(TcpConnectionPoolSettings settings)
  66. {
  67. if (null == settings)
  68. {
  69. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("settings");
  70. }
  71. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.GroupName, settings.GroupName);
  72. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.IdleTimeout, settings.IdleTimeout);
  73. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.LeaseTimeout, settings.LeaseTimeout);
  74. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxOutboundConnectionsPerEndpoint, settings.MaxOutboundConnectionsPerEndpoint);
  75. }
  76. internal void CopyFrom(TcpConnectionPoolSettingsElement source)
  77. {
  78. if (source == null)
  79. {
  80. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
  81. }
  82. this.GroupName = source.GroupName;
  83. this.IdleTimeout = source.IdleTimeout;
  84. this.LeaseTimeout = source.LeaseTimeout;
  85. this.MaxOutboundConnectionsPerEndpoint = source.MaxOutboundConnectionsPerEndpoint;
  86. }
  87. }
  88. }