00001 #ifndef QPID_BROKER_CONNECTION_H
00002 #define QPID_BROKER_CONNECTION_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "qpid/sys/ConnectionCodec.h"
00025 #include "qpid/sys/ConnectionOutputHandler.h"
00026 #include "qpid/sys/Mutex.h"
00027 #include "Connection.h"
00028 #include "qpid/broker/Connection.h"
00029 #include <queue>
00030
00031 namespace qpid {
00032 namespace broker { class Broker; }
00033 namespace amqp_0_10 {
00034
00035
00036 class Connection : public sys::ConnectionCodec,
00037 public sys::ConnectionOutputHandler
00038 {
00039 std::queue<framing::AMQFrame> frameQueue;
00040 bool frameQueueClosed;
00041 mutable sys::Mutex frameQueueLock;
00042 sys::OutputControl& output;
00043 broker::Connection connection;
00044 std::string identifier;
00045 bool initialized;
00046
00047 public:
00048 Connection(sys::OutputControl&, broker::Broker&, const std::string& id);
00049 size_t decode(const char* buffer, size_t size);
00050 size_t encode(const char* buffer, size_t size);
00051 bool isClosed() const;
00052 bool canEncode();
00053 void activateOutput();
00054 void closed();
00055 void close();
00056 void send(framing::AMQFrame&);
00057 framing::ProtocolVersion getVersion() const;
00058 };
00059
00060 }}
00061
00062 #endif