summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/MessageBuilder.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2008-03-04 20:42:19 +0000
committerGordon Sim <gsim@apache.org>2008-03-04 20:42:19 +0000
commitd47950ff7a88e4684d1e07e334e705776ed569a7 (patch)
tree23f00efd6c9009f158c0b9643746dd16fd8adbf6 /cpp/src/qpid/broker/MessageBuilder.cpp
parentcf9a1617599bb680deef2bab76fc6022f7dad50b (diff)
downloadqpid-python-d47950ff7a88e4684d1e07e334e705776ed569a7.tar.gz
Further updates to support final 0-10 spec
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@633627 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/MessageBuilder.cpp')
-rw-r--r--cpp/src/qpid/broker/MessageBuilder.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/MessageBuilder.cpp b/cpp/src/qpid/broker/MessageBuilder.cpp
index 376a321d2d..269fc2d423 100644
--- a/cpp/src/qpid/broker/MessageBuilder.cpp
+++ b/cpp/src/qpid/broker/MessageBuilder.cpp
@@ -28,6 +28,10 @@
using namespace qpid::broker;
using namespace qpid::framing;
+namespace
+{
+ std::string type_str(uint8_t type);
+}
MessageBuilder::MessageBuilder(MessageStore* const _store, uint64_t _stagingThreshold) :
state(DORMANT), store(_store), stagingThreshold(_stagingThreshold), staging(false) {}
@@ -39,7 +43,19 @@ void MessageBuilder::handle(AMQFrame& frame)
state = HEADER;
break;
case HEADER:
- checkType(HEADER_BODY, frame.getBody()->type());
+ switch (frame.getBody()->type()) {
+ case CONTENT_BODY:
+ //TODO: rethink how to handle non-existent headers...
+ //didn't get a header: add in a dummy
+ message->getFrames().append(AMQFrame(AMQHeaderBody()));
+ break;
+ case HEADER_BODY:
+ break;
+ default:
+ throw CommandInvalidException(
+ QPID_MSG("Invalid frame sequence for message, expected header or content got "
+ << type_str(frame.getBody()->type()) << ")"));
+ }
state = CONTENT;
break;
case CONTENT: