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