|
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
namespace System.ServiceModel.Configuration
{
using System.ComponentModel;
using System.Configuration;
using System.Runtime;
using System.ServiceModel.Channels;
public abstract partial class MsmqElementBase : TransportElement
{
[ConfigurationProperty(ConfigurationStrings.CustomDeadLetterQueue, DefaultValue = MsmqDefaults.CustomDeadLetterQueue)]
public Uri CustomDeadLetterQueue
{
get { return (Uri)base[ConfigurationStrings.CustomDeadLetterQueue]; }
set { base[ConfigurationStrings.CustomDeadLetterQueue] = value; }
}
[ConfigurationProperty(ConfigurationStrings.DeadLetterQueue, DefaultValue = MsmqDefaults.DeadLetterQueue)]
[ServiceModelEnumValidator(typeof(DeadLetterQueueHelper))]
public DeadLetterQueue DeadLetterQueue
{
get { return (DeadLetterQueue)base[ConfigurationStrings.DeadLetterQueue]; }
set { base[ConfigurationStrings.DeadLetterQueue] = value; }
}
[ConfigurationProperty(ConfigurationStrings.Durable, DefaultValue = MsmqDefaults.Durable)]
public bool Durable
{
get { return (bool)base[ConfigurationStrings.Durable]; }
set { base[ConfigurationStrings.Durable] = value; }
}
[ConfigurationProperty(ConfigurationStrings.ExactlyOnce, DefaultValue = MsmqDefaults.ExactlyOnce)]
public bool ExactlyOnce
{
get { return (bool)base[ConfigurationStrings.ExactlyOnce]; }
set { base[ConfigurationStrings.ExactlyOnce] = value; }
}
[ConfigurationProperty(ConfigurationStrings.MaxRetryCycles, DefaultValue = MsmqDefaults.MaxRetryCycles)]
[IntegerValidator(MinValue = 0)]
public int MaxRetryCycles
{
get { return (int)base[ConfigurationStrings.MaxRetryCycles]; }
set { base[ConfigurationStrings.MaxRetryCycles] = value; }
}
[ConfigurationProperty(ConfigurationStrings.ReceiveContextEnabled, DefaultValue = MsmqDefaults.ReceiveContextEnabled)]
public bool ReceiveContextEnabled
{
get { return (bool)base[ConfigurationStrings.ReceiveContextEnabled]; }
set { base[ConfigurationStrings.ReceiveContextEnabled] = value; }
}
[ConfigurationProperty(ConfigurationStrings.ReceiveErrorHandling, DefaultValue = MsmqDefaults.ReceiveErrorHandling)]
[ServiceModelEnumValidator(typeof(ReceiveErrorHandlingHelper))]
public ReceiveErrorHandling ReceiveErrorHandling
{
get { return (ReceiveErrorHandling)base[ConfigurationStrings.ReceiveErrorHandling]; }
set { base[ConfigurationStrings.ReceiveErrorHandling] = value; }
}
[ConfigurationProperty(ConfigurationStrings.ReceiveRetryCount, DefaultValue = MsmqDefaults.ReceiveRetryCount)]
[IntegerValidator(MinValue = 0)]
public int ReceiveRetryCount
{
get { return (int)base[ConfigurationStrings.ReceiveRetryCount]; }
set { base[ConfigurationStrings.ReceiveRetryCount] = value; }
}
[ConfigurationProperty(ConfigurationStrings.RetryCycleDelay, DefaultValue = MsmqDefaults.RetryCycleDelayString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan RetryCycleDelay
{
get { return (TimeSpan)base[ConfigurationStrings.RetryCycleDelay]; }
set { base[ConfigurationStrings.RetryCycleDelay] = value; }
}
[ConfigurationProperty(ConfigurationStrings.MsmqTransportSecurity)]
public MsmqTransportSecurityElement MsmqTransportSecurity
{
get { return (MsmqTransportSecurityElement)base[ConfigurationStrings.MsmqTransportSecurity]; }
}
[ConfigurationProperty(ConfigurationStrings.TimeToLive, DefaultValue = MsmqDefaults.TimeToLiveString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan TimeToLive
{
get { return (TimeSpan)base[ConfigurationStrings.TimeToLive]; }
set { base[ConfigurationStrings.TimeToLive] = value; }
}
[ConfigurationProperty(ConfigurationStrings.UseSourceJournal, DefaultValue = MsmqDefaults.UseSourceJournal)]
public bool UseSourceJournal
{
get { return (bool)base[ConfigurationStrings.UseSourceJournal]; }
set { base[ConfigurationStrings.UseSourceJournal] = value; }
}
[ConfigurationProperty(ConfigurationStrings.UseMsmqTracing, DefaultValue = MsmqDefaults.UseMsmqTracing)]
public bool UseMsmqTracing
{
get { return (bool)base[ConfigurationStrings.UseMsmqTracing]; }
set { base[ConfigurationStrings.UseMsmqTracing] = value; }
}
[ConfigurationProperty(ConfigurationStrings.ValidityDuration, DefaultValue = MsmqDefaults.ValidityDurationString)]
[TypeConverter(typeof(TimeSpanOrInfiniteConverter))]
[ServiceModelTimeSpanValidator(MinValueString = ConfigurationStrings.TimeSpanZero)]
public TimeSpan ValidityDuration
{
get { return (TimeSpan)base[ConfigurationStrings.ValidityDuration]; }
set { base[ConfigurationStrings.ValidityDuration] = value; }
}
public override void ApplyConfiguration(BindingElement bindingElement)
{
base.ApplyConfiguration(bindingElement);
System.ServiceModel.Channels.MsmqBindingElementBase binding = bindingElement as System.ServiceModel.Channels.MsmqBindingElementBase;
if (null != binding)
{
if (null != this.CustomDeadLetterQueue)
binding.CustomDeadLetterQueue = this.CustomDeadLetterQueue;
binding.DeadLetterQueue = this.DeadLetterQueue;
binding.Durable = this.Durable;
binding.ExactlyOnce = this.ExactlyOnce;
binding.MaxRetryCycles = this.MaxRetryCycles;
binding.ReceiveContextEnabled = this.ReceiveContextEnabled;
binding.ReceiveErrorHandling = this.ReceiveErrorHandling;
binding.ReceiveRetryCount = this.ReceiveRetryCount;
binding.RetryCycleDelay = this.RetryCycleDelay;
binding.TimeToLive = this.TimeToLive;
binding.UseSourceJournal = this.UseSourceJournal;
binding.UseMsmqTracing = this.UseMsmqTracing;
binding.ValidityDuration = this.ValidityDuration;
this.MsmqTransportSecurity.ApplyConfiguration(binding.MsmqTransportSecurity);
}
}
public override void CopyFrom(ServiceModelExtensionElement from)
{
base.CopyFrom(from);
MsmqElementBase source = from as MsmqElementBase;
if (null != source)
{
this.CustomDeadLetterQueue = source.CustomDeadLetterQueue;
this.DeadLetterQueue = source.DeadLetterQueue;
this.Durable = source.Durable;
this.ExactlyOnce = source.ExactlyOnce;
this.MaxRetryCycles = source.MaxRetryCycles;
this.ReceiveContextEnabled = source.ReceiveContextEnabled;
this.ReceiveErrorHandling = source.ReceiveErrorHandling;
this.ReceiveRetryCount = source.ReceiveRetryCount;
this.RetryCycleDelay = source.RetryCycleDelay;
this.TimeToLive = source.TimeToLive;
this.UseSourceJournal = source.UseSourceJournal;
this.UseMsmqTracing = source.UseMsmqTracing;
this.ValidityDuration = source.ValidityDuration;
this.MsmqTransportSecurity.MsmqAuthenticationMode = source.MsmqTransportSecurity.MsmqAuthenticationMode;
this.MsmqTransportSecurity.MsmqProtectionLevel = source.MsmqTransportSecurity.MsmqProtectionLevel;
this.MsmqTransportSecurity.MsmqEncryptionAlgorithm = source.MsmqTransportSecurity.MsmqEncryptionAlgorithm;
this.MsmqTransportSecurity.MsmqSecureHashAlgorithm = source.MsmqTransportSecurity.MsmqSecureHashAlgorithm;
}
}
protected internal override void InitializeFrom(BindingElement bindingElement)
{
base.InitializeFrom(bindingElement);
System.ServiceModel.Channels.MsmqBindingElementBase binding = bindingElement as System.ServiceModel.Channels.MsmqBindingElementBase;
if (null != binding)
{
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.CustomDeadLetterQueue, binding.CustomDeadLetterQueue);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.DeadLetterQueue, binding.DeadLetterQueue);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.Durable, binding.Durable);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ExactlyOnce, binding.ExactlyOnce);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxRetryCycles, binding.MaxRetryCycles);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReceiveErrorHandling, binding.ReceiveErrorHandling);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReceiveRetryCount, binding.ReceiveRetryCount);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.RetryCycleDelay, binding.RetryCycleDelay);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.TimeToLive, binding.TimeToLive);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.UseSourceJournal, binding.UseSourceJournal);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ReceiveContextEnabled, binding.ReceiveContextEnabled);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.UseMsmqTracing, binding.UseMsmqTracing);
// SetPropertyValueIfNotDefaultValue won't detect defaults correctly through type conversion, check explicitly
if (binding.ValidityDuration != MsmqDefaults.ValidityDuration)
{
this.ValidityDuration = binding.ValidityDuration;
}
this.MsmqTransportSecurity.InitializeFrom(binding.MsmqTransportSecurity);
}
}
}
}
|