00001 #ifndef QPID_SYS_CONNECTION_CODEC_H
00002 #define QPID_SYS_CONNECTION_CODEC_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/framing/ProtocolVersion.h"
00025 #include "OutputControl.h"
00026 #include <memory>
00027 #include <map>
00028
00029 namespace qpid {
00030
00031 namespace sys {
00032 class ProtocolAccess;
00033
00038 class ConnectionCodec {
00039 public:
00040 virtual ~ConnectionCodec() {}
00041
00046 virtual size_t decode(const char* buffer, size_t size) = 0;
00047
00048
00050 virtual size_t encode(const char* buffer, size_t size) = 0;
00051
00053 virtual bool canEncode() = 0;
00054
00056 virtual void closed() = 0;
00057
00058 virtual bool isClosed() const = 0;
00059
00060 virtual framing::ProtocolVersion getVersion() const = 0;
00061
00062 struct Factory {
00063 virtual ~Factory() {}
00064
00066 virtual ConnectionCodec* create(
00067 framing::ProtocolVersion, OutputControl&, const std::string& id
00068 ) = 0;
00069
00071 virtual ConnectionCodec* create(
00072 OutputControl&, const std::string& id, ProtocolAccess* a = 0
00073 ) = 0;
00074 };
00075 };
00076
00077 }}
00078
00079 #endif