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_ServerOperations__
00029 #define qpid_framing_AMQP_ServerOperations__
00030
00031 #include "qpid/framing/ProtocolVersion.h"
00032
00033 namespace qpid {
00034 namespace framing {
00035
00036 class MethodContext;
00037
00038 class AMQP_ServerOperations
00039 {
00040 protected:
00041 ProtocolVersion version;
00042
00043 public:
00044 virtual ~AMQP_ServerOperations() {}
00045
00046 virtual ProtocolVersion getVersion() const = 0;
00047
00048
00049 #include "AMQP_Constants.h"
00050
00051
00052
00053
00054 class AccessHandler
00055 {
00056
00057 public:
00058 AccessHandler(){};
00059 virtual ~AccessHandler() {}
00060
00061
00062
00063 virtual void request(const MethodContext& context,
00064 const string& realm,
00065 bool exclusive,
00066 bool passive,
00067 bool active,
00068 bool write,
00069 bool read ) = 0;
00070 };
00071
00072
00073 class BasicHandler
00074 {
00075
00076 public:
00077 BasicHandler(){};
00078 virtual ~BasicHandler() {}
00079
00080
00081
00082 virtual void ack(const MethodContext& context,
00083 u_int64_t deliveryTag,
00084 bool multiple ) = 0;
00085
00086 virtual void cancel(const MethodContext& context,
00087 const string& consumerTag,
00088 bool nowait ) = 0;
00089
00090 virtual void consume(const MethodContext& context,
00091 u_int16_t ticket,
00092 const string& queue,
00093 const string& consumerTag,
00094 bool noLocal,
00095 bool noAck,
00096 bool exclusive,
00097 bool nowait,
00098 const FieldTable& filter ) = 0;
00099
00100 virtual void get(const MethodContext& context,
00101 u_int16_t ticket,
00102 const string& queue,
00103 bool noAck ) = 0;
00104
00105 virtual void publish(const MethodContext& context,
00106 u_int16_t ticket,
00107 const string& exchange,
00108 const string& routingKey,
00109 bool mandatory,
00110 bool immediate ) = 0;
00111
00112 virtual void qos(const MethodContext& context,
00113 u_int32_t prefetchSize,
00114 u_int16_t prefetchCount,
00115 bool global ) = 0;
00116
00117 virtual void recover(const MethodContext& context,
00118 bool requeue ) = 0;
00119
00120 virtual void reject(const MethodContext& context,
00121 u_int64_t deliveryTag,
00122 bool requeue ) = 0;
00123 };
00124
00125
00126 class ChannelHandler
00127 {
00128
00129 public:
00130 ChannelHandler(){};
00131 virtual ~ChannelHandler() {}
00132
00133
00134
00135 virtual void close(const MethodContext& context,
00136 u_int16_t replyCode,
00137 const string& replyText,
00138 u_int16_t classId,
00139 u_int16_t methodId ) = 0;
00140
00141 virtual void closeOk(const MethodContext& context ) = 0;
00142
00143 virtual void flow(const MethodContext& context,
00144 bool active ) = 0;
00145
00146 virtual void flowOk(const MethodContext& context,
00147 bool active ) = 0;
00148
00149 virtual void ok(const MethodContext& context ) = 0;
00150
00151 virtual void open(const MethodContext& context,
00152 const string& outOfBand ) = 0;
00153
00154 virtual void ping(const MethodContext& context ) = 0;
00155
00156 virtual void pong(const MethodContext& context ) = 0;
00157
00158 virtual void resume(const MethodContext& context,
00159 const string& channelId ) = 0;
00160 };
00161
00162
00163 class ConnectionHandler
00164 {
00165
00166 public:
00167 ConnectionHandler(){};
00168 virtual ~ConnectionHandler() {}
00169
00170
00171
00172 virtual void close(const MethodContext& context,
00173 u_int16_t replyCode,
00174 const string& replyText,
00175 u_int16_t classId,
00176 u_int16_t methodId ) = 0;
00177
00178 virtual void closeOk(const MethodContext& context ) = 0;
00179
00180 virtual void open(const MethodContext& context,
00181 const string& virtualHost,
00182 const string& capabilities,
00183 bool insist ) = 0;
00184
00185 virtual void secureOk(const MethodContext& context,
00186 const string& response ) = 0;
00187
00188 virtual void startOk(const MethodContext& context,
00189 const FieldTable& clientProperties,
00190 const string& mechanism,
00191 const string& response,
00192 const string& locale ) = 0;
00193
00194 virtual void tuneOk(const MethodContext& context,
00195 u_int16_t channelMax,
00196 u_int32_t frameMax,
00197 u_int16_t heartbeat ) = 0;
00198 };
00199
00200
00201 class DtxHandler
00202 {
00203
00204 public:
00205 DtxHandler(){};
00206 virtual ~DtxHandler() {}
00207
00208
00209
00210 virtual void select(const MethodContext& context ) = 0;
00211
00212 virtual void start(const MethodContext& context,
00213 const string& dtxIdentifier ) = 0;
00214 };
00215
00216
00217 class ExchangeHandler
00218 {
00219
00220 public:
00221 ExchangeHandler(){};
00222 virtual ~ExchangeHandler() {}
00223
00224
00225
00226 virtual void declare(const MethodContext& context,
00227 u_int16_t ticket,
00228 const string& exchange,
00229 const string& type,
00230 bool passive,
00231 bool durable,
00232 bool autoDelete,
00233 bool internal,
00234 bool nowait,
00235 const FieldTable& arguments ) = 0;
00236
00237 virtual void delete_(const MethodContext& context,
00238 u_int16_t ticket,
00239 const string& exchange,
00240 bool ifUnused,
00241 bool nowait ) = 0;
00242 };
00243
00244
00245 class FileHandler
00246 {
00247
00248 public:
00249 FileHandler(){};
00250 virtual ~FileHandler() {}
00251
00252
00253
00254 virtual void ack(const MethodContext& context,
00255 u_int64_t deliveryTag,
00256 bool multiple ) = 0;
00257
00258 virtual void cancel(const MethodContext& context,
00259 const string& consumerTag,
00260 bool nowait ) = 0;
00261
00262 virtual void consume(const MethodContext& context,
00263 u_int16_t ticket,
00264 const string& queue,
00265 const string& consumerTag,
00266 bool noLocal,
00267 bool noAck,
00268 bool exclusive,
00269 bool nowait,
00270 const FieldTable& filter ) = 0;
00271
00272 virtual void open(const MethodContext& context,
00273 const string& identifier,
00274 u_int64_t contentSize ) = 0;
00275
00276 virtual void openOk(const MethodContext& context,
00277 u_int64_t stagedSize ) = 0;
00278
00279 virtual void publish(const MethodContext& context,
00280 u_int16_t ticket,
00281 const string& exchange,
00282 const string& routingKey,
00283 bool mandatory,
00284 bool immediate,
00285 const string& identifier ) = 0;
00286
00287 virtual void qos(const MethodContext& context,
00288 u_int32_t prefetchSize,
00289 u_int16_t prefetchCount,
00290 bool global ) = 0;
00291
00292 virtual void reject(const MethodContext& context,
00293 u_int64_t deliveryTag,
00294 bool requeue ) = 0;
00295
00296 virtual void stage(const MethodContext& context ) = 0;
00297 };
00298
00299
00300 class MessageHandler
00301 {
00302
00303 public:
00304 MessageHandler(){};
00305 virtual ~MessageHandler() {}
00306
00307
00308
00309 virtual void append(const MethodContext& context,
00310 const string& reference,
00311 const string& bytes ) = 0;
00312
00313 virtual void cancel(const MethodContext& context,
00314 const string& destination ) = 0;
00315
00316 virtual void checkpoint(const MethodContext& context,
00317 const string& reference,
00318 const string& identifier ) = 0;
00319
00320 virtual void close(const MethodContext& context,
00321 const string& reference ) = 0;
00322
00323 virtual void consume(const MethodContext& context,
00324 u_int16_t ticket,
00325 const string& queue,
00326 const string& destination,
00327 bool noLocal,
00328 bool noAck,
00329 bool exclusive,
00330 const FieldTable& filter ) = 0;
00331
00332 virtual void empty(const MethodContext& context ) = 0;
00333
00334 virtual void get(const MethodContext& context,
00335 u_int16_t ticket,
00336 const string& queue,
00337 const string& destination,
00338 bool noAck ) = 0;
00339
00340 virtual void offset(const MethodContext& context,
00341 u_int64_t value ) = 0;
00342
00343 virtual void ok(const MethodContext& context ) = 0;
00344
00345 virtual void open(const MethodContext& context,
00346 const string& reference ) = 0;
00347
00348 virtual void qos(const MethodContext& context,
00349 u_int32_t prefetchSize,
00350 u_int16_t prefetchCount,
00351 bool global ) = 0;
00352
00353 virtual void recover(const MethodContext& context,
00354 bool requeue ) = 0;
00355
00356 virtual void reject(const MethodContext& context,
00357 u_int16_t code,
00358 const string& text ) = 0;
00359
00360 virtual void resume(const MethodContext& context,
00361 const string& reference,
00362 const string& identifier ) = 0;
00363
00364 virtual void transfer(const MethodContext& context,
00365 u_int16_t ticket,
00366 const string& destination,
00367 bool redelivered,
00368 bool immediate,
00369 u_int64_t ttl,
00370 u_int8_t priority,
00371 u_int64_t timestamp,
00372 u_int8_t deliveryMode,
00373 u_int64_t expiration,
00374 const string& exchange,
00375 const string& routingKey,
00376 const string& messageId,
00377 const string& correlationId,
00378 const string& replyTo,
00379 const string& contentType,
00380 const string& contentEncoding,
00381 const string& userId,
00382 const string& appId,
00383 const string& transactionId,
00384 const string& securityToken,
00385 const FieldTable& applicationHeaders,
00386 const Content& body,
00387 bool mandatory ) = 0;
00388 };
00389
00390
00391 class QueueHandler
00392 {
00393
00394 public:
00395 QueueHandler(){};
00396 virtual ~QueueHandler() {}
00397
00398
00399
00400 virtual void bind(const MethodContext& context,
00401 u_int16_t ticket,
00402 const string& queue,
00403 const string& exchange,
00404 const string& routingKey,
00405 bool nowait,
00406 const FieldTable& arguments ) = 0;
00407
00408 virtual void declare(const MethodContext& context,
00409 u_int16_t ticket,
00410 const string& queue,
00411 bool passive,
00412 bool durable,
00413 bool exclusive,
00414 bool autoDelete,
00415 bool nowait,
00416 const FieldTable& arguments ) = 0;
00417
00418 virtual void delete_(const MethodContext& context,
00419 u_int16_t ticket,
00420 const string& queue,
00421 bool ifUnused,
00422 bool ifEmpty,
00423 bool nowait ) = 0;
00424
00425 virtual void purge(const MethodContext& context,
00426 u_int16_t ticket,
00427 const string& queue,
00428 bool nowait ) = 0;
00429
00430 virtual void unbind(const MethodContext& context,
00431 u_int16_t ticket,
00432 const string& queue,
00433 const string& exchange,
00434 const string& routingKey,
00435 const FieldTable& arguments ) = 0;
00436 };
00437
00438
00439 class StreamHandler
00440 {
00441
00442 public:
00443 StreamHandler(){};
00444 virtual ~StreamHandler() {}
00445
00446
00447
00448 virtual void cancel(const MethodContext& context,
00449 const string& consumerTag,
00450 bool nowait ) = 0;
00451
00452 virtual void consume(const MethodContext& context,
00453 u_int16_t ticket,
00454 const string& queue,
00455 const string& consumerTag,
00456 bool noLocal,
00457 bool exclusive,
00458 bool nowait,
00459 const FieldTable& filter ) = 0;
00460
00461 virtual void publish(const MethodContext& context,
00462 u_int16_t ticket,
00463 const string& exchange,
00464 const string& routingKey,
00465 bool mandatory,
00466 bool immediate ) = 0;
00467
00468 virtual void qos(const MethodContext& context,
00469 u_int32_t prefetchSize,
00470 u_int16_t prefetchCount,
00471 u_int32_t consumeRate,
00472 bool global ) = 0;
00473 };
00474
00475
00476 class TunnelHandler
00477 {
00478
00479 public:
00480 TunnelHandler(){};
00481 virtual ~TunnelHandler() {}
00482
00483
00484
00485 virtual void request(const MethodContext& context,
00486 const FieldTable& metaData ) = 0;
00487 };
00488
00489
00490 class TxHandler
00491 {
00492
00493 public:
00494 TxHandler(){};
00495 virtual ~TxHandler() {}
00496
00497
00498
00499 virtual void commit(const MethodContext& context ) = 0;
00500
00501 virtual void rollback(const MethodContext& context ) = 0;
00502
00503 virtual void select(const MethodContext& context ) = 0;
00504 };
00505
00506
00507
00508 virtual AMQP_ServerOperations::AccessHandler* getAccessHandler() = 0;
00509 virtual AMQP_ServerOperations::BasicHandler* getBasicHandler() = 0;
00510 virtual AMQP_ServerOperations::ChannelHandler* getChannelHandler() = 0;
00511 virtual AMQP_ServerOperations::ConnectionHandler* getConnectionHandler() = 0;
00512 virtual AMQP_ServerOperations::DtxHandler* getDtxHandler() = 0;
00513 virtual AMQP_ServerOperations::ExchangeHandler* getExchangeHandler() = 0;
00514 virtual AMQP_ServerOperations::FileHandler* getFileHandler() = 0;
00515 virtual AMQP_ServerOperations::MessageHandler* getMessageHandler() = 0;
00516 virtual AMQP_ServerOperations::QueueHandler* getQueueHandler() = 0;
00517 virtual AMQP_ServerOperations::StreamHandler* getStreamHandler() = 0;
00518 virtual AMQP_ServerOperations::TunnelHandler* getTunnelHandler() = 0;
00519 virtual AMQP_ServerOperations::TxHandler* getTxHandler() = 0;
00520
00521 };
00522
00523 }
00524 }
00525
00526 #endif