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 heartbeat( ) = 0;
00075
00076 virtual void close(uint16_t replyCode,
00077 const string& replyText) = 0;
00078
00079 virtual void closeOk( ) = 0;
00080 };
00081
00082
00083
00084 class SessionHandler {
00085
00086 public:
00087 class Invoker;
00088
00089 SessionHandler(){};
00090 virtual ~SessionHandler() {}
00091
00092
00093 virtual void attach(const string& name,
00094 bool force) = 0;
00095
00096 virtual void attached(const string& name) = 0;
00097
00098 virtual void detach(const string& name) = 0;
00099
00100 virtual void detached(const string& name,
00101 uint8_t code) = 0;
00102
00103 virtual void requestTimeout(uint32_t timeout) = 0;
00104
00105 virtual void timeout(uint32_t timeout) = 0;
00106
00107 virtual void commandPoint(const SequenceNumber& commandId,
00108 uint64_t commandOffset) = 0;
00109
00110 virtual void expected(const SequenceSet& commands,
00111 const Array& fragments) = 0;
00112
00113 virtual void confirmed(const SequenceSet& commands,
00114 const Array& fragments) = 0;
00115
00116 virtual void completed(const SequenceSet& commands,
00117 bool timelyReply) = 0;
00118
00119 virtual void knownCompleted(const SequenceSet& commands) = 0;
00120
00121 virtual void flush(bool expected,
00122 bool confirmed,
00123 bool completed) = 0;
00124
00125 virtual void gap(const SequenceSet& commands) = 0;
00126 };
00127
00128
00129
00130 class ExecutionHandler {
00131
00132 public:
00133 class Invoker;
00134
00135 ExecutionHandler(){};
00136 virtual ~ExecutionHandler() {}
00137
00138
00139 virtual void sync( ) = 0;
00140
00141 virtual void result(const SequenceNumber& commandId,
00142 const string& value) = 0;
00143
00144 virtual void exception(uint16_t errorCode,
00145 const SequenceNumber& commandId,
00146 uint8_t classCode,
00147 uint8_t commandCode,
00148 uint8_t fieldIndex,
00149 const string& description,
00150 const FieldTable& errorInfo) = 0;
00151 };
00152
00153
00154
00155 class MessageHandler {
00156
00157 public:
00158 class Invoker;
00159
00160 MessageHandler(){};
00161 virtual ~MessageHandler() {}
00162
00163
00164 virtual void accept(const SequenceSet& transfers) = 0;
00165
00166 virtual void reject(const SequenceSet& transfers,
00167 uint16_t code,
00168 const string& text) = 0;
00169
00170 virtual void release(const SequenceSet& transfers,
00171 bool setRedelivered) = 0;
00172
00173 virtual MessageResumeResult resume(const string& destination,
00174 const string& resumeId) = 0;
00175
00176 virtual void setFlowMode(const string& destination,
00177 uint8_t flowMode) = 0;
00178
00179 virtual void flow(const string& destination,
00180 uint8_t unit,
00181 uint32_t value) = 0;
00182
00183 virtual void stop(const string& destination) = 0;
00184 };
00185
00186
00187
00188 class FileHandler {
00189
00190 public:
00191 class Invoker;
00192
00193 FileHandler(){};
00194 virtual ~FileHandler() {}
00195
00196
00197 virtual void qosOk( ) = 0;
00198
00199 virtual void consumeOk(const string& consumerTag) = 0;
00200
00201 virtual void open(const string& identifier,
00202 uint64_t contentSize) = 0;
00203
00204 virtual void openOk(uint64_t stagedSize) = 0;
00205
00206 virtual void deliver(const string& consumerTag,
00207 uint64_t deliveryTag,
00208 bool redelivered,
00209 const string& exchange,
00210 const string& routingKey,
00211 const string& identifier) = 0;
00212 };
00213
00214
00215
00216 class StreamHandler {
00217
00218 public:
00219 class Invoker;
00220
00221 StreamHandler(){};
00222 virtual ~StreamHandler() {}
00223
00224
00225 virtual void qosOk( ) = 0;
00226
00227 virtual void consumeOk(const string& consumerTag) = 0;
00228 };
00229
00230
00231
00232
00233
00234 virtual ConnectionHandler* getConnectionHandler() = 0;
00235 virtual SessionHandler* getSessionHandler() = 0;
00236 virtual ExecutionHandler* getExecutionHandler() = 0;
00237 virtual MessageHandler* getMessageHandler() = 0;
00238 virtual FileHandler* getFileHandler() = 0;
00239 virtual StreamHandler* getStreamHandler() = 0;
00240 };
00241 }}
00242 #endif