/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using Apache.NMS.ActiveMQ.State; using System; using Apache.NMS.Util; namespace Apache.NMS.ActiveMQ.Commands { /* * * Command code for OpenWire format for Message * * NOTE!: This file is auto generated - do not modify! * if you need to make a change, please see the Java Classes * in the nms-activemq-openwire-generator module * */ public class Message : BaseCommand, MessageReference, MarshallAware, ICloneable { public const byte ID_MESSAGE = 0; ProducerId producerId; ActiveMQDestination destination; TransactionId transactionId; ActiveMQDestination originalDestination; MessageId messageId; TransactionId originalTransactionId; string groupID; int groupSequence; string correlationId; bool persistent; long expiration; byte priority; ActiveMQDestination replyTo; long timestamp; string type; byte[] content; byte[] marshalledProperties; DataStructure dataStructure; ConsumerId targetConsumerId; bool compressed; int redeliveryCounter; BrokerId[] brokerPath; long arrival; string userID; bool recievedByDFBridge; bool droppable; BrokerId[] cluster; long brokerInTime; long brokerOutTime; bool jMSXGroupFirstForConsumer; private bool readOnlyMsgProperties; private bool readOnlyMsgBody; public const int DEFAULT_MINIMUM_MESSAGE_SIZE = 1024; /// /// /// Get the unique identifier that this object and its own /// Marshaler share. /// /// public override byte GetDataStructureType() { return ID_MESSAGE; } /// /// /// Clone this object and return a new instance that the caller now owns. /// /// public override Object Clone() { // Since we are a derived class use the base's Clone() // to perform the shallow copy. Since it is shallow it // will include our derived class. Since we are derived, // this method is an override. Message o = (Message) base.Clone(); if( this.messageId != null ) { o.MessageId = (MessageId) this.messageId.Clone(); } return o; } /// /// /// Returns a string containing the information for this DataStructure /// such as its type and value of its elements. /// /// public override string ToString() { return GetType().Name + "[ " + "commandId = " + this.CommandId + ", " + "responseRequired = " + this.ResponseRequired + ", " + "ProducerId = " + ProducerId + ", " + "Destination = " + Destination + ", " + "TransactionId = " + TransactionId + ", " + "OriginalDestination = " + OriginalDestination + ", " + "MessageId = " + MessageId + ", " + "OriginalTransactionId = " + OriginalTransactionId + ", " + "GroupID = " + GroupID + ", " + "GroupSequence = " + GroupSequence + ", " + "CorrelationId = " + CorrelationId + ", " + "Persistent = " + Persistent + ", " + "Expiration = " + Expiration + ", " + "Priority = " + Priority + ", " + "ReplyTo = " + ReplyTo + ", " + "Timestamp = " + Timestamp + ", " + "Type = " + Type + ", " + "Content = " + Content + ", " + "MarshalledProperties = " + MarshalledProperties + ", " + "DataStructure = " + DataStructure + ", " + "TargetConsumerId = " + TargetConsumerId + ", " + "Compressed = " + Compressed + ", " + "RedeliveryCounter = " + RedeliveryCounter + ", " + "BrokerPath = " + BrokerPath + ", " + "Arrival = " + Arrival + ", " + "UserID = " + UserID + ", " + "RecievedByDFBridge = " + RecievedByDFBridge + ", " + "Droppable = " + Droppable + ", " + "Cluster = " + Cluster + ", " + "BrokerInTime = " + BrokerInTime + ", " + "BrokerOutTime = " + BrokerOutTime + ", " + "JMSXGroupFirstForConsumer = " + JMSXGroupFirstForConsumer + " ]"; } public virtual int Size() { int size = DEFAULT_MINIMUM_MESSAGE_SIZE; if(marshalledProperties != null) { size += marshalledProperties.Length; } if(content != null) { size += content.Length; } return size; } public virtual void OnSend() { this.ReadOnlyProperties = true; this.ReadOnlyBody = true; } public virtual void OnMessageRollback() { this.redeliveryCounter++; } public bool IsExpired() { return this.expiration == 0 ? false : DateTime.UtcNow > DateUtils.ToDateTimeUtc(this.expiration); } public ProducerId ProducerId { get { return producerId; } set { this.producerId = value; } } public ActiveMQDestination Destination { get { return destination; } set { this.destination = value; } } public TransactionId TransactionId { get { return transactionId; } set { this.transactionId = value; } } public ActiveMQDestination OriginalDestination { get { return originalDestination; } set { this.originalDestination = value; } } public MessageId MessageId { get { return messageId; } set { this.messageId = value; } } public TransactionId OriginalTransactionId { get { return originalTransactionId; } set { this.originalTransactionId = value; } } public string GroupID { get { return groupID; } set { this.groupID = value; } } public int GroupSequence { get { return groupSequence; } set { this.groupSequence = value; } } public string CorrelationId { get { return correlationId; } set { this.correlationId = value; } } public bool Persistent { get { return persistent; } set { this.persistent = value; } } public long Expiration { get { return expiration; } set { this.expiration = value; } } public byte Priority { get { return priority; } set { this.priority = value; } } public ActiveMQDestination ReplyTo { get { return replyTo; } set { this.replyTo = value; } } public long Timestamp { get { return timestamp; } set { this.timestamp = value; } } public string Type { get { return type; } set { this.type = value; } } public byte[] Content { get { return content; } set { this.content = value; } } public byte[] MarshalledProperties { get { return marshalledProperties; } set { this.marshalledProperties = value; } } public DataStructure DataStructure { get { return dataStructure; } set { this.dataStructure = value; } } public ConsumerId TargetConsumerId { get { return targetConsumerId; } set { this.targetConsumerId = value; } } public bool Compressed { get { return compressed; } set { this.compressed = value; } } public int RedeliveryCounter { get { return redeliveryCounter; } set { this.redeliveryCounter = value; } } public BrokerId[] BrokerPath { get { return brokerPath; } set { this.brokerPath = value; } } public long Arrival { get { return arrival; } set { this.arrival = value; } } public string UserID { get { return userID; } set { this.userID = value; } } public bool RecievedByDFBridge { get { return recievedByDFBridge; } set { this.recievedByDFBridge = value; } } public bool Droppable { get { return droppable; } set { this.droppable = value; } } public BrokerId[] Cluster { get { return cluster; } set { this.cluster = value; } } public long BrokerInTime { get { return brokerInTime; } set { this.brokerInTime = value; } } public long BrokerOutTime { get { return brokerOutTime; } set { this.brokerOutTime = value; } } public bool JMSXGroupFirstForConsumer { get { return jMSXGroupFirstForConsumer; } set { this.jMSXGroupFirstForConsumer = value; } } public virtual bool ReadOnlyProperties { get { return this.readOnlyMsgProperties; } set { this.readOnlyMsgProperties = value; } } public virtual bool ReadOnlyBody { get { return this.readOnlyMsgBody; } set { this.readOnlyMsgBody = value; } } /// /// /// Return an answer of true to the isMessage() query. /// /// public override bool IsMessage { get { return true; } } /// /// /// Allows a Visitor to visit this command and return a response to the /// command based on the command type being visited. The command will call /// the proper processXXX method in the visitor. /// /// public override Response Visit(ICommandVisitor visitor) { return visitor.ProcessMessage(this); } }; }