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
00026 namespace qpid {
00027
00028 namespace sys {
00029
00030 class InputHandlerFactory;
00031 class OutputControl;
00032
00037 class ConnectionCodec {
00038 public:
00039 virtual ~ConnectionCodec() {}
00040
00045 virtual size_t decode(const char* buffer, size_t size) = 0;
00046
00047
00049 virtual size_t encode(const char* buffer, size_t size) = 0;
00050
00052 virtual bool canEncode() = 0;
00053
00055 virtual void closed() = 0;
00056
00057 virtual bool isClosed() const = 0;
00058
00059 virtual framing::ProtocolVersion getVersion() const = 0;
00060
00061 struct Factory {
00062 virtual ~Factory() {}
00063
00065 virtual ConnectionCodec* create(
00066 framing::ProtocolVersion, OutputControl&, const std::string& id
00067 ) = 0;
00068
00070 virtual ConnectionCodec* create(
00071 OutputControl&, const std::string& id
00072 ) = 0;
00073 };
00074 };
00075
00076 }}
00077
00078 #endif