summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/MessageBuilder.h
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2007-08-28 19:38:17 +0000
committerGordon Sim <gsim@apache.org>2007-08-28 19:38:17 +0000
commit9e10f4ea3b2f8ab6650f635cada48e4735ca20d7 (patch)
tree26ad3b8dffa17fa665fe7a033a7c8092839df011 /cpp/src/qpid/broker/MessageBuilder.h
parent6b09696b216c090b512c6af92bf7976ae3407add (diff)
downloadqpid-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.h38
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
+