193 lines
5.8 KiB
C#
193 lines
5.8 KiB
C#
|
//------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//------------------------------------------------------------
|
||
|
namespace System.ServiceModel.MsmqIntegration
|
||
|
{
|
||
|
using System.ComponentModel;
|
||
|
using System.Messaging;
|
||
|
using System.Runtime;
|
||
|
|
||
|
public sealed class MsmqIntegrationMessageProperty
|
||
|
{
|
||
|
public const string Name = "MsmqIntegrationMessageProperty";
|
||
|
|
||
|
public static MsmqIntegrationMessageProperty Get(System.ServiceModel.Channels.Message message)
|
||
|
{
|
||
|
if (null == message)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message");
|
||
|
if (null == message.Properties)
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("message.Properties");
|
||
|
|
||
|
return message.Properties[Name] as MsmqIntegrationMessageProperty;
|
||
|
}
|
||
|
|
||
|
object body;
|
||
|
public object Body
|
||
|
{
|
||
|
get { return this.body; }
|
||
|
set { this.body = value; }
|
||
|
}
|
||
|
|
||
|
AcknowledgeTypes? acknowledgeType = null;
|
||
|
public AcknowledgeTypes? AcknowledgeType
|
||
|
{
|
||
|
get { return this.acknowledgeType; }
|
||
|
set { this.acknowledgeType = value; }
|
||
|
}
|
||
|
|
||
|
Acknowledgment? acknowledgment = null;
|
||
|
public Acknowledgment? Acknowledgment
|
||
|
{
|
||
|
get { return this.acknowledgment; }
|
||
|
internal set { this.acknowledgment = value; }
|
||
|
}
|
||
|
|
||
|
Uri administrationQueue = null;
|
||
|
public Uri AdministrationQueue
|
||
|
{
|
||
|
get { return this.administrationQueue; }
|
||
|
set { this.administrationQueue = value; }
|
||
|
}
|
||
|
|
||
|
int? appSpecific = null;
|
||
|
public int? AppSpecific
|
||
|
{
|
||
|
get { return this.appSpecific; }
|
||
|
set { this.appSpecific = value; }
|
||
|
}
|
||
|
|
||
|
DateTime? arrivedTime = null;
|
||
|
public DateTime? ArrivedTime
|
||
|
{
|
||
|
get { return this.arrivedTime; }
|
||
|
internal set { this.arrivedTime = value; }
|
||
|
}
|
||
|
|
||
|
bool? authenticated = null;
|
||
|
public bool? Authenticated
|
||
|
{
|
||
|
get { return this.authenticated; }
|
||
|
internal set { this.authenticated = value; }
|
||
|
}
|
||
|
|
||
|
int? bodyType = null;
|
||
|
public int? BodyType
|
||
|
{
|
||
|
get { return this.bodyType; }
|
||
|
set { this.bodyType = value; }
|
||
|
}
|
||
|
|
||
|
string correlationId = null;
|
||
|
public string CorrelationId
|
||
|
{
|
||
|
get { return this.correlationId; }
|
||
|
set { this.correlationId = value; }
|
||
|
}
|
||
|
|
||
|
Uri destinationQueue = null;
|
||
|
public Uri DestinationQueue
|
||
|
{
|
||
|
get { return this.destinationQueue; }
|
||
|
internal set { this.destinationQueue = value; }
|
||
|
}
|
||
|
|
||
|
byte[] extension = null;
|
||
|
public byte[] Extension
|
||
|
{
|
||
|
get { return this.extension; }
|
||
|
set { this.extension = value; }
|
||
|
}
|
||
|
|
||
|
string id = null;
|
||
|
public string Id
|
||
|
{
|
||
|
get { return this.id; }
|
||
|
internal set { this.id = value; }
|
||
|
}
|
||
|
|
||
|
string label = null;
|
||
|
public string Label
|
||
|
{
|
||
|
get { return this.label; }
|
||
|
set { this.label = value; }
|
||
|
}
|
||
|
|
||
|
MessageType? messageType = null;
|
||
|
public MessageType? MessageType
|
||
|
{
|
||
|
get { return this.messageType; }
|
||
|
internal set { this.messageType = value; }
|
||
|
}
|
||
|
|
||
|
MessagePriority? priority = null;
|
||
|
public MessagePriority? Priority
|
||
|
{
|
||
|
get { return this.priority; }
|
||
|
set
|
||
|
{
|
||
|
ValidateMessagePriority(value);
|
||
|
this.priority = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Uri responseQueue = null;
|
||
|
public Uri ResponseQueue
|
||
|
{
|
||
|
get { return this.responseQueue; }
|
||
|
set { this.responseQueue = value; }
|
||
|
}
|
||
|
|
||
|
byte[] senderId = null;
|
||
|
public byte[] SenderId
|
||
|
{
|
||
|
get { return this.senderId; }
|
||
|
internal set { this.senderId = value; }
|
||
|
}
|
||
|
|
||
|
DateTime? sentTime = null;
|
||
|
public DateTime? SentTime
|
||
|
{
|
||
|
get { return this.sentTime; }
|
||
|
internal set { this.sentTime = value; }
|
||
|
}
|
||
|
|
||
|
TimeSpan? timeToReachQueue = null;
|
||
|
public TimeSpan? TimeToReachQueue
|
||
|
{
|
||
|
get { return this.timeToReachQueue; }
|
||
|
set
|
||
|
{
|
||
|
ValidateTimeToReachQueue(value);
|
||
|
this.timeToReachQueue = value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
internal void InternalSetTimeToReachQueue(TimeSpan timeout)
|
||
|
{
|
||
|
this.timeToReachQueue = timeout;
|
||
|
}
|
||
|
|
||
|
static void ValidateMessagePriority(MessagePriority? priority)
|
||
|
{
|
||
|
if (priority.HasValue && (priority.Value < MessagePriority.Lowest || priority.Value > MessagePriority.Highest))
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidEnumArgumentException("priority", (int)priority, typeof(MessagePriority)));
|
||
|
}
|
||
|
|
||
|
static void ValidateTimeToReachQueue(TimeSpan? timeout)
|
||
|
{
|
||
|
if (timeout.HasValue && timeout.Value < TimeSpan.Zero)
|
||
|
{
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", timeout,
|
||
|
SR.GetString(SR.SFxTimeoutOutOfRange0)));
|
||
|
}
|
||
|
|
||
|
if (timeout.HasValue && TimeoutHelper.IsTooLarge(timeout.Value))
|
||
|
{
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value", timeout,
|
||
|
SR.GetString(SR.SFxTimeoutOutOfRangeTooBig)));
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|