9 #ifndef BOTAN_FILTER_H__
10 #define BOTAN_FILTER_H__
12 #include <botan/secmem.h>
27 virtual std::string name()
const = 0;
34 virtual void write(
const uint8_t input[],
size_t length) = 0;
54 virtual ~
Filter() =
default;
60 virtual void send(
const uint8_t in[],
size_t length);
75 void send(
const std::vector<uint8_t>& in) {
send(in.data(), in.size()); }
83 send(in.data(), length);
90 void send(
const std::vector<uint8_t>& in,
size_t length)
92 send(in.data(), length);
117 size_t total_ports()
const;
118 size_t current_port()
const {
return m_port_num; }
124 void set_port(
size_t new_port);
126 size_t owns()
const {
return m_filter_owns; }
132 void attach(Filter* f);
138 void set_next(Filter* filters[],
size_t count);
139 Filter* get_next()
const;
141 secure_vector<uint8_t> m_write_queue;
142 std::vector<Filter*> m_next;
143 size_t m_port_num, m_filter_owns;
167 friend class Threaded_Fork;
168 using Filter::m_write_queue;
169 using Filter::total_ports;
170 using Filter::m_next;
void send(const secure_vector< uint8_t > &in)
void set_next(Filter *f[], size_t n)
std::vector< T, secure_allocator< T >> secure_vector
void send(const std::vector< uint8_t > &in, size_t length)
void send(const std::vector< uint8_t > &in)
void send(const secure_vector< uint8_t > &in, size_t length)
virtual bool attachable()