00001 #ifndef QPID_FRAMING_AMQP_CLIENTPROXY_H
00002 #define QPID_FRAMING_AMQP_CLIENTPROXY_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_ClientProxy:
00040 public Proxy
00041 {
00042 public:
00043 QPID_COMMON_EXTERN AMQP_ClientProxy(FrameHandler& out);
00044
00045 class Connection:
00046 public Proxy
00047 {
00048 public:
00049 Connection(FrameHandler& f) : Proxy(f) {}
00050 static Connection& get(AMQP_ClientProxy& 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 secure(const string& challenge);
00056
00057 QPID_COMMON_EXTERN virtual void tune(uint16_t channelMax,
00058 uint16_t maxFrameSize,
00059 uint16_t heartbeatMin,
00060 uint16_t heartbeatMax);
00061
00062 QPID_COMMON_EXTERN virtual void openOk(const Array& knownHosts);
00063
00064 QPID_COMMON_EXTERN virtual void redirect(const string& host,
00065 const Array& knownHosts);
00066
00067 QPID_COMMON_EXTERN virtual void heartbeat();
00068
00069 QPID_COMMON_EXTERN virtual void close(uint16_t replyCode,
00070 const string& replyText);
00071
00072 QPID_COMMON_EXTERN virtual void closeOk();
00073
00074 };
00075
00076 Connection& getConnection() { return connectionProxy; }
00077
00078 class Session:
00079 public Proxy
00080 {
00081 public:
00082 Session(FrameHandler& f) : Proxy(f) {}
00083 static Session& get(AMQP_ClientProxy& proxy) { return proxy.getSession(); }
00084 QPID_COMMON_EXTERN virtual void attach(const string& name,
00085 bool force);
00086
00087 QPID_COMMON_EXTERN virtual void attached(const string& name);
00088
00089 QPID_COMMON_EXTERN virtual void detach(const string& name);
00090
00091 QPID_COMMON_EXTERN virtual void detached(const string& name,
00092 uint8_t code);
00093
00094 QPID_COMMON_EXTERN virtual void requestTimeout(uint32_t timeout);
00095
00096 QPID_COMMON_EXTERN virtual void timeout(uint32_t timeout);
00097
00098 QPID_COMMON_EXTERN virtual void commandPoint(const SequenceNumber& commandId,
00099 uint64_t commandOffset);
00100
00101 QPID_COMMON_EXTERN virtual void expected(const SequenceSet& commands,
00102 const Array& fragments);
00103
00104 QPID_COMMON_EXTERN virtual void confirmed(const SequenceSet& commands,
00105 const Array& fragments);
00106
00107 QPID_COMMON_EXTERN virtual void completed(const SequenceSet& commands,
00108 bool timelyReply);
00109
00110 QPID_COMMON_EXTERN virtual void knownCompleted(const SequenceSet& commands);
00111
00112 QPID_COMMON_EXTERN virtual void flush(bool expected,
00113 bool confirmed,
00114 bool completed);
00115
00116 QPID_COMMON_EXTERN virtual void gap(const SequenceSet& commands);
00117
00118 };
00119
00120 Session& getSession() { return sessionProxy; }
00121
00122 class Execution:
00123 public Proxy
00124 {
00125 public:
00126 Execution(FrameHandler& f) : Proxy(f) {}
00127 static Execution& get(AMQP_ClientProxy& proxy) { return proxy.getExecution(); }
00128 QPID_COMMON_EXTERN virtual void sync();
00129
00130 QPID_COMMON_EXTERN virtual void result(const SequenceNumber& commandId,
00131 const string& value);
00132
00133 QPID_COMMON_EXTERN virtual void exception(uint16_t errorCode,
00134 const SequenceNumber& commandId,
00135 uint8_t classCode,
00136 uint8_t commandCode,
00137 uint8_t fieldIndex,
00138 const string& description,
00139 const FieldTable& errorInfo);
00140
00141 };
00142
00143 Execution& getExecution() { return executionProxy; }
00144
00145 class Message:
00146 public Proxy
00147 {
00148 public:
00149 Message(FrameHandler& f) : Proxy(f) {}
00150 static Message& get(AMQP_ClientProxy& proxy) { return proxy.getMessage(); }
00151 QPID_COMMON_EXTERN virtual void transfer(const string& destination,
00152 uint8_t acceptMode,
00153 uint8_t acquireMode);
00154
00155 QPID_COMMON_EXTERN virtual void accept(const SequenceSet& transfers);
00156
00157 QPID_COMMON_EXTERN virtual void reject(const SequenceSet& transfers,
00158 uint16_t code,
00159 const string& text);
00160
00161 QPID_COMMON_EXTERN virtual void release(const SequenceSet& transfers,
00162 bool setRedelivered);
00163
00164 QPID_COMMON_EXTERN virtual void resume(const string& destination,
00165 const string& resumeId);
00166
00167 QPID_COMMON_EXTERN virtual void setFlowMode(const string& destination,
00168 uint8_t flowMode);
00169
00170 QPID_COMMON_EXTERN virtual void flow(const string& destination,
00171 uint8_t unit,
00172 uint32_t value);
00173
00174 QPID_COMMON_EXTERN virtual void stop(const string& destination);
00175
00176 };
00177
00178 Message& getMessage() { return messageProxy; }
00179
00180 class Tx:
00181 public Proxy
00182 {
00183 public:
00184 Tx(FrameHandler& f) : Proxy(f) {}
00185 static Tx& get(AMQP_ClientProxy& proxy) { return proxy.getTx(); }
00186 };
00187
00188 Tx& getTx() { return txProxy; }
00189
00190 class Dtx:
00191 public Proxy
00192 {
00193 public:
00194 Dtx(FrameHandler& f) : Proxy(f) {}
00195 static Dtx& get(AMQP_ClientProxy& proxy) { return proxy.getDtx(); }
00196 };
00197
00198 Dtx& getDtx() { return dtxProxy; }
00199
00200 class Exchange:
00201 public Proxy
00202 {
00203 public:
00204 Exchange(FrameHandler& f) : Proxy(f) {}
00205 static Exchange& get(AMQP_ClientProxy& proxy) { return proxy.getExchange(); }
00206 };
00207
00208 Exchange& getExchange() { return exchangeProxy; }
00209
00210 class Queue:
00211 public Proxy
00212 {
00213 public:
00214 Queue(FrameHandler& f) : Proxy(f) {}
00215 static Queue& get(AMQP_ClientProxy& proxy) { return proxy.getQueue(); }
00216 };
00217
00218 Queue& getQueue() { return queueProxy; }
00219
00220 class File:
00221 public Proxy
00222 {
00223 public:
00224 File(FrameHandler& f) : Proxy(f) {}
00225 static File& get(AMQP_ClientProxy& proxy) { return proxy.getFile(); }
00226 QPID_COMMON_EXTERN virtual void qosOk();
00227
00228 QPID_COMMON_EXTERN virtual void consumeOk(const string& consumerTag);
00229
00230 QPID_COMMON_EXTERN virtual void open(const string& identifier,
00231 uint64_t contentSize);
00232
00233 QPID_COMMON_EXTERN virtual void openOk(uint64_t stagedSize);
00234
00235 QPID_COMMON_EXTERN virtual void stage();
00236
00237 QPID_COMMON_EXTERN virtual void return_(uint16_t replyCode,
00238 const string& replyText,
00239 const string& exchange,
00240 const string& routingKey);
00241
00242 QPID_COMMON_EXTERN virtual void deliver(const string& consumerTag,
00243 uint64_t deliveryTag,
00244 bool redelivered,
00245 const string& exchange,
00246 const string& routingKey,
00247 const string& identifier);
00248
00249 };
00250
00251 File& getFile() { return fileProxy; }
00252
00253 class Stream:
00254 public Proxy
00255 {
00256 public:
00257 Stream(FrameHandler& f) : Proxy(f) {}
00258 static Stream& get(AMQP_ClientProxy& proxy) { return proxy.getStream(); }
00259 QPID_COMMON_EXTERN virtual void qosOk();
00260
00261 QPID_COMMON_EXTERN virtual void consumeOk(const string& consumerTag);
00262
00263 QPID_COMMON_EXTERN virtual void return_(uint16_t replyCode,
00264 const string& replyText,
00265 const string& exchange,
00266 const string& routingKey);
00267
00268 QPID_COMMON_EXTERN virtual void deliver(const string& consumerTag,
00269 uint64_t deliveryTag,
00270 const string& exchange,
00271 const string& queue);
00272
00273 };
00274
00275 Stream& getStream() { return streamProxy; }
00276
00277 class Cluster:
00278 public Proxy
00279 {
00280 public:
00281 Cluster(FrameHandler& f) : Proxy(f) {}
00282 static Cluster& get(AMQP_ClientProxy& proxy) { return proxy.getCluster(); }
00283 };
00284
00285 Cluster& getCluster() { return clusterProxy; }
00286
00287 class ClusterConnection:
00288 public Proxy
00289 {
00290 public:
00291 ClusterConnection(FrameHandler& f) : Proxy(f) {}
00292 static ClusterConnection& get(AMQP_ClientProxy& proxy) { return proxy.getClusterConnection(); }
00293 };
00294
00295 ClusterConnection& getClusterConnection() { return clusterConnectionProxy; }
00296
00297 private:
00298 Connection connectionProxy;
00299 Session sessionProxy;
00300 Execution executionProxy;
00301 Message messageProxy;
00302 Tx txProxy;
00303 Dtx dtxProxy;
00304 Exchange exchangeProxy;
00305 Queue queueProxy;
00306 File fileProxy;
00307 Stream streamProxy;
00308 Cluster clusterProxy;
00309 ClusterConnection clusterConnectionProxy;
00310 };
00311
00312 }}
00313
00314 #endif