00001 #ifndef QPID_AMQP_0_10_COMMANDHOLDER_H
00002 #define QPID_AMQP_0_10_COMMANDHOLDER_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00028
00029
00030 #include "qpid/amqp_0_10/ApplyCommand.h"
00031 #include "qpid/amqp_0_10/Holder.h"
00032
00033 namespace qpid {
00034 namespace amqp_0_10 {
00035
00036
00037 namespace command_max {
00038
00039 template <class M, class X> struct Max
00040 {
00041 static const size_t max=(M::max > sizeof(X)) ? M::max : sizeof(X);
00042 };
00043 struct Max000 { static const size_t max=0; };
00044 typedef Max<Max000, execution::Sync> Max001;
00045 typedef Max<Max001, execution::Result> Max002;
00046 typedef Max<Max002, execution::Exception> Max003;
00047 typedef Max<Max003, message::Transfer> Max004;
00048 typedef Max<Max004, message::Accept> Max005;
00049 typedef Max<Max005, message::Reject> Max006;
00050 typedef Max<Max006, message::Release> Max007;
00051 typedef Max<Max007, message::Acquire> Max008;
00052 typedef Max<Max008, message::Resume> Max009;
00053 typedef Max<Max009, message::Subscribe> Max010;
00054 typedef Max<Max010, message::Cancel> Max011;
00055 typedef Max<Max011, message::SetFlowMode> Max012;
00056 typedef Max<Max012, message::Flow> Max013;
00057 typedef Max<Max013, message::Flush> Max014;
00058 typedef Max<Max014, message::Stop> Max015;
00059 typedef Max<Max015, tx::Select> Max016;
00060 typedef Max<Max016, tx::Commit> Max017;
00061 typedef Max<Max017, tx::Rollback> Max018;
00062 typedef Max<Max018, dtx::Select> Max019;
00063 typedef Max<Max019, dtx::Start> Max020;
00064 typedef Max<Max020, dtx::End> Max021;
00065 typedef Max<Max021, dtx::Commit> Max022;
00066 typedef Max<Max022, dtx::Forget> Max023;
00067 typedef Max<Max023, dtx::GetTimeout> Max024;
00068 typedef Max<Max024, dtx::Prepare> Max025;
00069 typedef Max<Max025, dtx::Recover> Max026;
00070 typedef Max<Max026, dtx::Rollback> Max027;
00071 typedef Max<Max027, dtx::SetTimeout> Max028;
00072 typedef Max<Max028, exchange::Declare> Max029;
00073 typedef Max<Max029, exchange::Delete> Max030;
00074 typedef Max<Max030, exchange::Query> Max031;
00075 typedef Max<Max031, exchange::Bind> Max032;
00076 typedef Max<Max032, exchange::Unbind> Max033;
00077 typedef Max<Max033, exchange::Bound> Max034;
00078 typedef Max<Max034, queue::Declare> Max035;
00079 typedef Max<Max035, queue::Delete> Max036;
00080 typedef Max<Max036, queue::Purge> Max037;
00081 typedef Max<Max037, queue::Query> Max038;
00082 typedef Max<Max038, file::Qos> Max039;
00083 typedef Max<Max039, file::QosOk> Max040;
00084 typedef Max<Max040, file::Consume> Max041;
00085 typedef Max<Max041, file::ConsumeOk> Max042;
00086 typedef Max<Max042, file::Cancel> Max043;
00087 typedef Max<Max043, file::Open> Max044;
00088 typedef Max<Max044, file::OpenOk> Max045;
00089 typedef Max<Max045, file::Stage> Max046;
00090 typedef Max<Max046, file::Publish> Max047;
00091 typedef Max<Max047, file::Return> Max048;
00092 typedef Max<Max048, file::Deliver> Max049;
00093 typedef Max<Max049, file::Ack> Max050;
00094 typedef Max<Max050, file::Reject> Max051;
00095 typedef Max<Max051, stream::Qos> Max052;
00096 typedef Max<Max052, stream::QosOk> Max053;
00097 typedef Max<Max053, stream::Consume> Max054;
00098 typedef Max<Max054, stream::ConsumeOk> Max055;
00099 typedef Max<Max055, stream::Cancel> Max056;
00100 typedef Max<Max056, stream::Publish> Max057;
00101 typedef Max<Max057, stream::Return> Max058;
00102 typedef Max<Max058, stream::Deliver> Max059;
00103 static const int MAX=Max059::max;
00104
00105 }
00106
00107 struct CommandHolder:
00108 public amqp_0_10::Holder<CommandHolder, Command, command_max::MAX>
00109 {
00110 CommandHolder() {}
00111 template <class T> explicit CommandHolder(const T& t) : amqp_0_10::Holder<CommandHolder, Command, command_max::MAX>(t) {}
00112 using amqp_0_10::Holder<CommandHolder, Command, command_max::MAX>::operator=;
00113 void set(uint8_t classCode, uint8_t code);
00114 };
00115
00116 std::ostream& operator<<(std::ostream& o, const CommandHolder& h);
00117
00118 }}
00119
00120 #endif