NamedPipeConnectionPoolSettingsElement.cs 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 NamedPipeConnectionPoolSettingsElement : ServiceModelConfigurationElement
  13. {
  14. public NamedPipeConnectionPoolSettingsElement()
  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.IdleTimeout, DefaultValue = ConnectionOrientedTransportDefaults.IdleTimeoutString)]
  32. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  33. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  34. public TimeSpan IdleTimeout
  35. {
  36. get { return (TimeSpan)base[ConfigurationStrings.IdleTimeout]; }
  37. set { base[ConfigurationStrings.IdleTimeout] = value; }
  38. }
  39. [ConfigurationProperty(ConfigurationStrings.MaxOutboundConnectionsPerEndpoint, DefaultValue = ConnectionOrientedTransportDefaults.MaxOutboundConnectionsPerEndpoint)]
  40. [IntegerValidator(MinValue = 0)]
  41. public int MaxOutboundConnectionsPerEndpoint
  42. {
  43. get { return (int)base[ConfigurationStrings.MaxOutboundConnectionsPerEndpoint]; }
  44. set { base[ConfigurationStrings.MaxOutboundConnectionsPerEndpoint] = value; }
  45. }
  46. internal void ApplyConfiguration(NamedPipeConnectionPoolSettings settings)
  47. {
  48. if (null == settings)
  49. {
  50. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("settings");
  51. }
  52. settings.GroupName = this.GroupName;
  53. settings.IdleTimeout = this.IdleTimeout;
  54. settings.MaxOutboundConnectionsPerEndpoint = this.MaxOutboundConnectionsPerEndpoint;
  55. }
  56. internal void InitializeFrom(NamedPipeConnectionPoolSettings settings)
  57. {
  58. if (null == settings)
  59. {
  60. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("settings");
  61. }
  62. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.GroupName, settings.GroupName);
  63. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.IdleTimeout, settings.IdleTimeout);
  64. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxOutboundConnectionsPerEndpoint, settings.MaxOutboundConnectionsPerEndpoint);
  65. }
  66. internal void CopyFrom(NamedPipeConnectionPoolSettingsElement source)
  67. {
  68. if (source == null)
  69. {
  70. throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
  71. }
  72. this.GroupName = source.GroupName;
  73. this.IdleTimeout = source.IdleTimeout;
  74. this.MaxOutboundConnectionsPerEndpoint = source.MaxOutboundConnectionsPerEndpoint;
  75. }
  76. }
  77. }