MsmqElementBase.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  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.Channels;
  10. public abstract partial class MsmqElementBase : TransportElement
  11. {
  12. [ConfigurationProperty(ConfigurationStrings.CustomDeadLetterQueue, DefaultValue = MsmqDefaults.CustomDeadLetterQueue)]
  13. public Uri CustomDeadLetterQueue
  14. {
  15. get { return (Uri)base[ConfigurationStrings.CustomDeadLetterQueue]; }
  16. set { base[ConfigurationStrings.CustomDeadLetterQueue] = value; }
  17. }
  18. [ConfigurationProperty(ConfigurationStrings.DeadLetterQueue, DefaultValue = MsmqDefaults.DeadLetterQueue)]
  19. [ServiceModelEnumValidator(typeof(DeadLetterQueueHelper))]
  20. public DeadLetterQueue DeadLetterQueue
  21. {
  22. get { return (DeadLetterQueue)base[ConfigurationStrings.DeadLetterQueue]; }
  23. set { base[ConfigurationStrings.DeadLetterQueue] = value; }
  24. }
  25. [ConfigurationProperty(ConfigurationStrings.Durable, DefaultValue = MsmqDefaults.Durable)]
  26. public bool Durable
  27. {
  28. get { return (bool)base[ConfigurationStrings.Durable]; }
  29. set { base[ConfigurationStrings.Durable] = value; }
  30. }
  31. [ConfigurationProperty(ConfigurationStrings.ExactlyOnce, DefaultValue = MsmqDefaults.ExactlyOnce)]
  32. public bool ExactlyOnce
  33. {
  34. get { return (bool)base[ConfigurationStrings.ExactlyOnce]; }
  35. set { base[ConfigurationStrings.ExactlyOnce] = value; }
  36. }
  37. [ConfigurationProperty(ConfigurationStrings.MaxRetryCycles, DefaultValue = MsmqDefaults.MaxRetryCycles)]
  38. [IntegerValidator(MinValue = 0)]
  39. public int MaxRetryCycles
  40. {
  41. get { return (int)base[ConfigurationStrings.MaxRetryCycles]; }
  42. set { base[ConfigurationStrings.MaxRetryCycles] = value; }
  43. }
  44. [ConfigurationProperty(ConfigurationStrings.ReceiveContextEnabled, DefaultValue = MsmqDefaults.ReceiveContextEnabled)]
  45. public bool ReceiveContextEnabled
  46. {
  47. get { return (bool)base[ConfigurationStrings.ReceiveContextEnabled]; }
  48. set { base[ConfigurationStrings.ReceiveContextEnabled] = value; }
  49. }
  50. [ConfigurationProperty(ConfigurationStrings.ReceiveErrorHandling, DefaultValue = MsmqDefaults.ReceiveErrorHandling)]
  51. [ServiceModelEnumValidator(typeof(ReceiveErrorHandlingHelper))]
  52. public ReceiveErrorHandling ReceiveErrorHandling
  53. {
  54. get { return (ReceiveErrorHandling)base[ConfigurationStrings.ReceiveErrorHandling]; }
  55. set { base[ConfigurationStrings.ReceiveErrorHandling] = value; }
  56. }
  57. [ConfigurationProperty(ConfigurationStrings.ReceiveRetryCount, DefaultValue = MsmqDefaults.ReceiveRetryCount)]
  58. [IntegerValidator(MinValue = 0)]
  59. public int ReceiveRetryCount
  60. {
  61. get { return (int)base[ConfigurationStrings.ReceiveRetryCount]; }
  62. set { base[ConfigurationStrings.ReceiveRetryCount] = value; }
  63. }
  64. [ConfigurationProperty(ConfigurationStrings.RetryCycleDelay, DefaultValue = MsmqDefaults.RetryCycleDelayString)]
  65. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  66. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  67. public TimeSpan RetryCycleDelay
  68. {
  69. get { return (TimeSpan)base[ConfigurationStrings.RetryCycleDelay]; }
  70. set { base[ConfigurationStrings.RetryCycleDelay] = value; }
  71. }
  72. [ConfigurationProperty(ConfigurationStrings.MsmqTransportSecurity)]
  73. public MsmqTransportSecurityElement MsmqTransportSecurity
  74. {
  75. get { return (MsmqTransportSecurityElement)base[ConfigurationStrings.MsmqTransportSecurity]; }
  76. }
  77. [ConfigurationProperty(ConfigurationStrings.TimeToLive, DefaultValue = MsmqDefaults.TimeToLiveString)]
  78. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  79. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  80. public TimeSpan TimeToLive
  81. {
  82. get { return (TimeSpan)base[ConfigurationStrings.TimeToLive]; }
  83. set { base[ConfigurationStrings.TimeToLive] = value; }
  84. }
  85. [ConfigurationProperty(ConfigurationStrings.UseSourceJournal, DefaultValue = MsmqDefaults.UseSourceJournal)]
  86. public bool UseSourceJournal
  87. {
  88. get { return (bool)base[ConfigurationStrings.UseSourceJournal]; }
  89. set { base[ConfigurationStrings.UseSourceJournal] = value; }
  90. }
  91. [ConfigurationProperty(ConfigurationStrings.UseMsmqTracing, DefaultValue = MsmqDefaults.UseMsmqTracing)]
  92. public bool UseMsmqTracing
  93. {
  94. get { return (bool)base[ConfigurationStrings.UseMsmqTracing]; }
  95. set { base[ConfigurationStrings.UseMsmqTracing] = value; }
  96. }
  97. [ConfigurationProperty(ConfigurationStrings.ValidityDuration, DefaultValue = MsmqDefaults.ValidityDurationString)]
  98. [TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
  99. [ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
  100. public TimeSpan ValidityDuration
  101. {
  102. get { return (TimeSpan)base[ConfigurationStrings.ValidityDuration]; }
  103. set { base[ConfigurationStrings.ValidityDuration] = value; }
  104. }
  105. public override void ApplyConfiguration(BindingElement bindingElement)
  106. {
  107. base.ApplyConfiguration(bindingElement);
  108. System.ServiceModel.Channels.MsmqBindingElementBase binding = bindingElement as System.ServiceModel.Channels.MsmqBindingElementBase;
  109. if (null != binding)
  110. {
  111. if (null != this.CustomDeadLetterQueue)
  112. binding.CustomDeadLetterQueue = this.CustomDeadLetterQueue;
  113. binding.DeadLetterQueue = this.DeadLetterQueue;
  114. binding.Durable = this.Durable;
  115. binding.ExactlyOnce = this.ExactlyOnce;
  116. binding.MaxRetryCycles = this.MaxRetryCycles;
  117. binding.ReceiveContextEnabled = this.ReceiveContextEnabled;
  118. binding.ReceiveErrorHandling = this.ReceiveErrorHandling;
  119. binding.ReceiveRetryCount = this.ReceiveRetryCount;
  120. binding.RetryCycleDelay = this.RetryCycleDelay;
  121. binding.TimeToLive = this.TimeToLive;
  122. binding.UseSourceJournal = this.UseSourceJournal;
  123. binding.UseMsmqTracing = this.UseMsmqTracing;
  124. binding.ValidityDuration = this.ValidityDuration;
  125. this.MsmqTransportSecurity.ApplyConfiguration(binding.MsmqTransportSecurity);
  126. }
  127. }
  128. public override void CopyFrom(ServiceModelExtensionElement from)
  129. {
  130. base.CopyFrom(from);
  131. MsmqElementBase source = from as MsmqElementBase;
  132. if (null != source)
  133. {
  134. this.CustomDeadLetterQueue = source.CustomDeadLetterQueue;
  135. this.DeadLetterQueue = source.DeadLetterQueue;
  136. this.Durable = source.Durable;
  137. this.ExactlyOnce = source.ExactlyOnce;
  138. this.MaxRetryCycles = source.MaxRetryCycles;
  139. this.ReceiveContextEnabled = source.ReceiveContextEnabled;
  140. this.ReceiveErrorHandling = source.ReceiveErrorHandling;
  141. this.ReceiveRetryCount = source.ReceiveRetryCount;
  142. this.RetryCycleDelay = source.RetryCycleDelay;
  143. this.TimeToLive = source.TimeToLive;
  144. this.UseSourceJournal = source.UseSourceJournal;
  145. this.UseMsmqTracing = source.UseMsmqTracing;
  146. this.ValidityDuration = source.ValidityDuration;
  147. this.MsmqTransportSecurity.MsmqAuthenticationMode = source.MsmqTransportSecurity.MsmqAuthenticationMode;
  148. this.MsmqTransportSecurity.MsmqProtectionLevel = source.MsmqTransportSecurity.MsmqProtectionLevel;
  149. this.MsmqTransportSecurity.MsmqEncryptionAlgorithm = source.MsmqTransportSecurity.MsmqEncryptionAlgorithm;
  150. this.MsmqTransportSecurity.MsmqSecureHashAlgorithm = source.MsmqTransportSecurity.MsmqSecureHashAlgorithm;
  151. }
  152. }
  153. protected internal override void InitializeFrom(BindingElement bindingElement)
  154. {
  155. base.InitializeFrom(bindingElement);
  156. System.ServiceModel.Channels.MsmqBindingElementBase binding = bindingElement as System.ServiceModel.Channels.MsmqBindingElementBase;
  157. if (null != binding)
  158. {
  159. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.CustomDeadLetterQueue, binding.CustomDeadLetterQueue);
  160. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.DeadLetterQueue, binding.DeadLetterQueue);
  161. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.Durable, binding.Durable);
  162. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ExactlyOnce, binding.ExactlyOnce);
  163. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxRetryCycles, binding.MaxRetryCycles);
  164. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReceiveErrorHandling, binding.ReceiveErrorHandling);
  165. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReceiveRetryCount, binding.ReceiveRetryCount);
  166. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.RetryCycleDelay, binding.RetryCycleDelay);
  167. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TimeToLive, binding.TimeToLive);
  168. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.UseSourceJournal, binding.UseSourceJournal);
  169. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReceiveContextEnabled, binding.ReceiveContextEnabled);
  170. SetPropertyValueIfNotDefaultValue(ConfigurationStrings.UseMsmqTracing, binding.UseMsmqTracing);
  171. // SetPropertyValueIfNotDefaultValue won't detect defaults correctly through type conversion, check explicitly
  172. if (binding.ValidityDuration != MsmqDefaults.ValidityDuration)
  173. {
  174. this.ValidityDuration = binding.ValidityDuration;
  175. }
  176. this.MsmqTransportSecurity.InitializeFrom(binding.MsmqTransportSecurity);
  177. }
  178. }
  179. }
  180. }