ReliableSessionElement.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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.Runtime;
  9. using System.ServiceModel;
  10. using System.ServiceModel.Channels;
  11. public sealed partial class ReliableSessionElement : BindingElementExtensionElement
  12. {
  13. public ReliableSessionElement()
  14. {
  15. }
  16. [ConfigurationProperty(ConfigurationStrings.AcknowledgementInterval, DefaultValue = ReliableSessionDefaults.AcknowledgementIntervalString)]
  17. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  18. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanOneTick)]
  19. public TimeSpan AcknowledgementInterval
  20. {
  21. get { return (TimeSpan)base[ConfigurationStrings.AcknowledgementInterval]; }
  22. set { base[ConfigurationStrings.AcknowledgementInterval] = value; }
  23. }
  24. public override Type BindingElementType
  25. {
  26. get { return typeof(ReliableSessionBindingElement); }
  27. }
  28. [ConfigurationProperty(ConfigurationStrings.FlowControlEnabled, DefaultValue = true)]
  29. public bool FlowControlEnabled
  30. {
  31. get { return (bool)base[ConfigurationStrings.FlowControlEnabled]; }
  32. set { base[ConfigurationStrings.FlowControlEnabled] = value; }
  33. }
  34. [ConfigurationProperty(ConfigurationStrings.InactivityTimeout, DefaultValue = ReliableSessionDefaults.InactivityTimeoutString)]
  35. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  36. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanOneTick)]
  37. public TimeSpan InactivityTimeout
  38. {
  39. get { return (TimeSpan)base[ConfigurationStrings.InactivityTimeout]; }
  40. set { base[ConfigurationStrings.InactivityTimeout] = value; }
  41. }
  42. [ConfigurationProperty(ConfigurationStrings.MaxPendingChannels, DefaultValue = ReliableSessionDefaults.MaxPendingChannels)]
  43. [IntegerValidator(MinValue = 1, MaxValue = 16384)]
  44. public int MaxPendingChannels
  45. {
  46. get { return (int)base[ConfigurationStrings.MaxPendingChannels]; }
  47. set { base[ConfigurationStrings.MaxPendingChannels] = value; }
  48. }
  49. [ConfigurationProperty(ConfigurationStrings.MaxRetryCount, DefaultValue = ReliableSessionDefaults.MaxRetryCount)]
  50. [IntegerValidator(MinValue = 1)]
  51. public int MaxRetryCount
  52. {
  53. get { return (int)base[ConfigurationStrings.MaxRetryCount]; }
  54. set { base[ConfigurationStrings.MaxRetryCount] = value; }
  55. }
  56. [ConfigurationProperty(ConfigurationStrings.MaxTransferWindowSize, DefaultValue = ReliableSessionDefaults.MaxTransferWindowSize)]
  57. [IntegerValidator(MinValue = 1, MaxValue = 4096)]
  58. public int MaxTransferWindowSize
  59. {
  60. get { return (int)base[ConfigurationStrings.MaxTransferWindowSize]; }
  61. set { base[ConfigurationStrings.MaxTransferWindowSize] = value; }
  62. }
  63. [ConfigurationProperty(ConfigurationStrings.Ordered, DefaultValue = ReliableSessionDefaults.Ordered)]
  64. public bool Ordered
  65. {
  66. get { return (bool)base[ConfigurationStrings.Ordered]; }
  67. set { base[ConfigurationStrings.Ordered] = value; }
  68. }
  69. [ConfigurationProperty(ConfigurationStrings.ReliableMessagingVersion, DefaultValue = ReliableSessionDefaults.ReliableMessagingVersionString)]
  70. [TypeConverter(typeof(ReliableMessagingVersionConverter))]
  71. public ReliableMessagingVersion ReliableMessagingVersion
  72. {
  73. get { return (ReliableMessagingVersion)base[ConfigurationStrings.ReliableMessagingVersion]; }
  74. set { base[ConfigurationStrings.ReliableMessagingVersion] = value; }
  75. }
  76. public override void ApplyConfiguration(BindingElement bindingElement)
  77. {
  78. base.ApplyConfiguration(bindingElement);
  79. ReliableSessionBindingElement binding = (ReliableSessionBindingElement)bindingElement;
  80. binding.AcknowledgementInterval = this.AcknowledgementInterval;
  81. binding.FlowControlEnabled = this.FlowControlEnabled;
  82. binding.InactivityTimeout = this.InactivityTimeout;
  83. binding.MaxPendingChannels = this.MaxPendingChannels;
  84. binding.MaxRetryCount = this.MaxRetryCount;
  85. binding.MaxTransferWindowSize = this.MaxTransferWindowSize;
  86. binding.Ordered = this.Ordered;
  87. binding.ReliableMessagingVersion = this.ReliableMessagingVersion;
  88. }
  89. public override void CopyFrom(ServiceModelExtensionElement from)
  90. {
  91. base.CopyFrom(from);
  92. ReliableSessionElement source = (ReliableSessionElement)from;
  93. #pragma warning suppress 56506 //[....]; base.CopyFrom() checks for 'from' being null
  94. this.AcknowledgementInterval = source.AcknowledgementInterval;
  95. this.FlowControlEnabled = source.FlowControlEnabled;
  96. this.InactivityTimeout = source.InactivityTimeout;
  97. this.MaxPendingChannels = source.MaxPendingChannels;
  98. this.MaxRetryCount = source.MaxRetryCount;
  99. this.MaxTransferWindowSize = source.MaxTransferWindowSize;
  100. this.Ordered = source.Ordered;
  101. this.ReliableMessagingVersion = source.ReliableMessagingVersion;
  102. }
  103. protected internal override BindingElement CreateBindingElement()
  104. {
  105. ReliableSessionBindingElement binding = new ReliableSessionBindingElement();
  106. this.ApplyConfiguration(binding);
  107. return binding;
  108. }
  109. protected internal override void InitializeFrom(BindingElement bindingElement)
  110. {
  111. base.InitializeFrom(bindingElement);
  112. ReliableSessionBindingElement binding = (ReliableSessionBindingElement)bindingElement;
  113. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.AcknowledgementInterval, binding.AcknowledgementInterval);
  114. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.FlowControlEnabled, binding.FlowControlEnabled);
  115. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.InactivityTimeout, binding.InactivityTimeout);
  116. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxPendingChannels, binding.MaxPendingChannels);
  117. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxRetryCount, binding.MaxRetryCount);
  118. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxTransferWindowSize, binding.MaxTransferWindowSize);
  119. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.Ordered, binding.Ordered);
  120. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReliableMessagingVersion, binding.ReliableMessagingVersion);
  121. }
  122. }
  123. }