|
//------------------------------------------------------------------------------
// <copyright file="DefaultPropertiesToSend.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
namespace System.Messaging
{
using System.Diagnostics;
using System;
using System.ComponentModel;
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend"]/*' />
/// <devdoc>
/// <para>
/// Specifies the default property values that will be used when
/// sending objects using the message queue.
/// </para>
/// </devdoc>
[TypeConverter(typeof(ExpandableObjectConverter))]
public class DefaultPropertiesToSend
{
private Message cachedMessage = new Message();
private bool designMode;
private MessageQueue cachedAdminQueue;
private MessageQueue cachedResponseQueue;
private MessageQueue cachedTransactionStatusQueue;
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.DefaultPropertiesToSend"]/*' />
/// <devdoc>
/// <para>
/// Initializes a new instance of the <see cref='System.Messaging.DefaultPropertiesToSend'/>
/// class.
/// </para>
/// </devdoc>
public DefaultPropertiesToSend()
{
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.DefaultPropertiesToSend1"]/*' />
/// <internalonly/>
internal DefaultPropertiesToSend(bool designMode)
{
this.designMode = designMode;
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.AcknowledgeTypes"]/*' />
/// <devdoc>
/// <para>
/// Gets
/// or sets the type of acknowledgement message to be returned to the sending
/// application.
/// </para>
/// </devdoc>
[DefaultValueAttribute(AcknowledgeTypes.None), MessagingDescription(Res.MsgAcknowledgeType)]
public AcknowledgeTypes AcknowledgeType
{
get
{
return this.cachedMessage.AcknowledgeType;
}
set
{
this.cachedMessage.AcknowledgeType = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.AdministrationQueue"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets the queue used for acknowledgement messages
/// generated by the application. This is the queue that
/// will receive the acknowledgment message for the message you are about to
/// send.
/// </para>
/// </devdoc>
[DefaultValueAttribute(null), MessagingDescription(Res.MsgAdministrationQueue)]
public MessageQueue AdministrationQueue
{
get
{
if (this.designMode)
{
if (this.cachedAdminQueue != null && this.cachedAdminQueue.Site == null)
this.cachedAdminQueue = null;
return this.cachedAdminQueue;
}
return this.cachedMessage.AdministrationQueue;
}
set
{
//The format name of this queue shouldn't be
//resolved at desgin time, but it should at runtime.
if (this.designMode)
this.cachedAdminQueue = value;
else
this.cachedMessage.AdministrationQueue = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.AppSpecific"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets application-generated information.
///
/// </para>
/// </devdoc>
[DefaultValueAttribute(0), MessagingDescription(Res.MsgAppSpecific)]
public int AppSpecific
{
get
{
return this.cachedMessage.AppSpecific;
}
set
{
this.cachedMessage.AppSpecific = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.AttachSenderId"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets a value indicating if the sender ID is to be attached to the
/// message.
///
/// </para>
/// </devdoc>
[DefaultValueAttribute(true), MessagingDescription(Res.MsgAttachSenderId)]
public bool AttachSenderId
{
get
{
return this.cachedMessage.AttachSenderId;
}
set
{
this.cachedMessage.AttachSenderId = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.CachedMessage"]/*' />
/// <internalonly/>
internal Message CachedMessage
{
get
{
return this.cachedMessage;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.EncryptionAlgorithm"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets the encryption algorithm used to encrypt the body of a
/// private message.
///
/// </para>
/// </devdoc>
[DefaultValueAttribute(EncryptionAlgorithm.Rc2), MessagingDescription(Res.MsgEncryptionAlgorithm)]
public EncryptionAlgorithm EncryptionAlgorithm
{
get
{
return this.cachedMessage.EncryptionAlgorithm;
}
set
{
this.cachedMessage.EncryptionAlgorithm = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.Extension"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets additional information associated with the message.
///
/// </para>
/// </devdoc>
[Editor("System.ComponentModel.Design.ArrayEditor, " + AssemblyRef.SystemDesign, "System.Drawing.Design.UITypeEditor, " + AssemblyRef.SystemDrawing),
MessagingDescription(Res.MsgExtension)]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public byte[] Extension
{
get
{
return this.cachedMessage.Extension;
}
set
{
this.cachedMessage.Extension = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.HashAlgorithm"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets the hashing algorithm used when
/// authenticating
/// messages.
///
/// </para>
/// </devdoc>
[DefaultValueAttribute(HashAlgorithm.Md5), MessagingDescription(Res.MsgHashAlgorithm)]
public HashAlgorithm HashAlgorithm
{
get
{
return this.cachedMessage.HashAlgorithm;
}
set
{
this.cachedMessage.HashAlgorithm = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.Label"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets the message label.
///
/// </para>
/// </devdoc>
[DefaultValueAttribute(""), MessagingDescription(Res.MsgLabel)]
public string Label
{
get
{
return this.cachedMessage.Label;
}
set
{
this.cachedMessage.Label = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.Priority"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets the message priority.
/// </para>
/// </devdoc>
[DefaultValueAttribute(MessagePriority.Normal), MessagingDescription(Res.MsgPriority)]
public MessagePriority Priority
{
get
{
return this.cachedMessage.Priority;
}
set
{
this.cachedMessage.Priority = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.Recoverable"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets a value indicating whether the message is
/// guaranteed to be delivered in the event
/// of a computer failure or network problem.
///
/// </para>
/// </devdoc>
[DefaultValueAttribute(false), MessagingDescription(Res.MsgRecoverable)]
public bool Recoverable
{
get
{
return this.cachedMessage.Recoverable;
}
set
{
this.cachedMessage.Recoverable = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.ResponseQueue"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets the queue which receives application-generated response
/// messages.
///
/// </para>
/// </devdoc>
[DefaultValueAttribute(null), MessagingDescription(Res.MsgResponseQueue)]
public MessageQueue ResponseQueue
{
get
{
if (this.designMode)
return this.cachedResponseQueue;
return this.cachedMessage.ResponseQueue;
}
set
{
//The format name of this queue shouldn't be
//resolved at desgin time, but it should at runtime.
if (this.designMode)
this.cachedResponseQueue = value;
else
this.cachedMessage.ResponseQueue = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.TimeToBeReceived"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets the time limit for the message to be
/// retrieved from
/// the target queue.
/// </para>
/// </devdoc>
[TypeConverter(typeof(System.Messaging.Design.TimeoutConverter)),
MessagingDescription(Res.MsgTimeToBeReceived)]
public TimeSpan TimeToBeReceived
{
get
{
return this.cachedMessage.TimeToBeReceived;
}
set
{
this.cachedMessage.TimeToBeReceived = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.TimeToReachQueue"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets the time limit for the message to
/// reach the queue.
///
/// </para>
/// </devdoc>
[TypeConverter(typeof(System.Messaging.Design.TimeoutConverter)),
MessagingDescription(Res.MsgTimeToReachQueue)]
public TimeSpan TimeToReachQueue
{
get
{
return this.cachedMessage.TimeToReachQueue;
}
set
{
this.cachedMessage.TimeToReachQueue = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.TransactionStatusQueue"]/*' />
/// <devdoc>
/// <para>
/// Gets the transaction status queue on the source computer.
///
/// </para>
/// </devdoc>
[DefaultValueAttribute(null), MessagingDescription(Res.MsgTransactionStatusQueue)]
public MessageQueue TransactionStatusQueue
{
get
{
if (this.designMode)
return this.cachedTransactionStatusQueue;
return this.cachedMessage.TransactionStatusQueue;
}
set
{
//The format name of this queue shouldn't be
//resolved at desgin time, but it should at runtime.
if (this.designMode)
this.cachedTransactionStatusQueue = value;
else
this.cachedMessage.TransactionStatusQueue = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.UseAuthentication"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets a value indicating whether the message must be authenticated.
/// </para>
/// </devdoc>
[DefaultValueAttribute(false), MessagingDescription(Res.MsgUseAuthentication)]
public bool UseAuthentication
{
get
{
return this.cachedMessage.UseAuthentication;
}
set
{
this.cachedMessage.UseAuthentication = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.UseDeadLetterQueue"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets a value indicating whether a copy of the message that could not
/// be delivered should be sent to a dead-letter queue.
/// </para>
/// </devdoc>
[DefaultValueAttribute(false), MessagingDescription(Res.MsgUseDeadLetterQueue)]
public bool UseDeadLetterQueue
{
get
{
return this.cachedMessage.UseDeadLetterQueue;
}
set
{
this.cachedMessage.UseDeadLetterQueue = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.UseEncryption"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets a value indicating whether to encrypt private messages.
/// </para>
/// </devdoc>
[DefaultValueAttribute(false), MessagingDescription(Res.MsgUseEncryption)]
public bool UseEncryption
{
get
{
return this.cachedMessage.UseEncryption;
}
set
{
this.cachedMessage.UseEncryption = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.UseJournalQueue"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets a value indicating whether a copy of the message should be kept
/// in a machine journal on the originating computer.
/// </para>
/// </devdoc>
[DefaultValueAttribute(false), MessagingDescription(Res.MsgUseJournalQueue)]
public bool UseJournalQueue
{
get
{
return this.cachedMessage.UseJournalQueue;
}
set
{
this.cachedMessage.UseJournalQueue = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.UseTracing"]/*' />
/// <devdoc>
/// <para>
/// Gets or sets a value indicating whether to trace a message as it moves toward
/// its destination queue.
/// </para>
/// </devdoc>
[DefaultValueAttribute(false), MessagingDescription(Res.MsgUseTracing)]
public bool UseTracing
{
get
{
return this.cachedMessage.UseTracing;
}
set
{
this.cachedMessage.UseTracing = value;
}
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.ShouldSerializeTimeToBeReceived"]/*' />
/// <internalonly/>
private bool ShouldSerializeTimeToBeReceived()
{
if (TimeToBeReceived == Message.InfiniteTimeout)
return false;
return true;
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.ShouldSerializeTimeToReachQueue"]/*' />
/// <internalonly/>
private bool ShouldSerializeTimeToReachQueue()
{
if (TimeToReachQueue == Message.InfiniteTimeout)
return false;
return true;
}
/// <include file='doc\DefaultPropertiesToSend.uex' path='docs/doc[@for="DefaultPropertiesToSend.ShouldSerializeExtension"]/*' />
/// <internalonly/>
private bool ShouldSerializeExtension()
{
if (Extension != null && Extension.Length > 0)
{
return true;
}
return false;
}
}
}
|