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_AMQP_ClientProxy__
00029 #define qpid_framing_AMQP_ClientProxy__
00030
00031 #include <AMQP_ClientOperations.h>
00032 #include <FieldTable.h>
00033 #include <OutputHandler.h>
00034
00035 namespace qpid {
00036 namespace framing {
00037
00038 class AMQP_ClientProxy : public AMQP_ClientOperations
00039 {
00040 private:
00041
00042 ProtocolVersion version;
00043 OutputHandler* out;
00044 AMQP_ClientOperations::AccessHandler* AccessHandlerPtr;
00045 AMQP_ClientOperations::BasicHandler* BasicHandlerPtr;
00046 AMQP_ClientOperations::ChannelHandler* ChannelHandlerPtr;
00047 AMQP_ClientOperations::ConnectionHandler* ConnectionHandlerPtr;
00048 AMQP_ClientOperations::DtxHandler* DtxHandlerPtr;
00049 AMQP_ClientOperations::ExchangeHandler* ExchangeHandlerPtr;
00050 AMQP_ClientOperations::FileHandler* FileHandlerPtr;
00051 AMQP_ClientOperations::QueueHandler* QueueHandlerPtr;
00052 AMQP_ClientOperations::StreamHandler* StreamHandlerPtr;
00053 AMQP_ClientOperations::TestHandler* TestHandlerPtr;
00054 AMQP_ClientOperations::TunnelHandler* TunnelHandlerPtr;
00055 AMQP_ClientOperations::TxHandler* TxHandlerPtr;
00056
00057 public:
00058 AMQP_ClientProxy(OutputHandler* out, u_int8_t major, u_int8_t minor);
00059 ProtocolVersion& getProtocolVersion() {return version;}
00060 virtual ~AMQP_ClientProxy() {}
00061
00062
00063
00064 virtual inline AMQP_ClientOperations::AccessHandler* getAccessHandler() { return &access;}
00065 virtual inline AMQP_ClientOperations::BasicHandler* getBasicHandler() { return &basic;}
00066 virtual inline AMQP_ClientOperations::ChannelHandler* getChannelHandler() { return &channel;}
00067 virtual inline AMQP_ClientOperations::ConnectionHandler* getConnectionHandler() { return &connection;}
00068 virtual inline AMQP_ClientOperations::DtxHandler* getDtxHandler() { return &dtx;}
00069 virtual inline AMQP_ClientOperations::ExchangeHandler* getExchangeHandler() { return &exchange;}
00070 virtual inline AMQP_ClientOperations::FileHandler* getFileHandler() { return &file;}
00071 virtual inline AMQP_ClientOperations::QueueHandler* getQueueHandler() { return &queue;}
00072 virtual inline AMQP_ClientOperations::StreamHandler* getStreamHandler() { return &stream;}
00073 virtual inline AMQP_ClientOperations::TestHandler* getTestHandler() { return &test;}
00074 virtual inline AMQP_ClientOperations::TunnelHandler* getTunnelHandler() { return &tunnel;}
00075 virtual inline AMQP_ClientOperations::TxHandler* getTxHandler() { return &tx;}
00076
00077
00078
00079
00080 class Access : virtual public AMQP_ClientOperations::AccessHandler
00081 {
00082 private:
00083 OutputHandler* out;
00084 AMQP_ClientProxy* parent;
00085
00086 public:
00087
00088
00089 Access(OutputHandler* out, AMQP_ClientProxy* _parent) :
00090 out(out) {parent = _parent;}
00091 virtual ~Access() {}
00092
00093
00094
00095 virtual void requestOk( u_int16_t channel,
00096 u_int16_t ticket );
00097 };
00098
00099
00100 class Basic : virtual public AMQP_ClientOperations::BasicHandler
00101 {
00102 private:
00103 OutputHandler* out;
00104 AMQP_ClientProxy* parent;
00105
00106 public:
00107
00108
00109 Basic(OutputHandler* out, AMQP_ClientProxy* _parent) :
00110 out(out) {parent = _parent;}
00111 virtual ~Basic() {}
00112
00113
00114
00115 virtual void cancelOk( u_int16_t channel,
00116 const string& consumerTag );
00117
00118 virtual void consumeOk( u_int16_t channel,
00119 const string& consumerTag );
00120
00121 virtual void deliver( u_int16_t channel,
00122 const string& consumerTag,
00123 u_int64_t deliveryTag,
00124 bool redelivered,
00125 const string& exchange,
00126 const string& routingKey );
00127
00128 virtual void getEmpty( u_int16_t channel,
00129 const string& clusterId );
00130
00131 virtual void getOk( u_int16_t channel,
00132 u_int64_t deliveryTag,
00133 bool redelivered,
00134 const string& exchange,
00135 const string& routingKey,
00136 u_int32_t messageCount );
00137
00138 virtual void qosOk( u_int16_t channel );
00139
00140 virtual void recoverOk( u_int16_t channel );
00141
00142 virtual void return_( u_int16_t channel,
00143 u_int16_t replyCode,
00144 const string& replyText,
00145 const string& exchange,
00146 const string& routingKey );
00147 };
00148
00149
00150 class Channel : virtual public AMQP_ClientOperations::ChannelHandler
00151 {
00152 private:
00153 OutputHandler* out;
00154 AMQP_ClientProxy* parent;
00155
00156 public:
00157
00158
00159 Channel(OutputHandler* out, AMQP_ClientProxy* _parent) :
00160 out(out) {parent = _parent;}
00161 virtual ~Channel() {}
00162
00163
00164
00165 virtual void alert( u_int16_t channel,
00166 u_int16_t replyCode,
00167 const string& replyText,
00168 const FieldTable& details );
00169
00170 virtual void close( u_int16_t channel,
00171 u_int16_t replyCode,
00172 const string& replyText,
00173 u_int16_t classId,
00174 u_int16_t methodId );
00175
00176 virtual void closeOk( u_int16_t channel );
00177
00178 virtual void flow( u_int16_t channel,
00179 bool active );
00180
00181 virtual void flowOk( u_int16_t channel,
00182 bool active );
00183
00184 virtual void openOk( u_int16_t channel );
00185 };
00186
00187
00188 class Connection : virtual public AMQP_ClientOperations::ConnectionHandler
00189 {
00190 private:
00191 OutputHandler* out;
00192 AMQP_ClientProxy* parent;
00193
00194 public:
00195
00196
00197 Connection(OutputHandler* out, AMQP_ClientProxy* _parent) :
00198 out(out) {parent = _parent;}
00199 virtual ~Connection() {}
00200
00201
00202
00203 virtual void close( u_int16_t channel,
00204 u_int16_t replyCode,
00205 const string& replyText,
00206 u_int16_t classId,
00207 u_int16_t methodId );
00208
00209 virtual void closeOk( u_int16_t channel );
00210
00211 virtual void openOk( u_int16_t channel,
00212 const string& knownHosts );
00213
00214 virtual void redirect( u_int16_t channel,
00215 const string& host,
00216 const string& knownHosts );
00217
00218 virtual void secure( u_int16_t channel,
00219 const string& challenge );
00220
00221 virtual void start( u_int16_t channel,
00222 u_int8_t versionMajor,
00223 u_int8_t versionMinor,
00224 const FieldTable& serverProperties,
00225 const string& mechanisms,
00226 const string& locales );
00227
00228 virtual void tune( u_int16_t channel,
00229 u_int16_t channelMax,
00230 u_int32_t frameMax,
00231 u_int16_t heartbeat );
00232 };
00233
00234
00235 class Dtx : virtual public AMQP_ClientOperations::DtxHandler
00236 {
00237 private:
00238 OutputHandler* out;
00239 AMQP_ClientProxy* parent;
00240
00241 public:
00242
00243
00244 Dtx(OutputHandler* out, AMQP_ClientProxy* _parent) :
00245 out(out) {parent = _parent;}
00246 virtual ~Dtx() {}
00247
00248
00249
00250 virtual void selectOk( u_int16_t channel );
00251
00252 virtual void startOk( u_int16_t channel );
00253 };
00254
00255
00256 class Exchange : virtual public AMQP_ClientOperations::ExchangeHandler
00257 {
00258 private:
00259 OutputHandler* out;
00260 AMQP_ClientProxy* parent;
00261
00262 public:
00263
00264
00265 Exchange(OutputHandler* out, AMQP_ClientProxy* _parent) :
00266 out(out) {parent = _parent;}
00267 virtual ~Exchange() {}
00268
00269
00270
00271 virtual void declareOk( u_int16_t channel );
00272
00273 virtual void deleteOk( u_int16_t channel );
00274 };
00275
00276
00277 class File : virtual public AMQP_ClientOperations::FileHandler
00278 {
00279 private:
00280 OutputHandler* out;
00281 AMQP_ClientProxy* parent;
00282
00283 public:
00284
00285
00286 File(OutputHandler* out, AMQP_ClientProxy* _parent) :
00287 out(out) {parent = _parent;}
00288 virtual ~File() {}
00289
00290
00291
00292 virtual void cancelOk( u_int16_t channel,
00293 const string& consumerTag );
00294
00295 virtual void consumeOk( u_int16_t channel,
00296 const string& consumerTag );
00297
00298 virtual void deliver( u_int16_t channel,
00299 const string& consumerTag,
00300 u_int64_t deliveryTag,
00301 bool redelivered,
00302 const string& exchange,
00303 const string& routingKey,
00304 const string& identifier );
00305
00306 virtual void open( u_int16_t channel,
00307 const string& identifier,
00308 u_int64_t contentSize );
00309
00310 virtual void openOk( u_int16_t channel,
00311 u_int64_t stagedSize );
00312
00313 virtual void qosOk( u_int16_t channel );
00314
00315 virtual void return_( u_int16_t channel,
00316 u_int16_t replyCode,
00317 const string& replyText,
00318 const string& exchange,
00319 const string& routingKey );
00320
00321 virtual void stage( u_int16_t channel );
00322 };
00323
00324
00325 class Queue : virtual public AMQP_ClientOperations::QueueHandler
00326 {
00327 private:
00328 OutputHandler* out;
00329 AMQP_ClientProxy* parent;
00330
00331 public:
00332
00333
00334 Queue(OutputHandler* out, AMQP_ClientProxy* _parent) :
00335 out(out) {parent = _parent;}
00336 virtual ~Queue() {}
00337
00338
00339
00340 virtual void bindOk( u_int16_t channel );
00341
00342 virtual void declareOk( u_int16_t channel,
00343 const string& queue,
00344 u_int32_t messageCount,
00345 u_int32_t consumerCount );
00346
00347 virtual void deleteOk( u_int16_t channel,
00348 u_int32_t messageCount );
00349
00350 virtual void purgeOk( u_int16_t channel,
00351 u_int32_t messageCount );
00352 };
00353
00354
00355 class Stream : virtual public AMQP_ClientOperations::StreamHandler
00356 {
00357 private:
00358 OutputHandler* out;
00359 AMQP_ClientProxy* parent;
00360
00361 public:
00362
00363
00364 Stream(OutputHandler* out, AMQP_ClientProxy* _parent) :
00365 out(out) {parent = _parent;}
00366 virtual ~Stream() {}
00367
00368
00369
00370 virtual void cancelOk( u_int16_t channel,
00371 const string& consumerTag );
00372
00373 virtual void consumeOk( u_int16_t channel,
00374 const string& consumerTag );
00375
00376 virtual void deliver( u_int16_t channel,
00377 const string& consumerTag,
00378 u_int64_t deliveryTag,
00379 const string& exchange,
00380 const string& queue );
00381
00382 virtual void qosOk( u_int16_t channel );
00383
00384 virtual void return_( u_int16_t channel,
00385 u_int16_t replyCode,
00386 const string& replyText,
00387 const string& exchange,
00388 const string& routingKey );
00389 };
00390
00391
00392 class Test : virtual public AMQP_ClientOperations::TestHandler
00393 {
00394 private:
00395 OutputHandler* out;
00396 AMQP_ClientProxy* parent;
00397
00398 public:
00399
00400
00401 Test(OutputHandler* out, AMQP_ClientProxy* _parent) :
00402 out(out) {parent = _parent;}
00403 virtual ~Test() {}
00404
00405
00406
00407 virtual void content( u_int16_t channel );
00408
00409 virtual void contentOk( u_int16_t channel,
00410 u_int32_t contentChecksum );
00411
00412 virtual void integer( u_int16_t channel,
00413 u_int8_t integer1,
00414 u_int16_t integer2,
00415 u_int32_t integer3,
00416 u_int64_t integer4,
00417 u_int8_t operation );
00418
00419 virtual void integerOk( u_int16_t channel,
00420 u_int64_t result );
00421
00422 virtual void string_( u_int16_t channel,
00423 const string& string1,
00424 const string& string2,
00425 u_int8_t operation );
00426
00427 virtual void stringOk( u_int16_t channel,
00428 const string& result );
00429
00430 virtual void table( u_int16_t channel,
00431 const FieldTable& table,
00432 u_int8_t integerOp,
00433 u_int8_t stringOp );
00434
00435 virtual void tableOk( u_int16_t channel,
00436 u_int64_t integerResult,
00437 const string& stringResult );
00438 };
00439
00440
00441 class Tunnel : virtual public AMQP_ClientOperations::TunnelHandler
00442 {
00443 private:
00444 OutputHandler* out;
00445 AMQP_ClientProxy* parent;
00446
00447 public:
00448
00449
00450 Tunnel(OutputHandler* out, AMQP_ClientProxy* _parent) :
00451 out(out) {parent = _parent;}
00452 virtual ~Tunnel() {}
00453
00454
00455
00456 };
00457
00458
00459 class Tx : virtual public AMQP_ClientOperations::TxHandler
00460 {
00461 private:
00462 OutputHandler* out;
00463 AMQP_ClientProxy* parent;
00464
00465 public:
00466
00467
00468 Tx(OutputHandler* out, AMQP_ClientProxy* _parent) :
00469 out(out) {parent = _parent;}
00470 virtual ~Tx() {}
00471
00472
00473
00474 virtual void commitOk( u_int16_t channel );
00475
00476 virtual void rollbackOk( u_int16_t channel );
00477
00478 virtual void selectOk( u_int16_t channel );
00479 };
00480
00481 private:
00482
00483
00484 Access access;
00485 Basic basic;
00486 Channel channel;
00487 Connection connection;
00488 Dtx dtx;
00489 Exchange exchange;
00490 File file;
00491 Queue queue;
00492 Stream stream;
00493 Test test;
00494 Tunnel tunnel;
00495 Tx tx;
00496
00497 public:
00498
00499
00500 Access& getAccess();
00501 Basic& getBasic();
00502 Channel& getChannel();
00503 Connection& getConnection();
00504 Dtx& getDtx();
00505 Exchange& getExchange();
00506 File& getFile();
00507 Queue& getQueue();
00508 Stream& getStream();
00509 Test& getTest();
00510 Tunnel& getTunnel();
00511 Tx& getTx();
00512
00513 };
00514
00515 }
00516 }
00517
00518 #endif