00001 #ifndef QPID_FRAMING_AMQP_ALLOPERATIONS_H
00002 #define QPID_FRAMING_AMQP_ALLOPERATIONS_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00028
00029
00030 #include <sstream>
00031 #include "qpid/framing/ProtocolVersion.h"
00032 #include "qpid/framing/amqp_structs.h"
00033
00034 namespace qpid {
00035 namespace framing {
00036
00037 class AMQMethodBody;
00038
00039 class AMQP_AllOperations {
00040 public:
00041 class Invoker;
00042
00043 virtual ~AMQP_AllOperations() {}
00044
00045 virtual ProtocolVersion getVersion() const = 0;
00046
00047
00048
00049 class ConnectionHandler {
00050
00051 public:
00052 class Invoker;
00053
00054 ConnectionHandler(){};
00055 virtual ~ConnectionHandler() {}
00056
00057
00058 virtual void start(const FieldTable& serverProperties,
00059 const Array& mechanisms,
00060 const Array& locales) = 0;
00061
00062 virtual void startOk(const FieldTable& clientProperties,
00063 const string& mechanism,
00064 const string& response,
00065 const string& locale) = 0;
00066
00067 virtual void secure(const string& challenge) = 0;
00068
00069 virtual void secureOk(const string& response) = 0;
00070
00071 virtual void tune(uint16_t channelMax,
00072 uint16_t maxFrameSize,
00073 uint16_t heartbeatMin,
00074 uint16_t heartbeatMax) = 0;
00075
00076 virtual void tuneOk(uint16_t channelMax,
00077 uint16_t maxFrameSize,
00078 uint16_t heartbeat) = 0;
00079
00080 virtual void open(const string& virtualHost,
00081 const Array& capabilities,
00082 bool insist) = 0;
00083
00084 virtual void openOk(const Array& knownHosts) = 0;
00085
00086 virtual void redirect(const string& host,
00087 const Array& knownHosts) = 0;
00088
00089 virtual void heartbeat( ) = 0;
00090
00091 virtual void close(uint16_t replyCode,
00092 const string& replyText) = 0;
00093
00094 virtual void closeOk( ) = 0;
00095 };
00096
00097
00098
00099 class SessionHandler {
00100
00101 public:
00102 class Invoker;
00103
00104 SessionHandler(){};
00105 virtual ~SessionHandler() {}
00106
00107
00108 virtual void attach(const string& name,
00109 bool force) = 0;
00110
00111 virtual void attached(const string& name) = 0;
00112
00113 virtual void detach(const string& name) = 0;
00114
00115 virtual void detached(const string& name,
00116 uint8_t code) = 0;
00117
00118 virtual void requestTimeout(uint32_t timeout) = 0;
00119
00120 virtual void timeout(uint32_t timeout) = 0;
00121
00122 virtual void commandPoint(const SequenceNumber& commandId,
00123 uint64_t commandOffset) = 0;
00124
00125 virtual void expected(const SequenceSet& commands,
00126 const Array& fragments) = 0;
00127
00128 virtual void confirmed(const SequenceSet& commands,
00129 const Array& fragments) = 0;
00130
00131 virtual void completed(const SequenceSet& commands,
00132 bool timelyReply) = 0;
00133
00134 virtual void knownCompleted(const SequenceSet& commands) = 0;
00135
00136 virtual void flush(bool expected,
00137 bool confirmed,
00138 bool completed) = 0;
00139
00140 virtual void gap(const SequenceSet& commands) = 0;
00141 };
00142
00143
00144
00145 class ExecutionHandler {
00146
00147 public:
00148 class Invoker;
00149
00150 ExecutionHandler(){};
00151 virtual ~ExecutionHandler() {}
00152
00153
00154 virtual void sync( ) = 0;
00155
00156 virtual void result(const SequenceNumber& commandId,
00157 const string& value) = 0;
00158
00159 virtual void exception(uint16_t errorCode,
00160 const SequenceNumber& commandId,
00161 uint8_t classCode,
00162 uint8_t commandCode,
00163 uint8_t fieldIndex,
00164 const string& description,
00165 const FieldTable& errorInfo) = 0;
00166 };
00167
00168
00169
00170 class MessageHandler {
00171
00172 public:
00173 class Invoker;
00174
00175 MessageHandler(){};
00176 virtual ~MessageHandler() {}
00177
00178
00179 virtual void accept(const SequenceSet& transfers) = 0;
00180
00181 virtual void reject(const SequenceSet& transfers,
00182 uint16_t code,
00183 const string& text) = 0;
00184
00185 virtual void release(const SequenceSet& transfers,
00186 bool setRedelivered) = 0;
00187
00188 virtual MessageAcquireResult acquire(const SequenceSet& transfers) = 0;
00189
00190 virtual MessageResumeResult resume(const string& destination,
00191 const string& resumeId) = 0;
00192
00193 virtual void subscribe(const string& queue,
00194 const string& destination,
00195 uint8_t acceptMode,
00196 uint8_t acquireMode,
00197 bool exclusive,
00198 const string& resumeId,
00199 uint64_t resumeTtl,
00200 const FieldTable& arguments) = 0;
00201
00202 virtual void cancel(const string& destination) = 0;
00203
00204 virtual void setFlowMode(const string& destination,
00205 uint8_t flowMode) = 0;
00206
00207 virtual void flow(const string& destination,
00208 uint8_t unit,
00209 uint32_t value) = 0;
00210
00211 virtual void flush(const string& destination) = 0;
00212
00213 virtual void stop(const string& destination) = 0;
00214 };
00215
00216
00217
00218 class TxHandler {
00219
00220 public:
00221 class Invoker;
00222
00223 TxHandler(){};
00224 virtual ~TxHandler() {}
00225
00226
00227 virtual void select( ) = 0;
00228
00229 virtual void commit( ) = 0;
00230
00231 virtual void rollback( ) = 0;
00232 };
00233
00234
00235
00236 class DtxHandler {
00237
00238 public:
00239 class Invoker;
00240
00241 DtxHandler(){};
00242 virtual ~DtxHandler() {}
00243
00244
00245 virtual void select( ) = 0;
00246
00247 virtual XaResult start(const Xid& xid,
00248 bool join,
00249 bool resume) = 0;
00250
00251 virtual XaResult end(const Xid& xid,
00252 bool fail,
00253 bool suspend) = 0;
00254
00255 virtual XaResult commit(const Xid& xid,
00256 bool onePhase) = 0;
00257
00258 virtual void forget(const Xid& xid) = 0;
00259
00260 virtual DtxGetTimeoutResult getTimeout(const Xid& xid) = 0;
00261
00262 virtual XaResult prepare(const Xid& xid) = 0;
00263
00264 virtual DtxRecoverResult recover( ) = 0;
00265
00266 virtual XaResult rollback(const Xid& xid) = 0;
00267
00268 virtual void setTimeout(const Xid& xid,
00269 uint32_t timeout) = 0;
00270 };
00271
00272
00273
00274 class ExchangeHandler {
00275
00276 public:
00277 class Invoker;
00278
00279 ExchangeHandler(){};
00280 virtual ~ExchangeHandler() {}
00281
00282
00283 virtual void declare(const string& exchange,
00284 const string& type,
00285 const string& alternateExchange,
00286 bool passive,
00287 bool durable,
00288 bool autoDelete,
00289 const FieldTable& arguments) = 0;
00290
00291 virtual void delete_(const string& exchange,
00292 bool ifUnused) = 0;
00293
00294 virtual ExchangeQueryResult query(const string& name) = 0;
00295
00296 virtual void bind(const string& queue,
00297 const string& exchange,
00298 const string& bindingKey,
00299 const FieldTable& arguments) = 0;
00300
00301 virtual void unbind(const string& queue,
00302 const string& exchange,
00303 const string& bindingKey) = 0;
00304
00305 virtual ExchangeBoundResult bound(const string& exchange,
00306 const string& queue,
00307 const string& bindingKey,
00308 const FieldTable& arguments) = 0;
00309 };
00310
00311
00312
00313 class QueueHandler {
00314
00315 public:
00316 class Invoker;
00317
00318 QueueHandler(){};
00319 virtual ~QueueHandler() {}
00320
00321
00322 virtual void declare(const string& queue,
00323 const string& alternateExchange,
00324 bool passive,
00325 bool durable,
00326 bool exclusive,
00327 bool autoDelete,
00328 const FieldTable& arguments) = 0;
00329
00330 virtual void delete_(const string& queue,
00331 bool ifUnused,
00332 bool ifEmpty) = 0;
00333
00334 virtual void purge(const string& queue) = 0;
00335
00336 virtual QueueQueryResult query(const string& queue) = 0;
00337 };
00338
00339
00340
00341 class FileHandler {
00342
00343 public:
00344 class Invoker;
00345
00346 FileHandler(){};
00347 virtual ~FileHandler() {}
00348
00349
00350 virtual void qos(uint32_t prefetchSize,
00351 uint16_t prefetchCount,
00352 bool global) = 0;
00353
00354 virtual void qosOk( ) = 0;
00355
00356 virtual void consume(const string& queue,
00357 const string& consumerTag,
00358 bool noLocal,
00359 bool noAck,
00360 bool exclusive,
00361 bool nowait,
00362 const FieldTable& arguments) = 0;
00363
00364 virtual void consumeOk(const string& consumerTag) = 0;
00365
00366 virtual void cancel(const string& consumerTag) = 0;
00367
00368 virtual void open(const string& identifier,
00369 uint64_t contentSize) = 0;
00370
00371 virtual void openOk(uint64_t stagedSize) = 0;
00372
00373 virtual void publish(const string& exchange,
00374 const string& routingKey,
00375 bool mandatory,
00376 bool immediate,
00377 const string& identifier) = 0;
00378
00379 virtual void deliver(const string& consumerTag,
00380 uint64_t deliveryTag,
00381 bool redelivered,
00382 const string& exchange,
00383 const string& routingKey,
00384 const string& identifier) = 0;
00385
00386 virtual void ack(uint64_t deliveryTag,
00387 bool multiple) = 0;
00388
00389 virtual void reject(uint64_t deliveryTag,
00390 bool requeue) = 0;
00391 };
00392
00393
00394
00395 class StreamHandler {
00396
00397 public:
00398 class Invoker;
00399
00400 StreamHandler(){};
00401 virtual ~StreamHandler() {}
00402
00403
00404 virtual void qos(uint32_t prefetchSize,
00405 uint16_t prefetchCount,
00406 uint32_t consumeRate,
00407 bool global) = 0;
00408
00409 virtual void qosOk( ) = 0;
00410
00411 virtual void consume(const string& queue,
00412 const string& consumerTag,
00413 bool noLocal,
00414 bool exclusive,
00415 bool nowait,
00416 const FieldTable& arguments) = 0;
00417
00418 virtual void consumeOk(const string& consumerTag) = 0;
00419
00420 virtual void cancel(const string& consumerTag) = 0;
00421 };
00422
00423
00424
00425
00426
00427 virtual ConnectionHandler* getConnectionHandler() = 0;
00428 virtual SessionHandler* getSessionHandler() = 0;
00429 virtual ExecutionHandler* getExecutionHandler() = 0;
00430 virtual MessageHandler* getMessageHandler() = 0;
00431 virtual TxHandler* getTxHandler() = 0;
00432 virtual DtxHandler* getDtxHandler() = 0;
00433 virtual ExchangeHandler* getExchangeHandler() = 0;
00434 virtual QueueHandler* getQueueHandler() = 0;
00435 virtual FileHandler* getFileHandler() = 0;
00436 virtual StreamHandler* getStreamHandler() = 0;
00437 };
00438 }}
00439 #endif