summaryrefslogtreecommitdiff
path: root/cpp/lib/common/framing/AMQFrame.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-01-12 18:24:13 +0000
committerAlan Conway <aconway@apache.org>2007-01-12 18:24:13 +0000
commita2f603a03b5a6451139d4fcb22fd6e34f55c11e5 (patch)
tree82bb1d533568e3d40f060f00cf7d70474dffee2c /cpp/lib/common/framing/AMQFrame.cpp
parent482ff88ac8fcaf14207db6e23d3b9981365dfd62 (diff)
downloadqpid-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.cpp24
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)