diff options
Diffstat (limited to 'cpp/lib/common')
-rw-r--r-- | cpp/lib/common/framing/AMQFrame.cpp | 36 | ||||
-rw-r--r-- | cpp/lib/common/framing/AMQFrame.h | 10 |
2 files changed, 21 insertions, 25 deletions
diff --git a/cpp/lib/common/framing/AMQFrame.cpp b/cpp/lib/common/framing/AMQFrame.cpp index ca8bf41758..6fa5b9ae51 100644 --- a/cpp/lib/common/framing/AMQFrame.cpp +++ b/cpp/lib/common/framing/AMQFrame.cpp @@ -24,24 +24,22 @@ using namespace qpid::framing; -// This only works as a static as the version is currently fixed to 8.0 -// TODO: When the class is version-aware this will need to change -AMQP_MethodVersionMap AMQFrame::versionMap(8,0); - -// AMQP version management change - kpvdr 2-11-17 -// TODO: Make this class version-aware -AMQFrame::AMQFrame() {} - -// AMQP version management change - kpvdr 2006-11-17 -// TODO: Make this class version-aware -AMQFrame::AMQFrame(u_int16_t _channel, AMQBody* _body) : -channel(_channel), body(_body) + +AMQP_MethodVersionMap AMQFrame::versionMap; + + +AMQFrame::AMQFrame(qpid::framing::ProtocolVersion& _version): +version(_version) {} -// AMQP version management change - kpvdr 2006-11-17 -// TODO: Make this class version-aware -AMQFrame::AMQFrame(u_int16_t _channel, AMQBody::shared_ptr& _body) : -channel(_channel), body(_body) + +AMQFrame::AMQFrame(qpid::framing::ProtocolVersion& _version, u_int16_t _channel, AMQBody* _body) : +version(_version), channel(_channel), body(_body) +{} + + +AMQFrame::AMQFrame(qpid::framing::ProtocolVersion& _version, u_int16_t _channel, AMQBody::shared_ptr& _body) : +version(_version), channel(_channel), body(_body) {} AMQFrame::~AMQFrame() {} @@ -66,11 +64,7 @@ void AMQFrame::encode(Buffer& buffer) AMQBody::shared_ptr AMQFrame::createMethodBody(Buffer& buffer){ u_int16_t classId = buffer.getShort(); u_int16_t methodId = buffer.getShort(); - // AMQP version management change - kpvdr 2006-11-16 - // TODO: Make this class version-aware and link these hard-wired numbers to that version - AMQBody::shared_ptr body(versionMap.createMethodBody(classId, methodId, 8, 0)); - // Origianl stmt: - // AMQBody::shared_ptr body(createAMQMethodBody(classId, methodId)); + AMQBody::shared_ptr body(versionMap.createMethodBody(classId, methodId, version.getMajor(), version.getMinor())); return body; } diff --git a/cpp/lib/common/framing/AMQFrame.h b/cpp/lib/common/framing/AMQFrame.h index eb230c740c..d3c769087a 100644 --- a/cpp/lib/common/framing/AMQFrame.h +++ b/cpp/lib/common/framing/AMQFrame.h @@ -27,6 +27,7 @@ #include <AMQContentBody.h> #include <AMQHeartbeatBody.h> #include <AMQP_MethodVersionMap.h> +#include <AMQP_HighestVersion.h> #include <Buffer.h> #ifndef _AMQFrame_ @@ -39,16 +40,17 @@ namespace qpid { class AMQFrame : virtual public AMQDataBlock { static AMQP_MethodVersionMap versionMap; - + qpid::framing::ProtocolVersion version; + u_int16_t channel; u_int8_t type;//used if the body is decoded separately from the 'head' AMQBody::shared_ptr body; AMQBody::shared_ptr createMethodBody(Buffer& buffer); public: - AMQFrame(); - AMQFrame(u_int16_t channel, AMQBody* body); - AMQFrame(u_int16_t channel, AMQBody::shared_ptr& body); + AMQFrame(qpid::framing::ProtocolVersion& _version = highestProtocolVersion); + AMQFrame(qpid::framing::ProtocolVersion& _version, u_int16_t channel, AMQBody* body); + AMQFrame(qpid::framing::ProtocolVersion& _version, u_int16_t channel, AMQBody::shared_ptr& body); virtual ~AMQFrame(); virtual void encode(Buffer& buffer); virtual bool decode(Buffer& buffer); |