#ifndef QPID_CLIENT_MESSAGE_H #define QPID_CLIENT_MESSAGE_H /* * * 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. * */ #include "qpid/client/ClientImportExport.h" #include "qpid/framing/MessageProperties.h" #include "qpid/framing/DeliveryProperties.h" #include namespace qpid { namespace framing { class FieldTable; class SequenceNumber; // FIXME aconway 2009-04-17: remove with getID? } namespace client { class MessageImpl; /** * A message sent to or received from the broker. * * \ingroup clientapi * \details * *

Getting and setting message contents

* * * *

Getting and Setting Delivery Properties

* * * *

Getting and Setting Message Properties

* * * *

Getting and Setting Application Headers

* * * * */ class QPID_CLIENT_CLASS_EXTERN Message { public: /** Create a Message. *@param data Data for the message body. *@param routingKey Passed to the exchange that routes the message. */ QPID_CLIENT_EXTERN Message( const std::string& data=std::string(), const std::string& routingKey=std::string()); Message(MessageImpl*); ///< @internal QPID_CLIENT_EXTERN Message(const Message&); QPID_CLIENT_EXTERN ~Message(); QPID_CLIENT_EXTERN Message& operator=(const Message&); QPID_CLIENT_EXTERN void swap(Message&); QPID_CLIENT_EXTERN void setData(const std::string&); QPID_CLIENT_EXTERN const std::string& getData() const; QPID_CLIENT_EXTERN std::string& getData(); QPID_CLIENT_EXTERN void appendData(const std::string&); QPID_CLIENT_EXTERN bool hasMessageProperties() const; QPID_CLIENT_EXTERN framing::MessageProperties& getMessageProperties(); QPID_CLIENT_EXTERN const framing::MessageProperties& getMessageProperties() const; QPID_CLIENT_EXTERN bool hasDeliveryProperties() const; QPID_CLIENT_EXTERN framing::DeliveryProperties& getDeliveryProperties(); QPID_CLIENT_EXTERN const framing::DeliveryProperties& getDeliveryProperties() const; /** The destination of messages sent to the broker is the exchange * name. The destination of messages received from the broker is * the delivery tag identifyig the local subscription (often this * is the name of the subscribed queue.) */ QPID_CLIENT_EXTERN std::string getDestination() const; /** Check the redelivered flag. */ QPID_CLIENT_EXTERN bool isRedelivered() const; /** Set the redelivered flag. */ QPID_CLIENT_EXTERN void setRedelivered(bool redelivered); /** Get a modifyable reference to the message headers. */ QPID_CLIENT_EXTERN framing::FieldTable& getHeaders(); /** Get a non-modifyable reference to the message headers. */ QPID_CLIENT_EXTERN const framing::FieldTable& getHeaders() const; // FIXME aconway 2009-04-17: does this need to be in public API? ///@internal QPID_CLIENT_EXTERN const framing::SequenceNumber& getId() const; private: MessageImpl* impl; friend class MessageImpl; // Helper template for implementation }; }} #endif /*!QPID_CLIENT_MESSAGE_H*/