00001 #ifndef QPID_BROKER_PREVIEWCONNECTIONCODEC_H
00002 #define QPID_BROKER_PREVIEWCONNECTIONCODEC_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 "PreviewConnection.h"
00028
00029 namespace qpid {
00030 namespace broker {
00031
00032 class PreviewConnectionCodec : public sys::ConnectionCodec, public sys::ConnectionOutputHandler {
00033 std::queue<framing::AMQFrame> frameQueue;
00034 bool frameQueueClosed;
00035 mutable sys::Mutex frameQueueLock;
00036 sys::OutputControl& output;
00037 PreviewConnection connection;
00038 std::string identifier;
00039
00040 public:
00041 PreviewConnectionCodec(sys::OutputControl&, Broker&, const std::string& id, bool isClient = false);
00042 size_t decode(const char* buffer, size_t size);
00043 size_t encode(const char* buffer, size_t size);
00044 bool isClosed() const;
00045 bool canEncode();
00046 void activateOutput();
00047 void closed();
00048 void close();
00049 void send(framing::AMQFrame&);
00050 framing::ProtocolVersion getVersion() const;
00051 };
00052
00053 }}
00054
00055 #endif