00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef qpid_framing_TestIntegerBody__
00029 #define qpid_framing_TestIntegerBody__
00030
00031 #include <string>
00032 #include <sstream>
00033
00034 #include <amqp_types.h>
00035 #include <AMQMethodBody.h>
00036 #include <Buffer.h>
00037 #include <FieldTable.h>
00038
00039 namespace qpid
00040 {
00041 namespace framing
00042 {
00043
00044
00045 class TestIntegerBody : public AMQMethodBody
00046 {
00047
00048
00049 u_int8_t integer1;
00050 u_int16_t integer2;
00051 u_int32_t integer3;
00052 u_int64_t integer4;
00053 u_int8_t operation;
00054
00055
00056 public:
00057 typedef boost::shared_ptr<TestIntegerBody> shared_ptr;
00058
00059
00060
00061 TestIntegerBody(ProtocolVersion& version,
00062 u_int8_t integer1,
00063 u_int16_t integer2,
00064 u_int32_t integer3,
00065 u_int64_t integer4,
00066 u_int8_t operation
00067 ) :
00068 AMQMethodBody(version),
00069 integer1(integer1),
00070 integer2(integer2),
00071 integer3(integer3),
00072 integer4(integer4),
00073 operation(operation)
00074 { }
00075
00076
00077 inline TestIntegerBody(u_int8_t major, u_int8_t minor): AMQMethodBody(major, minor) {}
00078 inline TestIntegerBody(ProtocolVersion& version): AMQMethodBody(version) {}
00079 virtual ~TestIntegerBody() {}
00080
00081
00082
00083 inline u_int8_t getInteger1() { return integer1; }
00084 inline u_int16_t getInteger2() { return integer2; }
00085 inline u_int32_t getInteger3() { return integer3; }
00086 inline u_int64_t getInteger4() { return integer4; }
00087 inline u_int8_t getOperation() { return operation; }
00088
00089
00090
00091 inline void print(std::ostream& out) const
00092 {
00093 out << "TestInteger: ";
00094 out << "integer1=" << (int)integer1;
00095 out << "; integer2=" << integer2;
00096 out << "; integer3=" << integer3;
00097 out << "; integer4=" << integer4;
00098 out << "; operation=" << (int)operation;
00099 }
00100
00101 inline u_int16_t amqpClassId() const
00102 {
00103 return 120;
00104 }
00105
00106 inline u_int16_t amqpMethodId() const
00107 {
00108 return 10;
00109 }
00110
00111 inline u_int32_t bodySize() const
00112 {
00113 u_int32_t size = 0;
00114 size += 1;
00115 size += 2;
00116 size += 4;
00117 size += 8;
00118 size += 1;
00119 return size;
00120 }
00121
00122 inline void encodeContent(Buffer& buffer) const
00123 {
00124 buffer.putOctet(integer1);
00125 buffer.putShort(integer2);
00126 buffer.putLong(integer3);
00127 buffer.putLongLong(integer4);
00128 buffer.putOctet(operation);
00129 }
00130
00131 inline void decodeContent(Buffer& buffer)
00132 {
00133 integer1 = buffer.getOctet();
00134 integer2 = buffer.getShort();
00135 integer3 = buffer.getLong();
00136 integer4 = buffer.getLongLong();
00137 operation = buffer.getOctet();
00138 }
00139
00140 inline void invoke(AMQP_ServerOperations& target, u_int16_t channel)
00141 {
00142 target.getTestHandler()->integer(channel,
00143 integer1,
00144 integer2,
00145 integer3,
00146 integer4,
00147 operation
00148 );
00149 }
00150
00151
00152 };
00153
00154
00155 }
00156 }
00157
00158 #endif
00159