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