diff options
author | Gordon Sim <gsim@apache.org> | 2008-03-06 11:44:36 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2008-03-06 11:44:36 +0000 |
commit | b7c474ea80fce5d53236aeea9f74c9107da0152d (patch) | |
tree | 6d0a36c807c309cdebe3ba18dfe4c0bbbb75bfb8 /cpp/src/qpid/broker/MessageBuilder.cpp | |
parent | 7e162fa97ef0d430714b9630121a055fe5adece9 (diff) | |
download | qpid-python-b7c474ea80fce5d53236aeea9f74c9107da0152d.tar.gz |
Fix message delivery for 0-10 final codepath
Convert two more python tests to use 0-10 client
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@634229 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/MessageBuilder.cpp')
-rw-r--r-- | cpp/src/qpid/broker/MessageBuilder.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/cpp/src/qpid/broker/MessageBuilder.cpp b/cpp/src/qpid/broker/MessageBuilder.cpp index 269fc2d423..d00a474aee 100644 --- a/cpp/src/qpid/broker/MessageBuilder.cpp +++ b/cpp/src/qpid/broker/MessageBuilder.cpp @@ -37,29 +37,30 @@ MessageBuilder::MessageBuilder(MessageStore* const _store, uint64_t _stagingThre void MessageBuilder::handle(AMQFrame& frame) { + uint8_t type = frame.getBody()->type(); switch(state) { case METHOD: - checkType(METHOD_BODY, frame.getBody()->type()); + checkType(METHOD_BODY, type); state = HEADER; break; case HEADER: - switch (frame.getBody()->type()) { - case CONTENT_BODY: - //TODO: rethink how to handle non-existent headers... + if (type == 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: + AMQFrame header; + header.setBody(AMQHeaderBody()); + header.setBof(false); + header.setEof(false); + message->getFrames().append(header); + } else if (type != HEADER_BODY) { throw CommandInvalidException( QPID_MSG("Invalid frame sequence for message, expected header or content got " - << type_str(frame.getBody()->type()) << ")")); + << type_str(type) << ")")); } state = CONTENT; break; case CONTENT: - checkType(CONTENT_BODY, frame.getBody()->type()); + checkType(CONTENT_BODY, type); break; default: throw CommandInvalidException(QPID_MSG("Invalid frame sequence for message (state=" << state << ")")); |