| /* |
| * 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. |
| */ |
| |
| #ifndef _CMS_MESSAGEPRODUCER_H_ |
| #define _CMS_MESSAGEPRODUCER_H_ |
| |
| #include <cms/Config.h> |
| #include <cms/AsyncCallback.h> |
| #include <cms/Message.h> |
| #include <cms/Destination.h> |
| #include <cms/Closeable.h> |
| #include <cms/CMSException.h> |
| #include <cms/InvalidDestinationException.h> |
| #include <cms/MessageFormatException.h> |
| #include <cms/UnsupportedOperationException.h> |
| #include <cms/DeliveryMode.h> |
| |
| namespace cms { |
| |
| class MessageTransformer; |
| |
| /** |
| * A client uses a <code>MessageProducer</code> object to send messages to |
| * a Destination. A <code>MessageProducer</code> object is created by |
| * passing a <code>Destination</code> object to a message-producer creation |
| * method supplied by a session. |
| * |
| * A client also has the option of creating a message producer without |
| * supplying a destination. In this case, a Destination must be provided |
| * with every send operation. A typical use for this kind of message |
| * producer is to send replies to requests using the request's CMSReplyTo |
| * destination. |
| * |
| * A client can specify a default delivery mode, priority, and time to live |
| * for messages sent by a message producer. It can also specify the |
| * delivery mode, priority, and time to live for an individual message.<br> |
| * |
| * A client can specify a time-to-live value in milliseconds for each |
| * message it sends. This value defines a message expiration time that is |
| * the sum of the message's time-to-live and the GMT when it is sent (for |
| * transacted sends, this is the time the client sends the message, not the |
| * time the transaction is committed). |
| * |
| * @since 1.0 |
| */ |
| class CMS_API MessageProducer : public Closeable { |
| public: |
| |
| virtual ~MessageProducer(); |
| |
| /** |
| * Sends the message to the default producer destination, but does not take ownership |
| * of the message, caller must still destroy it. Uses default values for deliveryMode, |
| * priority, and time to live. |
| * |
| * @param message |
| * The message to be sent. |
| * |
| * @throws CMSException - if an internal error occurs while sending the message. |
| * @throws MessageFormatException - if an Invalid Message is given. |
| * @throws InvalidDestinationException - if a client uses this method with a |
| * MessageProducer with an invalid destination. |
| * @throws UnsupportedOperationException - if a client uses this method with a |
| * MessageProducer that did not specify a destination at creation time. |
| */ |
| virtual void send(Message* message) = 0; |
| |
| /** |
| * Sends the message to the default producer destination, but does not take ownership |
| * of the message, caller must still destroy it. Uses default values for deliveryMode, |
| * priority, and time to live. If the AsyncCallback parameter is set this method will |
| * return immediately and the call-back will be notified once the CMS Provider as |
| * acknowledge receipt of the Message or an Error occurs. |
| * |
| * @param message |
| * The message to be sent. |
| * @param onComplete |
| * The AsyncCallback instance to notify on send complete or error, caller |
| * retains ownership of this pointer and must destroy it only after the |
| * send completes or the connection is closed. |
| * |
| * @throws CMSException - if an internal error occurs while sending the message. |
| * @throws MessageFormatException - if an Invalid Message is given. |
| * @throws InvalidDestinationException - if a client uses this method with a |
| * MessageProducer with an invalid destination. |
| * @throws UnsupportedOperationException - if a client uses this method with a |
| * MessageProducer that did not specify a destination at creation time. |
| */ |
| virtual void send(Message* message, AsyncCallback* onComplete) = 0; |
| |
| /** |
| * Sends the message to the default producer destination, but does |
| * not take ownership of the message, caller must still destroy it. |
| * |
| * @param message |
| * The message to be sent. |
| * @param deliveryMode |
| * The delivery mode to be used. |
| * @param priority |
| * The priority for this message. |
| * @param timeToLive |
| * The time to live value for this message in milliseconds. |
| * |
| * @throws CMSException - if an internal error occurs while sending the message. |
| * @throws MessageFormatException - if an Invalid Message is given. |
| * @throws InvalidDestinationException - if a client uses this method with a |
| * MessageProducer with an invalid destination. |
| * @throws UnsupportedOperationException - if a client uses this method with a |
| * MessageProducer that did not specify a destination at creation time. |
| */ |
| virtual void send(Message* message, int deliveryMode, int priority, long long timeToLive) = 0; |
| |
| /** |
| * Sends the message to the default producer destination, but does not take ownership |
| * of the message, caller must still destroy it. If the AsyncCallback parameter is set |
| * this method will return immediately and the call-back will be notified once the CMS |
| * Provider as acknowledge receipt of the Message or an Error occurs. |
| * |
| * @param message |
| * The message to be sent. |
| * @param deliveryMode |
| * The delivery mode to be used. |
| * @param priority |
| * The priority for this message. |
| * @param timeToLive |
| * The time to live value for this message in milliseconds. |
| * @param onComplete |
| * The AsyncCallback instance to notify on send complete or error, caller |
| * retains ownership of this pointer and must destroy it only after the |
| * send completes or the connection is closed. |
| * |
| * @throws CMSException - if an internal error occurs while sending the message. |
| * @throws MessageFormatException - if an Invalid Message is given. |
| * @throws InvalidDestinationException - if a client uses this method with a |
| * MessageProducer with an invalid destination. |
| * @throws UnsupportedOperationException - if a client uses this method with a |
| * MessageProducer that did not specify a destination at creation time. |
| */ |
| virtual void send(Message* message, int deliveryMode, int priority, |
| long long timeToLive, AsyncCallback* onComplete) = 0; |
| |
| /** |
| * Sends the message to the designated destination, but does |
| * not take ownership of the message, caller must still destroy it. |
| * Uses default values for deliveryMode, priority, and time to live. |
| * |
| * @param destination |
| * The destination on which to send the message |
| * @param message |
| * the message to be sent. |
| * |
| * @throws CMSException - if an internal error occurs while sending the message. |
| * @throws MessageFormatException - if an Invalid Message is given. |
| * @throws InvalidDestinationException - if a client uses this method with a |
| * MessageProducer with an invalid destination. |
| * @throws UnsupportedOperationException - if a client uses this method with a |
| * MessageProducer that did not specify a destination at creation time. |
| */ |
| virtual void send(const Destination* destination, Message* message) = 0; |
| |
| /** |
| * Sends the message to the designated destination, but does not take ownership of the |
| * message, caller must still destroy it. Uses default values for deliveryMode, priority, |
| * and time to live. If the AsyncCallback parameter is set this method will return |
| * immediately and the call-back will be notified once the CMS Provider as acknowledge |
| * receipt of the Message or an Error occurs. |
| * |
| * @param destination |
| * The destination on which to send the message |
| * @param message |
| * the message to be sent. |
| * @param onComplete |
| * The AsyncCallback instance to notify on send complete or error, caller |
| * retains ownership of this pointer and must destroy it only after the |
| * send completes or the connection is closed. |
| * |
| * @throws CMSException - if an internal error occurs while sending the message. |
| * @throws MessageFormatException - if an Invalid Message is given. |
| * @throws InvalidDestinationException - if a client uses this method with a |
| * MessageProducer with an invalid destination. |
| * @throws UnsupportedOperationException - if a client uses this method with a |
| * MessageProducer that did not specify a destination at creation time. |
| */ |
| virtual void send(const Destination* destination, Message* message, AsyncCallback* onComplete) = 0; |
| |
| /** |
| * Sends the message to the designated destination, but does not take ownership |
| * of the message, caller must still destroy it. |
| * |
| * @param destination |
| * The destination on which to send the message |
| * @param message |
| * The message to be sent. |
| * @param deliveryMode |
| * The delivery mode to be used. |
| * @param priority |
| * The priority for this message. |
| * @param timeToLive |
| * The time to live value for this message in milliseconds. |
| * |
| * @throws CMSException - if an internal error occurs while sending the message. |
| * @throws MessageFormatException - if an Invalid Message is given. |
| * @throws InvalidDestinationException - if a client uses this method with a |
| * MessageProducer with an invalid destination. |
| * @throws UnsupportedOperationException - if a client uses this method with a |
| * MessageProducer that did not specify a destination at creation time. |
| */ |
| virtual void send(const Destination* destination, Message* message, |
| int deliveryMode, int priority, long long timeToLive) = 0; |
| |
| /** |
| * Sends the message to the designated destination, but does not take ownership |
| * of the message, caller must still destroy it. If the AsyncCallback parameter |
| * is set this method will return immediately and the call-back will be notified |
| * once the CMS Provider as acknowledge receipt of the Message or an Error occurs. |
| * |
| * @param destination |
| * The destination on which to send the message |
| * @param message |
| * The message to be sent. |
| * @param deliveryMode |
| * The delivery mode to be used. |
| * @param priority |
| * The priority for this message. |
| * @param timeToLive |
| * The time to live value for this message in milliseconds. |
| * @param onComplete |
| * The AsyncCallback instance to notify on send complete or error, caller |
| * retains ownership of this pointer and must destroy it only after the |
| * send completes or the connection is closed. |
| * |
| * @throws CMSException - if an internal error occurs while sending the message. |
| * @throws MessageFormatException - if an Invalid Message is given. |
| * @throws InvalidDestinationException - if a client uses this method with a |
| * MessageProducer with an invalid destination. |
| * @throws UnsupportedOperationException - if a client uses this method with a |
| * MessageProducer that did not specify a destination at creation time. |
| */ |
| virtual void send(const Destination* destination, Message* message, int deliveryMode, |
| int priority, long long timeToLive, AsyncCallback* onComplete) = 0; |
| |
| /** |
| * Sets the delivery mode for this Producer |
| * |
| * @param mode |
| * The DeliveryMode |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual void setDeliveryMode(int mode) = 0; |
| |
| /** |
| * Gets the delivery mode for this Producer |
| * |
| * @return The DeliveryMode |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual int getDeliveryMode() const = 0; |
| |
| /** |
| * Sets if Message Ids are disabled for this Producer |
| * |
| * @param value |
| * boolean indicating enable / disable (true / false) |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual void setDisableMessageID(bool value) = 0; |
| |
| /** |
| * Gets if Message Ids are disabled for this Producer |
| * |
| * @return boolean indicating enable / disable (true / false) |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual bool getDisableMessageID() const = 0; |
| |
| /** |
| * Sets if Message Time Stamps are disabled for this Producer |
| * @param value - boolean indicating enable / disable (true / false) |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual void setDisableMessageTimeStamp(bool value) = 0; |
| |
| /** |
| * Gets if Message Time Stamps are disabled for this Producer |
| * |
| * @return boolean indicating enable / disable (true / false) |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual bool getDisableMessageTimeStamp() const = 0; |
| |
| /** |
| * Sets the Priority that this Producers sends messages at |
| * |
| * @param priority |
| * int value for Priority level |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual void setPriority(int priority) = 0; |
| |
| /** |
| * Gets the Priority level that this producer sends messages at |
| * |
| * @return int based priority level |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual int getPriority() const = 0; |
| |
| /** |
| * Sets the Time to Live that this Producers sends messages with. This |
| * value will be used if the time to live is not specified via the |
| * send method. |
| * |
| * @param time |
| * default time to live value in milliseconds |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual void setTimeToLive(long long time) = 0; |
| |
| /** |
| * Gets the Time to Live that this producer sends messages with |
| * |
| * @return Time to live value in milliseconds |
| * |
| * @throws CMSException - if an internal error occurs. |
| */ |
| virtual long long getTimeToLive() const = 0; |
| |
| /** |
| * Set an MessageTransformer instance that is applied to all cms::Message objects before they |
| * are sent on to the CMS bus. |
| * |
| * The CMS code never takes ownership of the MessageTransformer pointer which implies that |
| * the client code must ensure that the object remains valid for the lifetime of the CMS |
| * object to which the MessageTransformer has been assigned. |
| * |
| * @param transformer |
| * Pointer to the cms::MessageTransformer to apply on each cms:;MessageSend. |
| */ |
| virtual void setMessageTransformer(cms::MessageTransformer* transformer) = 0; |
| |
| /** |
| * Gets the currently configured MessageTransformer for this MessageProducer. |
| * |
| * @returns the pointer to the currently set cms::MessageTransformer. |
| */ |
| virtual cms::MessageTransformer* getMessageTransformer() const = 0; |
| |
| }; |
| |
| } |
| |
| #endif /*_CMS_MESSAGEPRODUCER_H_*/ |