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