// // System.Messaging // // Authors: // Peter Van Isacker (sclytrack@planetinternet.be) // Rafael Teixeira (rafaelteixeirabr@hotmail.com) // // (C) 2003 Peter Van Isacker // // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // using System; using System.IO; using System.ComponentModel; using Mono.Messaging; namespace System.Messaging { [DesignerAttribute ("System.Messaging.Design.MessageDesigner, " + Consts.AssemblySystem_Design)] public class Message: Component { private readonly IMessage delegateMessage; private IMessageFormatter formatter; //private int bodyType = 0; private object body; #region Constructor public Message() : this (CreateMessage (), null, null) { } public Message (object body) : this (CreateMessage (), body, null) { } public Message (object body, IMessageFormatter formatter) : this (CreateMessage (), body, formatter) { } internal Message (IMessage delegateMessage, object body, IMessageFormatter formatter) { this.delegateMessage = delegateMessage; this.body = body; this.formatter = formatter; } #endregion //Constructor [MonoTODO] public static readonly TimeSpan InfiniteTimeout; #region Properties [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgAcknowledgeType")] public AcknowledgeTypes AcknowledgeType { get { return (AcknowledgeTypes) delegateMessage.AcknowledgeType; } set { delegateMessage.AcknowledgeType = (Mono.Messaging.AcknowledgeTypes) value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgAcknowledgement")] public Acknowledgment Acknowledgment { get { return (Acknowledgment) (int) delegateMessage.Acknowledgment; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgAdministrationQueue")] public MessageQueue AdministrationQueue { get { if (delegateMessage.AdministrationQueue == null) return null; return new MessageQueue (delegateMessage.AdministrationQueue); } set { delegateMessage.AdministrationQueue = value.DelegateQueue; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgAppSpecific")] public int AppSpecific { get { return delegateMessage.AppSpecific; } set { delegateMessage.AppSpecific = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [MessagingDescription ("MsgArrivedTime")] public DateTime ArrivedTime { get { return delegateMessage.ArrivedTime; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgAttachSenderId")] public bool AttachSenderId { get { return delegateMessage.AttachSenderId; } set { delegateMessage.AttachSenderId = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [MessagingDescription ("MsgAuthenticated")] public bool Authenticated { get { return delegateMessage.Authenticated; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgAuthenticationProviderName")] public string AuthenticationProviderName { get { return delegateMessage.AuthenticationProviderName; } set { delegateMessage.AuthenticationProviderName = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgAuthenticationProviderType")] public CryptographicProviderType AuthenticationProviderType { get { return (CryptographicProviderType) delegateMessage.AuthenticationProviderType; } set { delegateMessage.AuthenticationProviderType = (Mono.Messaging.CryptographicProviderType) value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [Browsable (false)] public object Body { get { if (body == null && delegateMessage.BodyStream == null) return null; else if (body == null) body = formatter.Read (this); return body; } set { body = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [Editor ("System.ComponentModel.Design.BinaryEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] [MessagingDescription ("MsgBodyStream")] public Stream BodyStream { get { return delegateMessage.BodyStream; } set { delegateMessage.BodyStream = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [MessagingDescription ("MsgBodyType")] [ReadOnly (true)] public int BodyType { get { return delegateMessage.BodyType; } set { delegateMessage.BodyType = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgConnectorType")] public Guid ConnectorType { get { return delegateMessage.ConnectorType; } set { delegateMessage.ConnectorType = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgCorrelationId")] public string CorrelationId { get { return delegateMessage.CorrelationId; } set { delegateMessage.CorrelationId = value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [MessagingDescription("MsgDestinationQueue")] public MessageQueue DestinationQueue { get { return new MessageQueue(delegateMessage.DestinationQueue); } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgDestinationSymmetricKey")] public byte[] DestinationSymmetricKey { get { return delegateMessage.DestinationSymmetricKey; } set { delegateMessage.DestinationSymmetricKey = value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgDigitalSignature")] public byte[] DigitalSignature { get { return delegateMessage.DigitalSignature; } set { delegateMessage.DigitalSignature = value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgEncryptionAlgorithm")] public EncryptionAlgorithm EncryptionAlgorithm { get { return (EncryptionAlgorithm) delegateMessage.EncryptionAlgorithm; } set { delegateMessage.EncryptionAlgorithm = (Mono.Messaging.EncryptionAlgorithm) value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgExtension")] public byte[] Extension { get { return delegateMessage.Extension; } set { delegateMessage.Extension = value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [Browsable(false)] public IMessageFormatter Formatter { get { return formatter; } set { formatter = value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgHashAlgorithm")] public HashAlgorithm HashAlgorithm { get { return (HashAlgorithm) delegateMessage.HashAlgorithm; } set { delegateMessage.HashAlgorithm = (Mono.Messaging.HashAlgorithm) value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgId")] public string Id { get { return delegateMessage.Id; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [MessagingDescription("MsgIsFirstInTransaction")] public bool IsFirstInTransaction { get { return delegateMessage.IsFirstInTransaction; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [MessagingDescription("MsgIsLastInTransaction")] public bool IsLastInTransaction { get { return delegateMessage.IsLastInTransaction; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgLabel")] public string Label { get { return delegateMessage.Label; } set { delegateMessage.Label = value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [MessagingDescription("MsgMessageType")] public MessageType MessageType { get { return (MessageType) delegateMessage.MessageType; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgPriority")] public MessagePriority Priority { get { return (MessagePriority) delegateMessage.Priority; } set { delegateMessage.Priority = (Mono.Messaging.MessagePriority) value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgRecoverable")] public bool Recoverable { get { return delegateMessage.Recoverable; } set { delegateMessage.Recoverable = value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgResponseQueue")] public MessageQueue ResponseQueue { get { if (delegateMessage.ResponseQueue == null) return null; return new MessageQueue (delegateMessage.ResponseQueue); } set { delegateMessage.ResponseQueue = value.DelegateQueue; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [ReadOnly(true)] [MessagingDescription("MsgSenderCertificate")] public byte[] SenderCertificate { get { return delegateMessage.SenderCertificate; } set { delegateMessage.SenderCertificate = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [MessagingDescription ("MsgSenderId")] public byte[] SenderId { get { return delegateMessage.SenderId; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgSenderVersion")] public long SenderVersion { get { return delegateMessage.SenderVersion; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgSentTime")] public DateTime SentTime { get { return delegateMessage.SentTime; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [MessagingDescription ("MsgSourceMachine")] public string SourceMachine { get { return delegateMessage.SourceMachine; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgTimeToBeReceived")] [TypeConverter (typeof(TimeoutConverter))] public TimeSpan TimeToBeReceived { get { return delegateMessage.TimeToBeReceived; } set { delegateMessage.TimeToBeReceived = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgTimeToReachQueue")] [TypeConverter (typeof(TimeoutConverter))] public TimeSpan TimeToReachQueue { get { return delegateMessage.TimeToReachQueue; } set { delegateMessage.TimeToReachQueue = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [MessagingDescription ("MsgTransactionId")] public string TransactionId { get { return delegateMessage.TransactionId; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgTransactionStatusQueue")] public MessageQueue TransactionStatusQueue { get { return new MessageQueue(delegateMessage.TransactionStatusQueue); } set { delegateMessage.TransactionStatusQueue = value.DelegateQueue; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgUseAuthentication")] public bool UseAuthentication { get { return delegateMessage.UseAuthentication; } set { delegateMessage.UseAuthentication = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgUseDeadLetterQueue")] public bool UseDeadLetterQueue { get { return delegateMessage.UseDeadLetterQueue; } set { delegateMessage.UseDeadLetterQueue = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgUseEncryption")] public bool UseEncryption { get { return delegateMessage.UseEncryption; } set { delegateMessage.UseEncryption = value; } } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgUseJournalQueue")] public bool UseJournalQueue { get { return delegateMessage.UseJournalQueue; } set { delegateMessage.UseJournalQueue = value;} } [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)] [ReadOnly (true)] [MessagingDescription ("MsgUseTracing")] public bool UseTracing { get { return delegateMessage.UseTracing; } set { delegateMessage.UseTracing = value; } } internal IMessage DelegateMessage { get { return delegateMessage; } } #endregion //Properties internal static IMessage CreateMessage () { return MessagingProviderLocator.GetProvider () .CreateMessage (); } } }