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 return_( u_int16_t channel,
00141 u_int16_t replyCode,
00142 const string& replyText,
00143 const string& exchange,
00144 const string& routingKey );
00145 };
00146
00147
00148 class Channel : virtual public AMQP_ClientOperations::ChannelHandler
00149 {
00150 private:
00151 OutputHandler* out;
00152 AMQP_ClientProxy* parent;
00153
00154 public:
00155
00156
00157 Channel(OutputHandler* out, AMQP_ClientProxy* _parent) :
00158 out(out) {parent = _parent;}
00159 virtual ~Channel() {}
00160
00161
00162
00163 virtual void alert( u_int16_t channel,
00164 u_int16_t replyCode,
00165 const string& replyText,
00166 const FieldTable& details );
00167
00168 virtual void close( u_int16_t channel,
00169 u_int16_t replyCode,
00170 const string& replyText,
00171 u_int16_t classId,
00172 u_int16_t methodId );
00173
00174 virtual void closeOk( u_int16_t channel );
00175
00176 virtual void flow( u_int16_t channel,
00177 bool active );
00178
00179 virtual void flowOk( u_int16_t channel,
00180 bool active );
00181
00182 virtual void openOk( u_int16_t channel );
00183 };
00184
00185
00186 class Connection : virtual public AMQP_ClientOperations::ConnectionHandler
00187 {
00188 private:
00189 OutputHandler* out;
00190 AMQP_ClientProxy* parent;
00191
00192 public:
00193
00194
00195 Connection(OutputHandler* out, AMQP_ClientProxy* _parent) :
00196 out(out) {parent = _parent;}
00197 virtual ~Connection() {}
00198
00199
00200
00201 virtual void close( u_int16_t channel,
00202 u_int16_t replyCode,
00203 const string& replyText,
00204 u_int16_t classId,
00205 u_int16_t methodId );
00206
00207 virtual void closeOk( u_int16_t channel );
00208
00209 virtual void openOk( u_int16_t channel,
00210 const string& knownHosts );
00211
00212 virtual void redirect( u_int16_t channel,
00213 const string& host,
00214 const string& knownHosts );
00215
00216 virtual void secure( u_int16_t channel,
00217 const string& challenge );
00218
00219 virtual void start( u_int16_t channel,
00220 u_int8_t versionMajor,
00221 u_int8_t versionMinor,
00222 const FieldTable& serverProperties,
00223 const string& mechanisms,
00224 const string& locales );
00225
00226 virtual void tune( u_int16_t channel,
00227 u_int16_t channelMax,
00228 u_int32_t frameMax,
00229 u_int16_t heartbeat );
00230 };
00231
00232
00233 class Dtx : virtual public AMQP_ClientOperations::DtxHandler
00234 {
00235 private:
00236 OutputHandler* out;
00237 AMQP_ClientProxy* parent;
00238
00239 public:
00240
00241
00242 Dtx(OutputHandler* out, AMQP_ClientProxy* _parent) :
00243 out(out) {parent = _parent;}
00244 virtual ~Dtx() {}
00245
00246
00247
00248 virtual void selectOk( u_int16_t channel );
00249
00250 virtual void startOk( u_int16_t channel );
00251 };
00252
00253
00254 class Exchange : virtual public AMQP_ClientOperations::ExchangeHandler
00255 {
00256 private:
00257 OutputHandler* out;
00258 AMQP_ClientProxy* parent;
00259
00260 public:
00261
00262
00263 Exchange(OutputHandler* out, AMQP_ClientProxy* _parent) :
00264 out(out) {parent = _parent;}
00265 virtual ~Exchange() {}
00266
00267
00268
00269 virtual void declareOk( u_int16_t channel );
00270
00271 virtual void deleteOk( u_int16_t channel );
00272 };
00273
00274
00275 class File : virtual public AMQP_ClientOperations::FileHandler
00276 {
00277 private:
00278 OutputHandler* out;
00279 AMQP_ClientProxy* parent;
00280
00281 public:
00282
00283
00284 File(OutputHandler* out, AMQP_ClientProxy* _parent) :
00285 out(out) {parent = _parent;}
00286 virtual ~File() {}
00287
00288
00289
00290 virtual void cancelOk( u_int16_t channel,
00291 const string& consumerTag );
00292
00293 virtual void consumeOk( u_int16_t channel,
00294 const string& consumerTag );
00295
00296 virtual void deliver( u_int16_t channel,
00297 const string& consumerTag,
00298 u_int64_t deliveryTag,
00299 bool redelivered,
00300 const string& exchange,
00301 const string& routingKey,
00302 const string& identifier );
00303
00304 virtual void open( u_int16_t channel,
00305 const string& identifier,
00306 u_int64_t contentSize );
00307
00308 virtual void openOk( u_int16_t channel,
00309 u_int64_t stagedSize );
00310
00311 virtual void qosOk( u_int16_t channel );
00312
00313 virtual void return_( u_int16_t channel,
00314 u_int16_t replyCode,
00315 const string& replyText,
00316 const string& exchange,
00317 const string& routingKey );
00318
00319 virtual void stage( u_int16_t channel );
00320 };
00321
00322
00323 class Queue : virtual public AMQP_ClientOperations::QueueHandler
00324 {
00325 private:
00326 OutputHandler* out;
00327 AMQP_ClientProxy* parent;
00328
00329 public:
00330
00331
00332 Queue(OutputHandler* out, AMQP_ClientProxy* _parent) :
00333 out(out) {parent = _parent;}
00334 virtual ~Queue() {}
00335
00336
00337
00338 virtual void bindOk( u_int16_t channel );
00339
00340 virtual void declareOk( u_int16_t channel,
00341 const string& queue,
00342 u_int32_t messageCount,
00343 u_int32_t consumerCount );
00344
00345 virtual void deleteOk( u_int16_t channel,
00346 u_int32_t messageCount );
00347
00348 virtual void purgeOk( u_int16_t channel,
00349 u_int32_t messageCount );
00350 };
00351
00352
00353 class Stream : virtual public AMQP_ClientOperations::StreamHandler
00354 {
00355 private:
00356 OutputHandler* out;
00357 AMQP_ClientProxy* parent;
00358
00359 public:
00360
00361
00362 Stream(OutputHandler* out, AMQP_ClientProxy* _parent) :
00363 out(out) {parent = _parent;}
00364 virtual ~Stream() {}
00365
00366
00367
00368 virtual void cancelOk( u_int16_t channel,
00369 const string& consumerTag );
00370
00371 virtual void consumeOk( u_int16_t channel,
00372 const string& consumerTag );
00373
00374 virtual void deliver( u_int16_t channel,
00375 const string& consumerTag,
00376 u_int64_t deliveryTag,
00377 const string& exchange,
00378 const string& queue );
00379
00380 virtual void qosOk( u_int16_t channel );
00381
00382 virtual void return_( u_int16_t channel,
00383 u_int16_t replyCode,
00384 const string& replyText,
00385 const string& exchange,
00386 const string& routingKey );
00387 };
00388
00389
00390 class Test : virtual public AMQP_ClientOperations::TestHandler
00391 {
00392 private:
00393 OutputHandler* out;
00394 AMQP_ClientProxy* parent;
00395
00396 public:
00397
00398
00399 Test(OutputHandler* out, AMQP_ClientProxy* _parent) :
00400 out(out) {parent = _parent;}
00401 virtual ~Test() {}
00402
00403
00404
00405 virtual void content( u_int16_t channel );
00406
00407 virtual void contentOk( u_int16_t channel,
00408 u_int32_t contentChecksum );
00409
00410 virtual void integer( u_int16_t channel,
00411 u_int8_t integer1,
00412 u_int16_t integer2,
00413 u_int32_t integer3,
00414 u_int64_t integer4,
00415 u_int8_t operation );
00416
00417 virtual void integerOk( u_int16_t channel,
00418 u_int64_t result );
00419
00420 virtual void string_( u_int16_t channel,
00421 const string& string1,
00422 const string& string2,
00423 u_int8_t operation );
00424
00425 virtual void stringOk( u_int16_t channel,
00426 const string& result );
00427
00428 virtual void table( u_int16_t channel,
00429 const FieldTable& table,
00430 u_int8_t integerOp,
00431 u_int8_t stringOp );
00432
00433 virtual void tableOk( u_int16_t channel,
00434 u_int64_t integerResult,
00435 const string& stringResult );
00436 };
00437
00438
00439 class Tunnel : virtual public AMQP_ClientOperations::TunnelHandler
00440 {
00441 private:
00442 OutputHandler* out;
00443 AMQP_ClientProxy* parent;
00444
00445 public:
00446
00447
00448 Tunnel(OutputHandler* out, AMQP_ClientProxy* _parent) :
00449 out(out) {parent = _parent;}
00450 virtual ~Tunnel() {}
00451
00452
00453
00454 };
00455
00456
00457 class Tx : virtual public AMQP_ClientOperations::TxHandler
00458 {
00459 private:
00460 OutputHandler* out;
00461 AMQP_ClientProxy* parent;
00462
00463 public:
00464
00465
00466 Tx(OutputHandler* out, AMQP_ClientProxy* _parent) :
00467 out(out) {parent = _parent;}
00468 virtual ~Tx() {}
00469
00470
00471
00472 virtual void commitOk( u_int16_t channel );
00473
00474 virtual void rollbackOk( u_int16_t channel );
00475
00476 virtual void selectOk( u_int16_t channel );
00477 };
00478
00479 private:
00480
00481
00482 Access access;
00483 Basic basic;
00484 Channel channel;
00485 Connection connection;
00486 Dtx dtx;
00487 Exchange exchange;
00488 File file;
00489 Queue queue;
00490 Stream stream;
00491 Test test;
00492 Tunnel tunnel;
00493 Tx tx;
00494
00495 public:
00496
00497
00498 Access& getAccess();
00499 Basic& getBasic();
00500 Channel& getChannel();
00501 Connection& getConnection();
00502 Dtx& getDtx();
00503 Exchange& getExchange();
00504 File& getFile();
00505 Queue& getQueue();
00506 Stream& getStream();
00507 Test& getTest();
00508 Tunnel& getTunnel();
00509 Tx& getTx();
00510
00511 };
00512
00513 }
00514 }
00515
00516 #endif