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