diff options
author | Gordon Sim <gsim@apache.org> | 2007-08-28 19:38:17 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2007-08-28 19:38:17 +0000 |
commit | 9e10f4ea3b2f8ab6650f635cada48e4735ca20d7 (patch) | |
tree | 26ad3b8dffa17fa665fe7a033a7c8092839df011 /cpp/src/qpid/broker/MessageBuilder.h | |
parent | 6b09696b216c090b512c6af92bf7976ae3407add (diff) | |
download | qpid-python-9e10f4ea3b2f8ab6650f635cada48e4735ca20d7.tar.gz |
Updated message.transfer encoding to use header and content segments (including new structs).
Unified more between the basic and message classes messages.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@570538 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/MessageBuilder.h')
-rw-r--r-- | cpp/src/qpid/broker/MessageBuilder.h | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/cpp/src/qpid/broker/MessageBuilder.h b/cpp/src/qpid/broker/MessageBuilder.h index 18e85d7383..134f93b68f 100644 --- a/cpp/src/qpid/broker/MessageBuilder.h +++ b/cpp/src/qpid/broker/MessageBuilder.h @@ -21,37 +21,35 @@ #ifndef _MessageBuilder_ #define _MessageBuilder_ -#include <memory> -#include "qpid/QpidError.h" -#include "BrokerExchange.h" -#include "BrokerMessage.h" -#include "MessageStore.h" -#include "qpid/framing/AMQContentBody.h" -#include "qpid/framing/AMQHeaderBody.h" -#include "qpid/framing/BasicPublishBody.h" -#include "CompletionHandler.h" +#include "boost/shared_ptr.hpp" +#include "qpid/framing/FrameHandler.h" +#include "qpid/framing/SequenceNumber.h" namespace qpid { namespace broker { - class MessageBuilder{ + class Message; + class MessageStore; + + class MessageBuilder : public framing::FrameHandler{ public: - MessageBuilder(CompletionHandler* _handler, - MessageStore* const store = 0, - uint64_t stagingThreshold = 0); - void initialise(Message::shared_ptr& msg); - void setHeader(framing::AMQHeaderBody* header); - void addContent(framing::AMQContentBody* content); - Message::shared_ptr getMessage() { return message; } + MessageBuilder(MessageStore* const store = 0, uint64_t stagingThreshold = 0); + void handle(framing::AMQFrame& frame); + boost::shared_ptr<Message> getMessage() { return message; } + void start(const framing::SequenceNumber& id); + void end(); private: - Message::shared_ptr message; - CompletionHandler* handler; + enum State {DORMANT, METHOD, HEADER, CONTENT}; + State state; + boost::shared_ptr<Message> message; MessageStore* const store; const uint64_t stagingThreshold; + bool staging; - void route(); + void checkType(uint8_t expected, uint8_t actual); }; } } #endif + |