19 #ifndef INCLUDE_RCF_FILTER_HPP 20 #define INCLUDE_RCF_FILTER_HPP 26 #include <RCF/Export.hpp> 31 static const int RcfFilter_Unknown = 0;
32 static const int RcfFilter_Identity = 1;
33 static const int RcfFilter_OpenSsl = 2;
34 static const int RcfFilter_ZlibCompressionStateless = 3;
35 static const int RcfFilter_ZlibCompressionStateful = 4;
36 static const int RcfFilter_SspiNtlm = 5;
37 static const int RcfFilter_SspiKerberos = 6;
38 static const int RcfFilter_SspiNegotiate = 7;
39 static const int RcfFilter_SspiSchannel = 8;
41 static const int RcfFilter_Xor = 101;
47 typedef std::shared_ptr<Filter> FilterPtr;
49 class RCF_EXPORT Filter
55 virtual void resetState();
61 const ByteBuffer &byteBuffer,
62 std::size_t bytesRequested) = 0;
64 virtual void write(
const std::vector<ByteBuffer> &byteBuffers) = 0;
66 virtual void onReadCompleted(
const ByteBuffer &byteBuffer) = 0;
68 virtual void onWriteCompleted(std::size_t bytesTransferred) = 0;
70 virtual int getFilterId()
const = 0;
72 void setPreFilter(Filter &preFilter);
73 void setPostFilter(Filter &postFilter);
75 virtual std::size_t getFrameSize()
82 Filter &getPreFilter();
83 Filter &getPostFilter();
89 class RCF_EXPORT IdentityFilter :
public Filter
92 void read(
const ByteBuffer &byteBuffer, std::size_t bytesRequested);
93 void write(
const std::vector<ByteBuffer> &byteBuffers);
94 void onReadCompleted(
const ByteBuffer &byteBuffer);
95 void onWriteCompleted(std::size_t bytesTransferred);
97 virtual int getFilterId()
const;
105 virtual ~FilterFactory()
108 virtual FilterPtr createFilter(RcfServer & server) = 0;
110 virtual int getFilterId() = 0;
113 typedef std::shared_ptr<FilterFactory> FilterFactoryPtr;
115 RCF_EXPORT
void connectFilters(
const std::vector<FilterPtr> &filters);
117 RCF_EXPORT
bool filterData(
118 const std::vector<ByteBuffer> &unfilteredData,
119 std::vector<ByteBuffer> &filteredData,
120 const std::vector<FilterPtr> &filters);
122 RCF_EXPORT
bool unfilterData(
123 const ByteBuffer &filteredByteBuffer,
124 std::vector<ByteBuffer> &unfilteredByteBuffers,
125 std::size_t unfilteredDataLen,
126 const std::vector<FilterPtr> &filters);
128 RCF_EXPORT
bool unfilterData(
129 const ByteBuffer &filteredByteBuffer,
130 ByteBuffer &unfilteredByteBuffer,
131 std::size_t unfilteredDataLen,
132 const std::vector<FilterPtr> &filters);
136 #endif // ! INCLUDE_RCF_FILTER_HPP Definition: AmiIoHandler.hpp:24