00001 #ifndef QPID_FRAMING_AMQP_SERVERPROXY_H
00002 #define QPID_FRAMING_AMQP_SERVERPROXY_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 "qpid/framing/Proxy.h"
00031 #include "qpid/framing/Array.h"
00032 #include "qpid/framing/amqp_types.h"
00033 #include "qpid/framing/amqp_structs.h"
00034
00035 namespace qpid {
00036 namespace framing {
00037
00038 class AMQP_ServerProxy:
00039 public Proxy
00040 {
00041 public:
00042 AMQP_ServerProxy(FrameHandler& out);
00043
00044 class Connection:
00045 Proxy
00046 {
00047 public:
00048 Connection(FrameHandler& f) : Proxy(f) {}
00049 static Connection& get(AMQP_ServerProxy& proxy) { return proxy.getConnection(); }
00050 virtual void startOk(const FieldTable& clientProperties,
00051 const string& mechanism,
00052 const string& response,
00053 const string& locale);
00054
00055 virtual void secureOk(const string& response);
00056
00057 virtual void tuneOk(uint16_t channelMax,
00058 uint16_t maxFrameSize,
00059 uint16_t heartbeat);
00060
00061 virtual void open(const string& virtualHost,
00062 const Array& capabilities,
00063 bool insist);
00064
00065 virtual void close(uint16_t replyCode,
00066 const string& replyText);
00067
00068 virtual void closeOk();
00069
00070 };
00071
00072 Connection& getConnection() { return connectionProxy; }
00073
00074 class Session:
00075 Proxy
00076 {
00077 public:
00078 Session(FrameHandler& f) : Proxy(f) {}
00079 static Session& get(AMQP_ServerProxy& proxy) { return proxy.getSession(); }
00080 virtual void attach(const string& name,
00081 bool force);
00082
00083 virtual void attached(const string& name);
00084
00085 virtual void detach(const string& name);
00086
00087 virtual void detached(const string& name,
00088 uint8_t code);
00089
00090 virtual void requestTimeout(uint32_t timeout);
00091
00092 virtual void timeout(uint32_t timeout);
00093
00094 virtual void commandPoint(const SequenceNumber& commandId,
00095 uint64_t commandOffset);
00096
00097 virtual void expected(const SequenceSet& commands,
00098 const Array& fragments);
00099
00100 virtual void confirmed(const SequenceSet& commands,
00101 const Array& fragments);
00102
00103 virtual void completed(const SequenceSet& commands,
00104 bool timelyReply);
00105
00106 virtual void knownCompleted(const SequenceSet& commands);
00107
00108 virtual void flush(bool expected,
00109 bool confirmed,
00110 bool completed);
00111
00112 virtual void gap(const SequenceSet& commands);
00113
00114 };
00115
00116 Session& getSession() { return sessionProxy; }
00117
00118 class Execution:
00119 Proxy
00120 {
00121 public:
00122 Execution(FrameHandler& f) : Proxy(f) {}
00123 static Execution& get(AMQP_ServerProxy& proxy) { return proxy.getExecution(); }
00124 virtual void sync();
00125
00126 virtual void result(const SequenceNumber& commandId,
00127 const string& value);
00128
00129 virtual void exception(uint16_t errorCode,
00130 const SequenceNumber& commandId,
00131 uint8_t classCode,
00132 uint8_t commandCode,
00133 uint8_t fieldIndex,
00134 const string& description,
00135 const FieldTable& errorInfo);
00136
00137 };
00138
00139 Execution& getExecution() { return executionProxy; }
00140
00141 class Message:
00142 Proxy
00143 {
00144 public:
00145 Message(FrameHandler& f) : Proxy(f) {}
00146 static Message& get(AMQP_ServerProxy& proxy) { return proxy.getMessage(); }
00147 virtual void transfer(const string& destination,
00148 uint8_t acceptMode,
00149 uint8_t acquireMode);
00150
00151 virtual void accept(const SequenceSet& transfers);
00152
00153 virtual void reject(const SequenceSet& transfers,
00154 uint16_t code,
00155 const string& text);
00156
00157 virtual void release(const SequenceSet& transfers,
00158 bool setRedelivered);
00159
00160 virtual void acquire(const SequenceSet& transfers);
00161
00162 virtual void resume(const string& destination,
00163 const string& resumeId);
00164
00165 virtual void subscribe(const string& queue,
00166 const string& destination,
00167 uint8_t acceptMode,
00168 uint8_t acquireMode,
00169 bool exclusive,
00170 const string& resumeId,
00171 uint64_t resumeTtl,
00172 const FieldTable& arguments);
00173
00174 virtual void cancel(const string& destination);
00175
00176 virtual void setFlowMode(const string& destination,
00177 uint8_t flowMode);
00178
00179 virtual void flow(const string& destination,
00180 uint8_t unit,
00181 uint32_t value);
00182
00183 virtual void flush(const string& destination);
00184
00185 virtual void stop(const string& destination);
00186
00187 };
00188
00189 Message& getMessage() { return messageProxy; }
00190
00191 class Tx:
00192 Proxy
00193 {
00194 public:
00195 Tx(FrameHandler& f) : Proxy(f) {}
00196 static Tx& get(AMQP_ServerProxy& proxy) { return proxy.getTx(); }
00197 virtual void select();
00198
00199 virtual void commit();
00200
00201 virtual void rollback();
00202
00203 };
00204
00205 Tx& getTx() { return txProxy; }
00206
00207 class Dtx:
00208 Proxy
00209 {
00210 public:
00211 Dtx(FrameHandler& f) : Proxy(f) {}
00212 static Dtx& get(AMQP_ServerProxy& proxy) { return proxy.getDtx(); }
00213 virtual void select();
00214
00215 virtual void start(const Xid& xid,
00216 bool join,
00217 bool resume);
00218
00219 virtual void end(const Xid& xid,
00220 bool fail,
00221 bool suspend);
00222
00223 virtual void commit(const Xid& xid,
00224 bool onePhase);
00225
00226 virtual void forget(const Xid& xid);
00227
00228 virtual void getTimeout(const Xid& xid);
00229
00230 virtual void prepare(const Xid& xid);
00231
00232 virtual void recover();
00233
00234 virtual void rollback(const Xid& xid);
00235
00236 virtual void setTimeout(const Xid& xid,
00237 uint32_t timeout);
00238
00239 };
00240
00241 Dtx& getDtx() { return dtxProxy; }
00242
00243 class Exchange:
00244 Proxy
00245 {
00246 public:
00247 Exchange(FrameHandler& f) : Proxy(f) {}
00248 static Exchange& get(AMQP_ServerProxy& proxy) { return proxy.getExchange(); }
00249 virtual void declare(const string& exchange,
00250 const string& type,
00251 const string& alternateExchange,
00252 bool passive,
00253 bool durable,
00254 bool autoDelete,
00255 const FieldTable& arguments);
00256
00257 virtual void delete_(const string& exchange,
00258 bool ifUnused);
00259
00260 virtual void query(const string& name);
00261
00262 virtual void bind(const string& queue,
00263 const string& exchange,
00264 const string& bindingKey,
00265 const FieldTable& arguments);
00266
00267 virtual void unbind(const string& queue,
00268 const string& exchange,
00269 const string& bindingKey);
00270
00271 virtual void bound(const string& exchange,
00272 const string& queue,
00273 const string& bindingKey,
00274 const FieldTable& arguments);
00275
00276 };
00277
00278 Exchange& getExchange() { return exchangeProxy; }
00279
00280 class Queue:
00281 Proxy
00282 {
00283 public:
00284 Queue(FrameHandler& f) : Proxy(f) {}
00285 static Queue& get(AMQP_ServerProxy& proxy) { return proxy.getQueue(); }
00286 virtual void declare(const string& queue,
00287 const string& alternateExchange,
00288 bool passive,
00289 bool durable,
00290 bool exclusive,
00291 bool autoDelete,
00292 const FieldTable& arguments);
00293
00294 virtual void delete_(const string& queue,
00295 bool ifUnused,
00296 bool ifEmpty);
00297
00298 virtual void purge(const string& queue);
00299
00300 virtual void query(const string& queue);
00301
00302 };
00303
00304 Queue& getQueue() { return queueProxy; }
00305
00306 class File:
00307 Proxy
00308 {
00309 public:
00310 File(FrameHandler& f) : Proxy(f) {}
00311 static File& get(AMQP_ServerProxy& proxy) { return proxy.getFile(); }
00312 virtual void qos(uint32_t prefetchSize,
00313 uint16_t prefetchCount,
00314 bool global);
00315
00316 virtual void consume(const string& queue,
00317 const string& consumerTag,
00318 bool noLocal,
00319 bool noAck,
00320 bool exclusive,
00321 bool nowait,
00322 const FieldTable& arguments);
00323
00324 virtual void cancel(const string& consumerTag);
00325
00326 virtual void open(const string& identifier,
00327 uint64_t contentSize);
00328
00329 virtual void openOk(uint64_t stagedSize);
00330
00331 virtual void stage();
00332
00333 virtual void publish(const string& exchange,
00334 const string& routingKey,
00335 bool mandatory,
00336 bool immediate,
00337 const string& identifier);
00338
00339 virtual void ack(uint64_t deliveryTag,
00340 bool multiple);
00341
00342 virtual void reject(uint64_t deliveryTag,
00343 bool requeue);
00344
00345 };
00346
00347 File& getFile() { return fileProxy; }
00348
00349 class Stream:
00350 Proxy
00351 {
00352 public:
00353 Stream(FrameHandler& f) : Proxy(f) {}
00354 static Stream& get(AMQP_ServerProxy& proxy) { return proxy.getStream(); }
00355 virtual void qos(uint32_t prefetchSize,
00356 uint16_t prefetchCount,
00357 uint32_t consumeRate,
00358 bool global);
00359
00360 virtual void consume(const string& queue,
00361 const string& consumerTag,
00362 bool noLocal,
00363 bool exclusive,
00364 bool nowait,
00365 const FieldTable& arguments);
00366
00367 virtual void cancel(const string& consumerTag);
00368
00369 virtual void publish(const string& exchange,
00370 const string& routingKey,
00371 bool mandatory,
00372 bool immediate);
00373
00374 };
00375
00376 Stream& getStream() { return streamProxy; }
00377
00378 private:
00379 Connection connectionProxy;
00380 Session sessionProxy;
00381 Execution executionProxy;
00382 Message messageProxy;
00383 Tx txProxy;
00384 Dtx dtxProxy;
00385 Exchange exchangeProxy;
00386 Queue queueProxy;
00387 File fileProxy;
00388 Stream streamProxy;
00389 };
00390
00391 }}
00392
00393 #endif