00001 #ifndef QPID_FRAMING_AMQP_CLIENTOPERATIONS_H
00002 #define QPID_FRAMING_AMQP_CLIENTOPERATIONS_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 <sstream>
00031 #include "qpid/framing/ProtocolVersion.h"
00032 #include "qpid/framing/amqp_structs.h"
00033
00034 namespace qpid {
00035 namespace framing {
00036
00037 class AMQMethodBody;
00038
00039 class AMQP_ClientOperations {
00040 public:
00041 class Invoker;
00042
00043 virtual ~AMQP_ClientOperations() {}
00044
00045 virtual ProtocolVersion getVersion() const = 0;
00046
00047
00048
00049 class ConnectionHandler {
00050
00051 public:
00052 class Invoker;
00053
00054 ConnectionHandler(){};
00055 virtual ~ConnectionHandler() {}
00056
00057
00058 virtual void start(const FieldTable& serverProperties,
00059 const Array& mechanisms,
00060 const Array& locales) = 0;
00061
00062 virtual void secure(const string& challenge) = 0;
00063
00064 virtual void tune(uint16_t channelMax,
00065 uint16_t maxFrameSize,
00066 uint16_t heartbeatMin,
00067 uint16_t heartbeatMax) = 0;
00068
00069 virtual void openOk(const Array& knownHosts) = 0;
00070
00071 virtual void redirect(const string& host,
00072 const Array& knownHosts) = 0;
00073
00074 virtual void close(uint16_t replyCode,
00075 const string& replyText) = 0;
00076
00077 virtual void closeOk( ) = 0;
00078 };
00079
00080
00081
00082 class SessionHandler {
00083
00084 public:
00085 class Invoker;
00086
00087 SessionHandler(){};
00088 virtual ~SessionHandler() {}
00089
00090
00091 virtual void attach(const string& name,
00092 bool force) = 0;
00093
00094 virtual void attached(const string& name) = 0;
00095
00096 virtual void detach(const string& name) = 0;
00097
00098 virtual void detached(const string& name,
00099 uint8_t code) = 0;
00100
00101 virtual void requestTimeout(uint32_t timeout) = 0;
00102
00103 virtual void timeout(uint32_t timeout) = 0;
00104
00105 virtual void commandPoint(const SequenceNumber& commandId,
00106 uint64_t commandOffset) = 0;
00107
00108 virtual void expected(const SequenceSet& commands,
00109 const Array& fragments) = 0;
00110
00111 virtual void confirmed(const SequenceSet& commands,
00112 const Array& fragments) = 0;
00113
00114 virtual void completed(const SequenceSet& commands,
00115 bool timelyReply) = 0;
00116
00117 virtual void knownCompleted(const SequenceSet& commands) = 0;
00118
00119 virtual void flush(bool expected,
00120 bool confirmed,
00121 bool completed) = 0;
00122
00123 virtual void gap(const SequenceSet& commands) = 0;
00124 };
00125
00126
00127
00128 class ExecutionHandler {
00129
00130 public:
00131 class Invoker;
00132
00133 ExecutionHandler(){};
00134 virtual ~ExecutionHandler() {}
00135
00136
00137 virtual void sync( ) = 0;
00138
00139 virtual void result(const SequenceNumber& commandId,
00140 const string& value) = 0;
00141
00142 virtual void exception(uint16_t errorCode,
00143 const SequenceNumber& commandId,
00144 uint8_t classCode,
00145 uint8_t commandCode,
00146 uint8_t fieldIndex,
00147 const string& description,
00148 const FieldTable& errorInfo) = 0;
00149 };
00150
00151
00152
00153 class MessageHandler {
00154
00155 public:
00156 class Invoker;
00157
00158 MessageHandler(){};
00159 virtual ~MessageHandler() {}
00160
00161
00162 virtual void accept(const SequenceSet& transfers) = 0;
00163
00164 virtual void reject(const SequenceSet& transfers,
00165 uint16_t code,
00166 const string& text) = 0;
00167
00168 virtual void release(const SequenceSet& transfers,
00169 bool setRedelivered) = 0;
00170
00171 virtual MessageResumeResult resume(const string& destination,
00172 const string& resumeId) = 0;
00173
00174 virtual void setFlowMode(const string& destination,
00175 uint8_t flowMode) = 0;
00176
00177 virtual void flow(const string& destination,
00178 uint8_t unit,
00179 uint32_t value) = 0;
00180
00181 virtual void stop(const string& destination) = 0;
00182 };
00183
00184
00185
00186 class FileHandler {
00187
00188 public:
00189 class Invoker;
00190
00191 FileHandler(){};
00192 virtual ~FileHandler() {}
00193
00194
00195 virtual void qosOk( ) = 0;
00196
00197 virtual void consumeOk(const string& consumerTag) = 0;
00198
00199 virtual void open(const string& identifier,
00200 uint64_t contentSize) = 0;
00201
00202 virtual void openOk(uint64_t stagedSize) = 0;
00203
00204 virtual void deliver(const string& consumerTag,
00205 uint64_t deliveryTag,
00206 bool redelivered,
00207 const string& exchange,
00208 const string& routingKey,
00209 const string& identifier) = 0;
00210 };
00211
00212
00213
00214 class StreamHandler {
00215
00216 public:
00217 class Invoker;
00218
00219 StreamHandler(){};
00220 virtual ~StreamHandler() {}
00221
00222
00223 virtual void qosOk( ) = 0;
00224
00225 virtual void consumeOk(const string& consumerTag) = 0;
00226 };
00227
00228
00229
00230
00231
00232 virtual ConnectionHandler* getConnectionHandler() = 0;
00233 virtual SessionHandler* getSessionHandler() = 0;
00234 virtual ExecutionHandler* getExecutionHandler() = 0;
00235 virtual MessageHandler* getMessageHandler() = 0;
00236 virtual FileHandler* getFileHandler() = 0;
00237 virtual StreamHandler* getStreamHandler() = 0;
00238 };
00239 }}
00240 #endif