2
0

MsmqBindingElementBase.cs 9.0 KB

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