00001 #ifndef QPID_FRAMING_AMQP_CLIENTOPERATIONS_H
00002 #define QPID_FRAMING_AMQP_CLIENTOPERATIONS_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_ClientOperations {
00040 public:
00041 class Invoker;
00042
00043 virtual ~AMQP_ClientOperations() {}
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(uint8_t versionMajor,
00059 uint8_t versionMinor,
00060 const FieldTable& serverProperties,
00061 const string& mechanisms,
00062 const string& locales) = 0;
00063
00064 virtual void secure(const string& challenge) = 0;
00065
00066 virtual void tune(uint16_t channelMax,
00067 uint32_t frameMax,
00068 uint16_t heartbeat) = 0;
00069
00070 virtual void openOk(const string& knownHosts) = 0;
00071
00072 virtual void redirect(const string& host,
00073 const string& knownHosts) = 0;
00074
00075 virtual void close(uint16_t replyCode,
00076 const string& replyText,
00077 uint16_t classId,
00078 uint16_t methodId) = 0;
00079
00080 virtual void closeOk( ) = 0;
00081 };
00082
00083
00084
00085 class SessionHandler {
00086
00087 public:
00088 class Invoker;
00089
00090 SessionHandler(){};
00091 virtual ~SessionHandler() {}
00092
00093
00094 virtual void attached(const Uuid& sessionId,
00095 uint32_t detachedLifetime) = 0;
00096
00097 virtual void flow(bool active) = 0;
00098
00099 virtual void flowOk(bool active) = 0;
00100
00101 virtual void close( ) = 0;
00102
00103 virtual void closed(uint16_t replyCode,
00104 const string& replyText) = 0;
00105
00106 virtual void detached( ) = 0;
00107
00108 virtual void ack(uint32_t cumulativeSeenMark,
00109 const SequenceNumberSet& seenFrameSet) = 0;
00110
00111 virtual void highWaterMark(uint32_t lastSentMark) = 0;
00112
00113 virtual void solicitAck( ) = 0;
00114 };
00115
00116
00117
00118 class AccessHandler {
00119
00120 public:
00121 class Invoker;
00122
00123 AccessHandler(){};
00124 virtual ~AccessHandler() {}
00125
00126
00127 virtual void requestOk(uint16_t ticket) = 0;
00128 };
00129
00130
00131
00132 class BasicHandler {
00133
00134 public:
00135 class Invoker;
00136
00137 BasicHandler(){};
00138 virtual ~BasicHandler() {}
00139
00140
00141 virtual void consumeOk(const string& consumerTag) = 0;
00142
00143 virtual void getEmpty(const string& clusterId) = 0;
00144 };
00145
00146
00147
00148 class FileHandler {
00149
00150 public:
00151 class Invoker;
00152
00153 FileHandler(){};
00154 virtual ~FileHandler() {}
00155
00156
00157 virtual void qosOk( ) = 0;
00158
00159 virtual void consumeOk(const string& consumerTag) = 0;
00160
00161 virtual void open(const string& identifier,
00162 uint64_t contentSize) = 0;
00163
00164 virtual void openOk(uint64_t stagedSize) = 0;
00165
00166 virtual void deliver(const string& consumerTag,
00167 uint64_t deliveryTag,
00168 bool redelivered,
00169 const string& exchange,
00170 const string& routingKey,
00171 const string& identifier) = 0;
00172 };
00173
00174
00175
00176 class StreamHandler {
00177
00178 public:
00179 class Invoker;
00180
00181 StreamHandler(){};
00182 virtual ~StreamHandler() {}
00183
00184
00185 virtual void qosOk( ) = 0;
00186
00187 virtual void consumeOk(const string& consumerTag) = 0;
00188 };
00189
00190
00191
00192 class MessageHandler {
00193
00194 public:
00195 class Invoker;
00196
00197 MessageHandler(){};
00198 virtual ~MessageHandler() {}
00199
00200
00201 virtual void reject(const SequenceNumberSet& transfers,
00202 uint16_t code,
00203 const string& text) = 0;
00204
00205 virtual void acquired(const SequenceNumberSet& transfers) = 0;
00206
00207 virtual void release(const SequenceNumberSet& transfers) = 0;
00208
00209 virtual void open(const string& reference) = 0;
00210
00211 virtual void close(const string& reference) = 0;
00212
00213 virtual void append(const string& reference,
00214 const string& bytes) = 0;
00215
00216 virtual void checkpoint(const string& reference,
00217 const string& identifier) = 0;
00218
00219 virtual void resume(const string& reference,
00220 const string& identifier) = 0;
00221
00222 virtual void flowMode(const string& destination,
00223 uint8_t mode) = 0;
00224
00225 virtual void flow(const string& destination,
00226 uint8_t unit,
00227 uint32_t value) = 0;
00228
00229 virtual void stop(const string& destination) = 0;
00230
00231 virtual void empty( ) = 0;
00232
00233 virtual void offset(uint64_t value) = 0;
00234 };
00235
00236
00237
00238 class ExecutionHandler {
00239
00240 public:
00241 class Invoker;
00242
00243 ExecutionHandler(){};
00244 virtual ~ExecutionHandler() {}
00245
00246
00247 virtual void flush( ) = 0;
00248
00249 virtual void complete(uint32_t cumulativeExecutionMark,
00250 const SequenceNumberSet& rangedExecutionSet) = 0;
00251
00252 virtual void noop( ) = 0;
00253
00254 virtual void result(uint32_t commandId,
00255 const string& data) = 0;
00256
00257 virtual void sync( ) = 0;
00258 };
00259
00260
00261
00262 class Connection010Handler {
00263
00264 public:
00265 class Invoker;
00266
00267 Connection010Handler(){};
00268 virtual ~Connection010Handler() {}
00269
00270
00271 virtual void start(const FieldTable& serverProperties,
00272 const Array& mechanisms,
00273 const Array& locales) = 0;
00274
00275 virtual void secure(const string& challenge) = 0;
00276
00277 virtual void tune(uint16_t channelMax,
00278 uint16_t frameMax,
00279 uint16_t heartbeatMin,
00280 uint16_t heartbeatMax) = 0;
00281
00282 virtual void openOk(const Array& knownHosts) = 0;
00283
00284 virtual void redirect(const string& host,
00285 const string& knownHosts) = 0;
00286
00287 virtual void close(uint16_t replyCode,
00288 const string& replyText,
00289 uint16_t classId,
00290 uint16_t methodId) = 0;
00291
00292 virtual void closeOk( ) = 0;
00293 };
00294
00295
00296
00297 class Session010Handler {
00298
00299 public:
00300 class Invoker;
00301
00302 Session010Handler(){};
00303 virtual ~Session010Handler() {}
00304
00305
00306 virtual void attach(const string& name,
00307 bool force) = 0;
00308
00309 virtual void attached(const string& name) = 0;
00310
00311 virtual void detach(const string& name) = 0;
00312
00313 virtual void detached(const string& name,
00314 uint8_t detachCode) = 0;
00315
00316 virtual void requestTimeout(uint32_t timeout) = 0;
00317
00318 virtual void timeout(uint32_t timeout) = 0;
00319
00320 virtual void commandPoint(uint32_t commandId,
00321 uint64_t commandOffset) = 0;
00322
00323 virtual void expected(const SequenceSet& commands,
00324 const Array& fragments) = 0;
00325
00326 virtual void confirmed(const SequenceSet& commands,
00327 const Array& fragments) = 0;
00328
00329 virtual void completed(const SequenceSet& commands,
00330 bool timelyReply) = 0;
00331
00332 virtual void knownCompleted(const SequenceSet& commands) = 0;
00333
00334 virtual void flush(bool expected,
00335 bool confirmed,
00336 bool completed) = 0;
00337
00338 virtual void gap(const SequenceSet& commands) = 0;
00339 };
00340
00341
00342
00343 class Execution010Handler {
00344
00345 public:
00346 class Invoker;
00347
00348 Execution010Handler(){};
00349 virtual ~Execution010Handler() {}
00350
00351
00352 virtual void sync( ) = 0;
00353
00354 virtual void result(uint32_t commandId,
00355 const string& value) = 0;
00356
00357 virtual void exception(uint16_t errorCode,
00358 uint32_t commandId,
00359 uint8_t classCode,
00360 uint8_t commandCode,
00361 uint8_t fieldIndex,
00362 const string& description,
00363 const FieldTable& errorInfo) = 0;
00364 };
00365
00366
00367
00368 class Message010Handler {
00369
00370 public:
00371 class Invoker;
00372
00373 Message010Handler(){};
00374 virtual ~Message010Handler() {}
00375
00376
00377 virtual void transfer(const string& destination,
00378 uint8_t acceptMode,
00379 uint8_t acquireMode) = 0;
00380
00381 virtual void accept(const SequenceSet& commands) = 0;
00382
00383 virtual void reject(const SequenceSet& commands,
00384 uint16_t code,
00385 const string& text) = 0;
00386 };
00387
00388
00389
00390
00391
00392 virtual ConnectionHandler* getConnectionHandler() = 0;
00393 virtual SessionHandler* getSessionHandler() = 0;
00394 virtual AccessHandler* getAccessHandler() = 0;
00395 virtual BasicHandler* getBasicHandler() = 0;
00396 virtual FileHandler* getFileHandler() = 0;
00397 virtual StreamHandler* getStreamHandler() = 0;
00398 virtual MessageHandler* getMessageHandler() = 0;
00399 virtual ExecutionHandler* getExecutionHandler() = 0;
00400 virtual Connection010Handler* getConnection010Handler() = 0;
00401 virtual Session010Handler* getSession010Handler() = 0;
00402 virtual Execution010Handler* getExecution010Handler() = 0;
00403 virtual Message010Handler* getMessage010Handler() = 0;
00404 };
00405 }}
00406 #endif