10#define BOTAN_FILTER_H_
12#include <botan/secmem.h>
27 virtual std::string
name()
const = 0;
35 virtual void write(
const uint8_t input[],
size_t length) = 0;
69 virtual void send(
const uint8_t in[],
size_t length);
83 void send(std::span<const uint8_t> in) {
send(in.data(), in.size()); }
96 void send(std::span<const uint8_t> in,
size_t length);
120 size_t total_ports()
const;
122 size_t current_port()
const {
return m_port_num; }
128 void set_port(
size_t new_port);
130 size_t owns()
const {
return m_filter_owns; }
136 void attach(Filter* f);
142 void set_next(Filter* filters[],
size_t count);
143 Filter* get_next()
const;
145 secure_vector<uint8_t> m_write_queue;
146 std::vector<Filter*> m_next;
147 size_t m_port_num = 0;
148 size_t m_filter_owns = 0;
151 bool m_owned =
false;
#define BOTAN_PUBLIC_API(maj, min)
void set_next(Filter *f[], size_t n)
Filter(const Filter &)=delete
virtual void send(const uint8_t in[], size_t length)
virtual ~Filter()=default
virtual std::string name() const =0
virtual bool attachable()
friend class Fanout_Filter
Filter & operator=(Filter &&)=delete
void send(std::span< const uint8_t > in)
virtual void write(const uint8_t input[], size_t length)=0
friend class Threaded_Fork
Filter & operator=(const Filter &)=delete