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