18 #ifndef INCLUDE_RCF_FILTER_HPP 19 #define INCLUDE_RCF_FILTER_HPP 25 #include <RCF/Export.hpp> 30 static const int RcfFilter_Unknown = 0;
31 static const int RcfFilter_Identity = 1;
32 static const int RcfFilter_OpenSsl = 2;
33 static const int RcfFilter_ZlibCompressionStateless = 3;
34 static const int RcfFilter_ZlibCompressionStateful = 4;
35 static const int RcfFilter_SspiNtlm = 5;
36 static const int RcfFilter_SspiKerberos = 6;
37 static const int RcfFilter_SspiNegotiate = 7;
38 static const int RcfFilter_SspiSchannel = 8;
40 static const int RcfFilter_Xor = 101;
46 typedef std::shared_ptr<Filter> FilterPtr;
48 class RCF_EXPORT Filter
54 virtual void resetState();
60 const ByteBuffer &byteBuffer,
61 std::size_t bytesRequested) = 0;
63 virtual void write(
const std::vector<ByteBuffer> &byteBuffers) = 0;
65 virtual void onReadCompleted(
const ByteBuffer &byteBuffer) = 0;
67 virtual void onWriteCompleted(std::size_t bytesTransferred) = 0;
69 virtual int getFilterId()
const = 0;
71 void setPreFilter(Filter &preFilter);
72 void setPostFilter(Filter &postFilter);
74 virtual std::size_t getFrameSize()
81 Filter &getPreFilter();
82 Filter &getPostFilter();
88 class RCF_EXPORT IdentityFilter :
public Filter
91 void read(
const ByteBuffer &byteBuffer, std::size_t bytesRequested);
92 void write(
const std::vector<ByteBuffer> &byteBuffers);
93 void onReadCompleted(
const ByteBuffer &byteBuffer);
94 void onWriteCompleted(std::size_t bytesTransferred);
96 virtual int getFilterId()
const;
104 virtual ~FilterFactory()
107 virtual FilterPtr createFilter(RcfServer & server) = 0;
109 virtual int getFilterId() = 0;
112 typedef std::shared_ptr<FilterFactory> FilterFactoryPtr;
114 RCF_EXPORT
void connectFilters(
const std::vector<FilterPtr> &filters);
116 RCF_EXPORT
bool filterData(
117 const std::vector<ByteBuffer> &unfilteredData,
118 std::vector<ByteBuffer> &filteredData,
119 const std::vector<FilterPtr> &filters);
121 RCF_EXPORT
bool unfilterData(
122 const ByteBuffer &filteredByteBuffer,
123 std::vector<ByteBuffer> &unfilteredByteBuffers,
124 std::size_t unfilteredDataLen,
125 const std::vector<FilterPtr> &filters);
127 RCF_EXPORT
bool unfilterData(
128 const ByteBuffer &filteredByteBuffer,
129 ByteBuffer &unfilteredByteBuffer,
130 std::size_t unfilteredDataLen,
131 const std::vector<FilterPtr> &filters);
135 #endif // ! INCLUDE_RCF_FILTER_HPP Definition: AmiIoHandler.hpp:23