00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <iostream>
00022 #include <amqp_types.h>
00023 #include <AMQBody.h>
00024 #include <Buffer.h>
00025 #include <AMQP_ServerOperations.h>
00026
00027 #ifndef _AMQMethodBody_
00028 #define _AMQMethodBody_
00029
00030 namespace qpid {
00031 namespace framing {
00032
00033 class AMQMethodBody : virtual public AMQBody
00034 {
00035 public:
00036 typedef boost::shared_ptr<AMQMethodBody> shared_ptr;
00037
00038 ProtocolVersion version;
00039 inline u_int8_t type() const { return METHOD_BODY; }
00040 inline u_int32_t size() const { return 4 + bodySize(); }
00041 inline AMQMethodBody(u_int8_t major, u_int8_t minor) : version(major, minor) {}
00042 inline AMQMethodBody(ProtocolVersion version) : version(version) {}
00043 inline virtual ~AMQMethodBody() {}
00044 virtual void print(std::ostream& out) const = 0;
00045 virtual u_int16_t amqpMethodId() const = 0;
00046 virtual u_int16_t amqpClassId() const = 0;
00047 virtual void invoke(AMQP_ServerOperations& target, u_int16_t channel);
00048 virtual void encodeContent(Buffer& buffer) const = 0;
00049 virtual void decodeContent(Buffer& buffer) = 0;
00050 virtual u_int32_t bodySize() const = 0;
00051 void encode(Buffer& buffer) const;
00052 void decode(Buffer& buffer, u_int32_t size);
00053 bool match(AMQMethodBody* other) const;
00054 };
00055
00056 std::ostream& operator<<(std::ostream& out, const AMQMethodBody& body);
00057
00058 }
00059 }
00060
00061
00062 #endif