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 "qpid/framing/ProtocolVersion.h"
00034
00035 namespace qpid {
00036 namespace framing {
00037
00038 class MethodContext;
00039
00040 class AMQP_ClientOperations
00041 {
00042 public:
00043 virtual ~AMQP_ClientOperations() {}
00044
00045 virtual ProtocolVersion getVersion() const = 0;
00046
00047
00048 #include "AMQP_Constants.h"
00049
00050
00051
00052
00053 class AccessHandler
00054 {
00055
00056 public:
00057 AccessHandler(){};
00058 virtual ~AccessHandler() {}
00059
00060
00061
00062 virtual void requestOk(const MethodContext& context,
00063 u_int16_t ticket ) = 0;
00064 };
00065
00066
00067 class BasicHandler
00068 {
00069
00070 public:
00071 BasicHandler(){};
00072 virtual ~BasicHandler() {}
00073
00074
00075
00076 virtual void cancelOk(const MethodContext& context,
00077 const string& consumerTag ) = 0;
00078
00079 virtual void consumeOk(const MethodContext& context,
00080 const string& consumerTag ) = 0;
00081
00082 virtual void deliver(const MethodContext& context,
00083 const string& consumerTag,
00084 u_int64_t deliveryTag,
00085 bool redelivered,
00086 const string& exchange,
00087 const string& routingKey ) = 0;
00088
00089 virtual void getEmpty(const MethodContext& context,
00090 const string& clusterId ) = 0;
00091
00092 virtual void getOk(const MethodContext& context,
00093 u_int64_t deliveryTag,
00094 bool redelivered,
00095 const string& exchange,
00096 const string& routingKey,
00097 u_int32_t messageCount ) = 0;
00098
00099 virtual void qosOk(const MethodContext& context ) = 0;
00100
00101 virtual void return_(const MethodContext& context,
00102 u_int16_t replyCode,
00103 const string& replyText,
00104 const string& exchange,
00105 const string& routingKey ) = 0;
00106 };
00107
00108
00109 class ChannelHandler
00110 {
00111
00112 public:
00113 ChannelHandler(){};
00114 virtual ~ChannelHandler() {}
00115
00116
00117
00118 virtual void close(const MethodContext& context,
00119 u_int16_t replyCode,
00120 const string& replyText,
00121 u_int16_t classId,
00122 u_int16_t methodId ) = 0;
00123
00124 virtual void closeOk(const MethodContext& context ) = 0;
00125
00126 virtual void flow(const MethodContext& context,
00127 bool active ) = 0;
00128
00129 virtual void flowOk(const MethodContext& context,
00130 bool active ) = 0;
00131
00132 virtual void ok(const MethodContext& context ) = 0;
00133
00134 virtual void openOk(const MethodContext& context,
00135 const string& channelId ) = 0;
00136
00137 virtual void ping(const MethodContext& context ) = 0;
00138
00139 virtual void pong(const MethodContext& context ) = 0;
00140 };
00141
00142
00143 class ConnectionHandler
00144 {
00145
00146 public:
00147 ConnectionHandler(){};
00148 virtual ~ConnectionHandler() {}
00149
00150
00151
00152 virtual void close(const MethodContext& context,
00153 u_int16_t replyCode,
00154 const string& replyText,
00155 u_int16_t classId,
00156 u_int16_t methodId ) = 0;
00157
00158 virtual void closeOk(const MethodContext& context ) = 0;
00159
00160 virtual void openOk(const MethodContext& context,
00161 const string& knownHosts ) = 0;
00162
00163 virtual void redirect(const MethodContext& context,
00164 const string& host,
00165 const string& knownHosts ) = 0;
00166
00167 virtual void secure(const MethodContext& context,
00168 const string& challenge ) = 0;
00169
00170 virtual void start(const MethodContext& context,
00171 u_int8_t versionMajor,
00172 u_int8_t versionMinor,
00173 const FieldTable& serverProperties,
00174 const string& mechanisms,
00175 const string& locales ) = 0;
00176
00177 virtual void tune(const MethodContext& context,
00178 u_int16_t channelMax,
00179 u_int32_t frameMax,
00180 u_int16_t heartbeat ) = 0;
00181 };
00182
00183
00184 class DtxHandler
00185 {
00186
00187 public:
00188 DtxHandler(){};
00189 virtual ~DtxHandler() {}
00190
00191
00192
00193 virtual void selectOk(const MethodContext& context ) = 0;
00194
00195 virtual void startOk(const MethodContext& context ) = 0;
00196 };
00197
00198
00199 class ExchangeHandler
00200 {
00201
00202 public:
00203 ExchangeHandler(){};
00204 virtual ~ExchangeHandler() {}
00205
00206
00207
00208 virtual void declareOk(const MethodContext& context ) = 0;
00209
00210 virtual void deleteOk(const MethodContext& context ) = 0;
00211 };
00212
00213
00214 class FileHandler
00215 {
00216
00217 public:
00218 FileHandler(){};
00219 virtual ~FileHandler() {}
00220
00221
00222
00223 virtual void cancelOk(const MethodContext& context,
00224 const string& consumerTag ) = 0;
00225
00226 virtual void consumeOk(const MethodContext& context,
00227 const string& consumerTag ) = 0;
00228
00229 virtual void deliver(const MethodContext& context,
00230 const string& consumerTag,
00231 u_int64_t deliveryTag,
00232 bool redelivered,
00233 const string& exchange,
00234 const string& routingKey,
00235 const string& identifier ) = 0;
00236
00237 virtual void open(const MethodContext& context,
00238 const string& identifier,
00239 u_int64_t contentSize ) = 0;
00240
00241 virtual void openOk(const MethodContext& context,
00242 u_int64_t stagedSize ) = 0;
00243
00244 virtual void qosOk(const MethodContext& context ) = 0;
00245
00246 virtual void return_(const MethodContext& context,
00247 u_int16_t replyCode,
00248 const string& replyText,
00249 const string& exchange,
00250 const string& routingKey ) = 0;
00251
00252 virtual void stage(const MethodContext& context ) = 0;
00253 };
00254
00255
00256 class MessageHandler
00257 {
00258
00259 public:
00260 MessageHandler(){};
00261 virtual ~MessageHandler() {}
00262
00263
00264
00265 virtual void append(const MethodContext& context,
00266 const string& reference,
00267 const string& bytes ) = 0;
00268
00269 virtual void checkpoint(const MethodContext& context,
00270 const string& reference,
00271 const string& identifier ) = 0;
00272
00273 virtual void close(const MethodContext& context,
00274 const string& reference ) = 0;
00275
00276 virtual void empty(const MethodContext& context ) = 0;
00277
00278 virtual void offset(const MethodContext& context,
00279 u_int64_t value ) = 0;
00280
00281 virtual void ok(const MethodContext& context ) = 0;
00282
00283 virtual void open(const MethodContext& context,
00284 const string& reference ) = 0;
00285
00286 virtual void reject(const MethodContext& context,
00287 u_int16_t code,
00288 const string& text ) = 0;
00289
00290 virtual void resume(const MethodContext& context,
00291 const string& reference,
00292 const string& identifier ) = 0;
00293
00294 virtual void transfer(const MethodContext& context,
00295 u_int16_t ticket,
00296 const string& destination,
00297 bool redelivered,
00298 bool immediate,
00299 u_int64_t ttl,
00300 u_int8_t priority,
00301 u_int64_t timestamp,
00302 u_int8_t deliveryMode,
00303 u_int64_t expiration,
00304 const string& exchange,
00305 const string& routingKey,
00306 const string& messageId,
00307 const string& correlationId,
00308 const string& replyTo,
00309 const string& contentType,
00310 const string& contentEncoding,
00311 const string& userId,
00312 const string& appId,
00313 const string& transactionId,
00314 const string& securityToken,
00315 const FieldTable& applicationHeaders,
00316 const Content& body,
00317 bool mandatory ) = 0;
00318 };
00319
00320
00321 class QueueHandler
00322 {
00323
00324 public:
00325 QueueHandler(){};
00326 virtual ~QueueHandler() {}
00327
00328
00329
00330 virtual void bindOk(const MethodContext& context ) = 0;
00331
00332 virtual void declareOk(const MethodContext& context,
00333 const string& queue,
00334 u_int32_t messageCount,
00335 u_int32_t consumerCount ) = 0;
00336
00337 virtual void deleteOk(const MethodContext& context,
00338 u_int32_t messageCount ) = 0;
00339
00340 virtual void purgeOk(const MethodContext& context,
00341 u_int32_t messageCount ) = 0;
00342
00343 virtual void unbindOk(const MethodContext& context ) = 0;
00344 };
00345
00346
00347 class StreamHandler
00348 {
00349
00350 public:
00351 StreamHandler(){};
00352 virtual ~StreamHandler() {}
00353
00354
00355
00356 virtual void cancelOk(const MethodContext& context,
00357 const string& consumerTag ) = 0;
00358
00359 virtual void consumeOk(const MethodContext& context,
00360 const string& consumerTag ) = 0;
00361
00362 virtual void deliver(const MethodContext& context,
00363 const string& consumerTag,
00364 u_int64_t deliveryTag,
00365 const string& exchange,
00366 const string& queue ) = 0;
00367
00368 virtual void qosOk(const MethodContext& context ) = 0;
00369
00370 virtual void return_(const MethodContext& context,
00371 u_int16_t replyCode,
00372 const string& replyText,
00373 const string& exchange,
00374 const string& routingKey ) = 0;
00375 };
00376
00377
00378 class TunnelHandler
00379 {
00380
00381 public:
00382 TunnelHandler(){};
00383 virtual ~TunnelHandler() {}
00384
00385
00386
00387 };
00388
00389
00390 class TxHandler
00391 {
00392
00393 public:
00394 TxHandler(){};
00395 virtual ~TxHandler() {}
00396
00397
00398
00399 virtual void commitOk(const MethodContext& context ) = 0;
00400
00401 virtual void rollbackOk(const MethodContext& context ) = 0;
00402
00403 virtual void selectOk(const MethodContext& context ) = 0;
00404 };
00405
00406
00407
00408 virtual AMQP_ClientOperations::AccessHandler* getAccessHandler() = 0;
00409 virtual AMQP_ClientOperations::BasicHandler* getBasicHandler() = 0;
00410 virtual AMQP_ClientOperations::ChannelHandler* getChannelHandler() = 0;
00411 virtual AMQP_ClientOperations::ConnectionHandler* getConnectionHandler() = 0;
00412 virtual AMQP_ClientOperations::DtxHandler* getDtxHandler() = 0;
00413 virtual AMQP_ClientOperations::ExchangeHandler* getExchangeHandler() = 0;
00414 virtual AMQP_ClientOperations::FileHandler* getFileHandler() = 0;
00415 virtual AMQP_ClientOperations::MessageHandler* getMessageHandler() = 0;
00416 virtual AMQP_ClientOperations::QueueHandler* getQueueHandler() = 0;
00417 virtual AMQP_ClientOperations::StreamHandler* getStreamHandler() = 0;
00418 virtual AMQP_ClientOperations::TxHandler* getTxHandler() = 0;
00419
00420 };
00421
00422 }
00423 }
00424
00425 #endif