diff options
author | Alan Conway <aconway@apache.org> | 2007-01-12 18:24:13 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2007-01-12 18:24:13 +0000 |
commit | a2f603a03b5a6451139d4fcb22fd6e34f55c11e5 (patch) | |
tree | 82bb1d533568e3d40f060f00cf7d70474dffee2c /cpp/lib/common/framing/AMQFrame.cpp | |
parent | 482ff88ac8fcaf14207db6e23d3b9981365dfd62 (diff) | |
download | qpid-python-a2f603a03b5a6451139d4fcb22fd6e34f55c11e5.tar.gz |
Use amqp 0-9 request/response framing in broker and client.
Updated: framing, client, broker, generated code.
The new request/response data (request-id etc.) is not yet being used,
we are simply running the old Basic protocol over request/response frames.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/qpid.0-9@495679 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/lib/common/framing/AMQFrame.cpp')
-rw-r--r-- | cpp/lib/common/framing/AMQFrame.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/cpp/lib/common/framing/AMQFrame.cpp b/cpp/lib/common/framing/AMQFrame.cpp index 9ebf4c27ad..8ac5199c45 100644 --- a/cpp/lib/common/framing/AMQFrame.cpp +++ b/cpp/lib/common/framing/AMQFrame.cpp @@ -69,13 +69,13 @@ bool AMQFrame::decode(Buffer& buffer) { if(buffer.available() < 7) return false; buffer.record(); - u_int32_t bufSize = decodeHead(buffer); - - if(buffer.available() < bufSize + 1){ + u_int32_t frameSize = decodeHead(buffer); + + if(buffer.available() < frameSize + 1){ buffer.restore(); return false; } - decodeBody(buffer, bufSize); + decodeBody(buffer, frameSize); u_int8_t end = buffer.getOctet(); if(end != 0xCE) THROW_QPID_ERROR(FRAMING_ERROR, "Frame end not found"); return true; @@ -87,13 +87,19 @@ u_int32_t AMQFrame::decodeHead(Buffer& buffer){ return buffer.getLong(); } -void AMQFrame::decodeBody(Buffer& buffer, uint32_t bufSize) +void AMQFrame::decodeBody(Buffer& buffer, uint32_t size) { switch(type) { case METHOD_BODY: body = AMQMethodBody::create(versionMap, version, buffer); break; + case REQUEST_BODY: + body = AMQRequestBody::create(versionMap, version, buffer); + break; + case RESPONSE_BODY: + body = AMQResponseBody::create(versionMap, version, buffer); + break; case HEADER_BODY: body = AMQBody::shared_ptr(new AMQHeaderBody()); break; @@ -103,19 +109,13 @@ void AMQFrame::decodeBody(Buffer& buffer, uint32_t bufSize) case HEARTBEAT_BODY: body = AMQBody::shared_ptr(new AMQHeartbeatBody()); break; - case REQUEST_BODY: - body = AMQBody::shared_ptr(new AMQRequestBody(versionMap, version)); - break; - case RESPONSE_BODY: - body = AMQBody::shared_ptr(new AMQResponseBody(versionMap, version)); - break; default: assert(0); string msg("Unknown body type: "); msg += type; THROW_QPID_ERROR(FRAMING_ERROR, msg); } - body->decode(buffer, bufSize); + body->decode(buffer, size); } std::ostream& qpid::framing::operator<<(std::ostream& out, const AMQFrame& t) |