19 #ifndef INCLUDE_RCF_ZLIBCOMPRESSIONFILTER_HPP
20 #define INCLUDE_RCF_ZLIBCOMPRESSIONFILTER_HPP
25 #include <boost/noncopyable.hpp>
27 #include <RCF/Filter.hpp>
28 #include <RCF/Export.hpp>
32 static const int ZlibDefaultBufferSize = 4096;
34 class ZlibCompressionReadFilter;
35 class ZlibCompressionWriteFilter;
38 class RCF_EXPORT ZlibCompressionFilterBase :
43 ZlibCompressionFilterBase(
bool stateful,
bool serverSide);
51 void read(
const ByteBuffer &byteBuffer, std::size_t bytesRequested);
52 void write(
const std::vector<ByteBuffer> &byteBuffers);
53 void onReadCompleted(
const ByteBuffer &byteBuffer);
54 void onWriteCompleted(std::size_t bytesTransferred);
66 friend class ZlibCompressionReadFilter;
67 friend class ZlibCompressionWriteFilter;
69 boost::shared_ptr<ZlibCompressionReadFilter> mReadFilter;
70 boost::shared_ptr<ZlibCompressionWriteFilter> mWriteFilter;
75 class RCF_EXPORT ZlibStatelessCompressionFilter :
76 public ZlibCompressionFilterBase
79 friend class ZlibStatelessCompressionFilterFactory;
81 ZlibStatelessCompressionFilter(
83 ZlibCompressionFilterBase(false, true)
87 ZlibStatelessCompressionFilter() :
88 ZlibCompressionFilterBase(false, false)
91 int getFilterId()
const;
94 class RCF_EXPORT ZlibStatefulCompressionFilter :
95 public ZlibCompressionFilterBase
98 friend class ZlibStatefulCompressionFilterFactory;
100 ZlibStatefulCompressionFilter(
102 ZlibCompressionFilterBase(true, true)
106 ZlibStatefulCompressionFilter() :
107 ZlibCompressionFilterBase(true, false)
110 int getFilterId()
const;
113 class ZlibStatelessCompressionFilterFactory :
117 ZlibStatelessCompressionFilterFactory();
119 FilterPtr createFilter(RcfServer & server);
123 class ZlibStatefulCompressionFilterFactory :
127 ZlibStatefulCompressionFilterFactory();
129 FilterPtr createFilter(RcfServer & server);
133 typedef ZlibStatefulCompressionFilter ZlibCompressionFilter;
134 typedef boost::shared_ptr<ZlibCompressionFilter> ZlibCompressionFilterPtr;
136 typedef ZlibStatefulCompressionFilterFactory ZlibCompressionFilterFactory;
137 typedef boost::shared_ptr<ZlibCompressionFilterFactory> ZlibCompressionFilterFactoryPtr;
141 #endif // ! INCLUDE_RCF_ZLIBCOMPRESSIONFILTER_HPP