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_ExchangeDeleteBody__
00029 #define qpid_framing_ExchangeDeleteBody__
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 ExchangeDeleteBody : public AMQMethodBody
00046 {
00047
00048
00049 u_int16_t ticket;
00050 string exchange;
00051 bool ifUnused;
00052 bool nowait;
00053
00054
00055 public:
00056 typedef boost::shared_ptr<ExchangeDeleteBody> shared_ptr;
00057
00058
00059
00060 ExchangeDeleteBody(ProtocolVersion& version,
00061 u_int16_t ticket,
00062 const string& exchange,
00063 bool ifUnused,
00064 bool nowait
00065 ) :
00066 AMQMethodBody(version),
00067 ticket(ticket),
00068 exchange(exchange),
00069 ifUnused(ifUnused),
00070 nowait(nowait)
00071 { }
00072
00073
00074 inline ExchangeDeleteBody(u_int8_t major, u_int8_t minor): AMQMethodBody(major, minor) {}
00075 inline ExchangeDeleteBody(ProtocolVersion& version): AMQMethodBody(version) {}
00076 virtual ~ExchangeDeleteBody() {}
00077
00078
00079
00080 inline u_int16_t getTicket() { return ticket; }
00081 inline const string& getExchange() { return exchange; }
00082 inline bool getIfUnused() { return ifUnused; }
00083 inline bool getNowait() { return nowait; }
00084
00085
00086
00087 inline void print(std::ostream& out) const
00088 {
00089 out << "ExchangeDelete: ";
00090 out << "ticket=" << ticket;
00091 out << "; exchange=" << exchange;
00092 out << "; ifUnused=" << ifUnused;
00093 out << "; nowait=" << nowait;
00094 }
00095
00096 inline u_int16_t amqpClassId() const
00097 {
00098 return 40;
00099 }
00100
00101 inline u_int16_t amqpMethodId() const
00102 {
00103 return 20;
00104 }
00105
00106 inline u_int32_t bodySize() const
00107 {
00108 u_int32_t size = 0;
00109 size += 2;
00110 size += 1 + exchange.length();
00111 size += 1;
00112 return size;
00113 }
00114
00115 inline void encodeContent(Buffer& buffer) const
00116 {
00117 buffer.putShort(ticket);
00118 buffer.putShortString(exchange);
00119 u_int8_t flags_3[1] = {0};
00120 flags_3[0] |= ifUnused << 0;
00121 flags_3[0] |= nowait << 1;
00122 buffer.putOctet(flags_3[0]);
00123 }
00124
00125 inline void decodeContent(Buffer& buffer)
00126 {
00127 ticket = buffer.getShort();
00128 buffer.getShortString(exchange);
00129 u_int8_t flags_3[1];
00130 flags_3[0] = buffer.getOctet();
00131 ifUnused = (1 << 0) & flags_3[0];
00132 nowait = (1 << 1) & flags_3[0];
00133 }
00134
00135 inline void invoke(AMQP_ServerOperations& target, u_int16_t channel)
00136 {
00137 target.getExchangeHandler()->delete_(channel,
00138 ticket,
00139 exchange,
00140 ifUnused,
00141 nowait
00142 );
00143 }
00144
00145
00146 };
00147
00148
00149 }
00150 }
00151
00152 #endif
00153