00001 #ifndef QPID_FRAMING_AMQP_ALLPROXY_H
00002 #define QPID_FRAMING_AMQP_ALLPROXY_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_AllProxy:
00040 public Proxy
00041 {
00042 public:
00043 QPID_COMMON_EXTERN AMQP_AllProxy(FrameHandler& out);
00044
00045 class Connection:
00046 public Proxy
00047 {
00048 public:
00049 Connection(FrameHandler& f) : Proxy(f) {}
00050 static Connection& get(AMQP_AllProxy& proxy) { return proxy.getConnection(); }
00051 QPID_COMMON_EXTERN virtual void start(const FieldTable& serverProperties,
00052 const Array& mechanisms,
00053 const Array& locales);
00054
00055 QPID_COMMON_EXTERN virtual void startOk(const FieldTable& clientProperties,
00056 const string& mechanism,
00057 const string& response,
00058 const string& locale);
00059
00060 QPID_COMMON_EXTERN virtual void secure(const string& challenge);
00061
00062 QPID_COMMON_EXTERN virtual void secureOk(const string& response);
00063
00064 QPID_COMMON_EXTERN virtual void tune(uint16_t channelMax,
00065 uint16_t maxFrameSize,
00066 uint16_t heartbeatMin,
00067 uint16_t heartbeatMax);
00068
00069 QPID_COMMON_EXTERN virtual void tuneOk(uint16_t channelMax,
00070 uint16_t maxFrameSize,
00071 uint16_t heartbeat);
00072
00073 QPID_COMMON_EXTERN virtual void open(const string& virtualHost,
00074 const Array& capabilities,
00075 bool insist);
00076
00077 QPID_COMMON_EXTERN virtual void openOk(const Array& knownHosts);
00078
00079 QPID_COMMON_EXTERN virtual void redirect(const string& host,
00080 const Array& knownHosts);
00081
00082 QPID_COMMON_EXTERN virtual void heartbeat();
00083
00084 QPID_COMMON_EXTERN virtual void close(uint16_t replyCode,
00085 const string& replyText);
00086
00087 QPID_COMMON_EXTERN virtual void closeOk();
00088
00089 };
00090
00091 Connection& getConnection() { return connectionProxy; }
00092
00093 class Session:
00094 public Proxy
00095 {
00096 public:
00097 Session(FrameHandler& f) : Proxy(f) {}
00098 static Session& get(AMQP_AllProxy& proxy) { return proxy.getSession(); }
00099 QPID_COMMON_EXTERN virtual void attach(const string& name,
00100 bool force);
00101
00102 QPID_COMMON_EXTERN virtual void attached(const string& name);
00103
00104 QPID_COMMON_EXTERN virtual void detach(const string& name);
00105
00106 QPID_COMMON_EXTERN virtual void detached(const string& name,
00107 uint8_t code);
00108
00109 QPID_COMMON_EXTERN virtual void requestTimeout(uint32_t timeout);
00110
00111 QPID_COMMON_EXTERN virtual void timeout(uint32_t timeout);
00112
00113 QPID_COMMON_EXTERN virtual void commandPoint(const SequenceNumber& commandId,
00114 uint64_t commandOffset);
00115
00116 QPID_COMMON_EXTERN virtual void expected(const SequenceSet& commands,
00117 const Array& fragments);
00118
00119 QPID_COMMON_EXTERN virtual void confirmed(const SequenceSet& commands,
00120 const Array& fragments);
00121
00122 QPID_COMMON_EXTERN virtual void completed(const SequenceSet& commands,
00123 bool timelyReply);
00124
00125 QPID_COMMON_EXTERN virtual void knownCompleted(const SequenceSet& commands);
00126
00127 QPID_COMMON_EXTERN virtual void flush(bool expected,
00128 bool confirmed,
00129 bool completed);
00130
00131 QPID_COMMON_EXTERN virtual void gap(const SequenceSet& commands);
00132
00133 };
00134
00135 Session& getSession() { return sessionProxy; }
00136
00137 class Execution:
00138 public Proxy
00139 {
00140 public:
00141 Execution(FrameHandler& f) : Proxy(f) {}
00142 static Execution& get(AMQP_AllProxy& proxy) { return proxy.getExecution(); }
00143 QPID_COMMON_EXTERN virtual void sync();
00144
00145 QPID_COMMON_EXTERN virtual void result(const SequenceNumber& commandId,
00146 const string& value);
00147
00148 QPID_COMMON_EXTERN virtual void exception(uint16_t errorCode,
00149 const SequenceNumber& commandId,
00150 uint8_t classCode,
00151 uint8_t commandCode,
00152 uint8_t fieldIndex,
00153 const string& description,
00154 const FieldTable& errorInfo);
00155
00156 };
00157
00158 Execution& getExecution() { return executionProxy; }
00159
00160 class Message:
00161 public Proxy
00162 {
00163 public:
00164 Message(FrameHandler& f) : Proxy(f) {}
00165 static Message& get(AMQP_AllProxy& proxy) { return proxy.getMessage(); }
00166 QPID_COMMON_EXTERN virtual void transfer(const string& destination,
00167 uint8_t acceptMode,
00168 uint8_t acquireMode);
00169
00170 QPID_COMMON_EXTERN virtual void accept(const SequenceSet& transfers);
00171
00172 QPID_COMMON_EXTERN virtual void reject(const SequenceSet& transfers,
00173 uint16_t code,
00174 const string& text);
00175
00176 QPID_COMMON_EXTERN virtual void release(const SequenceSet& transfers,
00177 bool setRedelivered);
00178
00179 QPID_COMMON_EXTERN virtual void acquire(const SequenceSet& transfers);
00180
00181 QPID_COMMON_EXTERN virtual void resume(const string& destination,
00182 const string& resumeId);
00183
00184 QPID_COMMON_EXTERN virtual void subscribe(const string& queue,
00185 const string& destination,
00186 uint8_t acceptMode,
00187 uint8_t acquireMode,
00188 bool exclusive,
00189 const string& resumeId,
00190 uint64_t resumeTtl,
00191 const FieldTable& arguments);
00192
00193 QPID_COMMON_EXTERN virtual void cancel(const string& destination);
00194
00195 QPID_COMMON_EXTERN virtual void setFlowMode(const string& destination,
00196 uint8_t flowMode);
00197
00198 QPID_COMMON_EXTERN virtual void flow(const string& destination,
00199 uint8_t unit,
00200 uint32_t value);
00201
00202 QPID_COMMON_EXTERN virtual void flush(const string& destination);
00203
00204 QPID_COMMON_EXTERN virtual void stop(const string& destination);
00205
00206 };
00207
00208 Message& getMessage() { return messageProxy; }
00209
00210 class Tx:
00211 public Proxy
00212 {
00213 public:
00214 Tx(FrameHandler& f) : Proxy(f) {}
00215 static Tx& get(AMQP_AllProxy& proxy) { return proxy.getTx(); }
00216 QPID_COMMON_EXTERN virtual void select();
00217
00218 QPID_COMMON_EXTERN virtual void commit();
00219
00220 QPID_COMMON_EXTERN virtual void rollback();
00221
00222 };
00223
00224 Tx& getTx() { return txProxy; }
00225
00226 class Dtx:
00227 public Proxy
00228 {
00229 public:
00230 Dtx(FrameHandler& f) : Proxy(f) {}
00231 static Dtx& get(AMQP_AllProxy& proxy) { return proxy.getDtx(); }
00232 QPID_COMMON_EXTERN virtual void select();
00233
00234 QPID_COMMON_EXTERN virtual void start(const Xid& xid,
00235 bool join,
00236 bool resume);
00237
00238 QPID_COMMON_EXTERN virtual void end(const Xid& xid,
00239 bool fail,
00240 bool suspend);
00241
00242 QPID_COMMON_EXTERN virtual void commit(const Xid& xid,
00243 bool onePhase);
00244
00245 QPID_COMMON_EXTERN virtual void forget(const Xid& xid);
00246
00247 QPID_COMMON_EXTERN virtual void getTimeout(const Xid& xid);
00248
00249 QPID_COMMON_EXTERN virtual void prepare(const Xid& xid);
00250
00251 QPID_COMMON_EXTERN virtual void recover();
00252
00253 QPID_COMMON_EXTERN virtual void rollback(const Xid& xid);
00254
00255 QPID_COMMON_EXTERN virtual void setTimeout(const Xid& xid,
00256 uint32_t timeout);
00257
00258 };
00259
00260 Dtx& getDtx() { return dtxProxy; }
00261
00262 class Exchange:
00263 public Proxy
00264 {
00265 public:
00266 Exchange(FrameHandler& f) : Proxy(f) {}
00267 static Exchange& get(AMQP_AllProxy& proxy) { return proxy.getExchange(); }
00268 QPID_COMMON_EXTERN virtual void declare(const string& exchange,
00269 const string& type,
00270 const string& alternateExchange,
00271 bool passive,
00272 bool durable,
00273 bool autoDelete,
00274 const FieldTable& arguments);
00275
00276 QPID_COMMON_EXTERN virtual void delete_(const string& exchange,
00277 bool ifUnused);
00278
00279 QPID_COMMON_EXTERN virtual void query(const string& name);
00280
00281 QPID_COMMON_EXTERN virtual void bind(const string& queue,
00282 const string& exchange,
00283 const string& bindingKey,
00284 const FieldTable& arguments);
00285
00286 QPID_COMMON_EXTERN virtual void unbind(const string& queue,
00287 const string& exchange,
00288 const string& bindingKey);
00289
00290 QPID_COMMON_EXTERN virtual void bound(const string& exchange,
00291 const string& queue,
00292 const string& bindingKey,
00293 const FieldTable& arguments);
00294
00295 };
00296
00297 Exchange& getExchange() { return exchangeProxy; }
00298
00299 class Queue:
00300 public Proxy
00301 {
00302 public:
00303 Queue(FrameHandler& f) : Proxy(f) {}
00304 static Queue& get(AMQP_AllProxy& proxy) { return proxy.getQueue(); }
00305 QPID_COMMON_EXTERN virtual void declare(const string& queue,
00306 const string& alternateExchange,
00307 bool passive,
00308 bool durable,
00309 bool exclusive,
00310 bool autoDelete,
00311 const FieldTable& arguments);
00312
00313 QPID_COMMON_EXTERN virtual void delete_(const string& queue,
00314 bool ifUnused,
00315 bool ifEmpty);
00316
00317 QPID_COMMON_EXTERN virtual void purge(const string& queue);
00318
00319 QPID_COMMON_EXTERN virtual void query(const string& queue);
00320
00321 };
00322
00323 Queue& getQueue() { return queueProxy; }
00324
00325 class File:
00326 public Proxy
00327 {
00328 public:
00329 File(FrameHandler& f) : Proxy(f) {}
00330 static File& get(AMQP_AllProxy& proxy) { return proxy.getFile(); }
00331 QPID_COMMON_EXTERN virtual void qos(uint32_t prefetchSize,
00332 uint16_t prefetchCount,
00333 bool global);
00334
00335 QPID_COMMON_EXTERN virtual void qosOk();
00336
00337 QPID_COMMON_EXTERN virtual void consume(const string& queue,
00338 const string& consumerTag,
00339 bool noLocal,
00340 bool noAck,
00341 bool exclusive,
00342 bool nowait,
00343 const FieldTable& arguments);
00344
00345 QPID_COMMON_EXTERN virtual void consumeOk(const string& consumerTag);
00346
00347 QPID_COMMON_EXTERN virtual void cancel(const string& consumerTag);
00348
00349 QPID_COMMON_EXTERN virtual void open(const string& identifier,
00350 uint64_t contentSize);
00351
00352 QPID_COMMON_EXTERN virtual void openOk(uint64_t stagedSize);
00353
00354 QPID_COMMON_EXTERN virtual void stage();
00355
00356 QPID_COMMON_EXTERN virtual void publish(const string& exchange,
00357 const string& routingKey,
00358 bool mandatory,
00359 bool immediate,
00360 const string& identifier);
00361
00362 QPID_COMMON_EXTERN virtual void return_(uint16_t replyCode,
00363 const string& replyText,
00364 const string& exchange,
00365 const string& routingKey);
00366
00367 QPID_COMMON_EXTERN virtual void deliver(const string& consumerTag,
00368 uint64_t deliveryTag,
00369 bool redelivered,
00370 const string& exchange,
00371 const string& routingKey,
00372 const string& identifier);
00373
00374 QPID_COMMON_EXTERN virtual void ack(uint64_t deliveryTag,
00375 bool multiple);
00376
00377 QPID_COMMON_EXTERN virtual void reject(uint64_t deliveryTag,
00378 bool requeue);
00379
00380 };
00381
00382 File& getFile() { return fileProxy; }
00383
00384 class Stream:
00385 public Proxy
00386 {
00387 public:
00388 Stream(FrameHandler& f) : Proxy(f) {}
00389 static Stream& get(AMQP_AllProxy& proxy) { return proxy.getStream(); }
00390 QPID_COMMON_EXTERN virtual void qos(uint32_t prefetchSize,
00391 uint16_t prefetchCount,
00392 uint32_t consumeRate,
00393 bool global);
00394
00395 QPID_COMMON_EXTERN virtual void qosOk();
00396
00397 QPID_COMMON_EXTERN virtual void consume(const string& queue,
00398 const string& consumerTag,
00399 bool noLocal,
00400 bool exclusive,
00401 bool nowait,
00402 const FieldTable& arguments);
00403
00404 QPID_COMMON_EXTERN virtual void consumeOk(const string& consumerTag);
00405
00406 QPID_COMMON_EXTERN virtual void cancel(const string& consumerTag);
00407
00408 QPID_COMMON_EXTERN virtual void publish(const string& exchange,
00409 const string& routingKey,
00410 bool mandatory,
00411 bool immediate);
00412
00413 QPID_COMMON_EXTERN virtual void return_(uint16_t replyCode,
00414 const string& replyText,
00415 const string& exchange,
00416 const string& routingKey);
00417
00418 QPID_COMMON_EXTERN virtual void deliver(const string& consumerTag,
00419 uint64_t deliveryTag,
00420 const string& exchange,
00421 const string& queue);
00422
00423 };
00424
00425 Stream& getStream() { return streamProxy; }
00426
00427 class Cluster:
00428 public Proxy
00429 {
00430 public:
00431 Cluster(FrameHandler& f) : Proxy(f) {}
00432 static Cluster& get(AMQP_AllProxy& proxy) { return proxy.getCluster(); }
00433 QPID_COMMON_EXTERN virtual void updateRequest(const string& url);
00434
00435 QPID_COMMON_EXTERN virtual void updateOffer(uint64_t updatee,
00436 const Uuid& clusterId,
00437 uint32_t version);
00438
00439 QPID_COMMON_EXTERN virtual void retractOffer(uint64_t updatee);
00440
00441 QPID_COMMON_EXTERN virtual void ready(const string& url);
00442
00443 QPID_COMMON_EXTERN virtual void configChange(const string& current);
00444
00445 QPID_COMMON_EXTERN virtual void messageExpired(uint64_t id);
00446
00447 QPID_COMMON_EXTERN virtual void errorCheck(uint8_t type,
00448 uint64_t frameSeq);
00449
00450 QPID_COMMON_EXTERN virtual void shutdown();
00451
00452 };
00453
00454 Cluster& getCluster() { return clusterProxy; }
00455
00456 class ClusterConnection:
00457 public Proxy
00458 {
00459 public:
00460 ClusterConnection(FrameHandler& f) : Proxy(f) {}
00461 static ClusterConnection& get(AMQP_AllProxy& proxy) { return proxy.getClusterConnection(); }
00462 QPID_COMMON_EXTERN virtual void announce();
00463
00464 QPID_COMMON_EXTERN virtual void deliverClose();
00465
00466 QPID_COMMON_EXTERN virtual void deliverDoOutput(uint32_t limit);
00467
00468 QPID_COMMON_EXTERN virtual void abort();
00469
00470 QPID_COMMON_EXTERN virtual void consumerState(const string& name,
00471 bool blocked,
00472 bool notifyEnabled,
00473 bool isInListener);
00474
00475 QPID_COMMON_EXTERN virtual void deliveryRecord(const string& queue,
00476 const SequenceNumber& position,
00477 const string& tag,
00478 const SequenceNumber& id,
00479 bool acquired,
00480 bool accepted,
00481 bool cancelled,
00482 bool completed,
00483 bool ended,
00484 bool windowing,
00485 bool enqueued,
00486 uint32_t credit);
00487
00488 QPID_COMMON_EXTERN virtual void txStart();
00489
00490 QPID_COMMON_EXTERN virtual void txAccept(const SequenceSet& commands);
00491
00492 QPID_COMMON_EXTERN virtual void txDequeue(const string& queue);
00493
00494 QPID_COMMON_EXTERN virtual void txEnqueue(const string& queue);
00495
00496 QPID_COMMON_EXTERN virtual void txPublish(const Array& queues,
00497 bool delivered);
00498
00499 QPID_COMMON_EXTERN virtual void txEnd();
00500
00501 QPID_COMMON_EXTERN virtual void accumulatedAck(const SequenceSet& commands);
00502
00503 QPID_COMMON_EXTERN virtual void outputTask(uint16_t channel,
00504 const string& name);
00505
00506 QPID_COMMON_EXTERN virtual void sessionState(const SequenceNumber& replayStart,
00507 const SequenceNumber& commandPoint,
00508 const SequenceSet& sentIncomplete,
00509 const SequenceNumber& expected,
00510 const SequenceNumber& received,
00511 const SequenceSet& unknownCompleted,
00512 const SequenceSet& receivedIncomplete);
00513
00514 QPID_COMMON_EXTERN virtual void shadowReady(uint64_t memberId,
00515 uint64_t connectionId,
00516 const string& userName,
00517 const string& fragment,
00518 uint32_t sendMax);
00519
00520 QPID_COMMON_EXTERN virtual void membership(const FieldTable& joiners,
00521 const FieldTable& members,
00522 uint64_t frameSeq);
00523
00524 QPID_COMMON_EXTERN virtual void retractOffer();
00525
00526 QPID_COMMON_EXTERN virtual void queuePosition(const string& queue,
00527 const SequenceNumber& position);
00528
00529 QPID_COMMON_EXTERN virtual void exchange(const string& encoded);
00530
00531 QPID_COMMON_EXTERN virtual void queue(const string& encoded);
00532
00533 QPID_COMMON_EXTERN virtual void expiryId(uint64_t expiryId);
00534
00535 };
00536
00537 ClusterConnection& getClusterConnection() { return clusterConnectionProxy; }
00538
00539 private:
00540 Connection connectionProxy;
00541 Session sessionProxy;
00542 Execution executionProxy;
00543 Message messageProxy;
00544 Tx txProxy;
00545 Dtx dtxProxy;
00546 Exchange exchangeProxy;
00547 Queue queueProxy;
00548 File fileProxy;
00549 Stream streamProxy;
00550 Cluster clusterProxy;
00551 ClusterConnection clusterConnectionProxy;
00552 };
00553
00554 }}
00555
00556 #endif