64 void write(
const uint8_t in[],
size_t length);
76 void write(
const std::vector<uint8_t>& in) {
write(in.data(), in.size()); }
82 void write(std::string_view in);
94 void write(uint8_t in);
101 void process_msg(
const uint8_t in[],
size_t length);
113 void process_msg(
const std::vector<uint8_t>& in);
119 void process_msg(std::string_view in);
133 [[nodiscard]]
size_t remaining(message_id msg = DEFAULT_MESSAGE)
const;
144 [[nodiscard]]
size_t read(uint8_t output[],
size_t length)
override;
155 [[nodiscard]]
size_t read(uint8_t output[],
size_t length, message_id msg);
166 [[nodiscard]]
size_t read(uint8_t& output, message_id msg = DEFAULT_MESSAGE);
180 [[nodiscard]] std::string read_all_as_string(message_id msg = DEFAULT_MESSAGE);
191 [[nodiscard]]
size_t peek(uint8_t output[],
size_t length,
size_t offset)
const override;
202 [[nodiscard]]
size_t peek(uint8_t output[],
size_t length,
size_t offset, message_id msg)
const;
212 [[nodiscard]]
size_t peek(uint8_t& output,
size_t offset, message_id msg = DEFAULT_MESSAGE)
const;
217 size_t get_bytes_read()
const override;
222 size_t get_bytes_read(message_id msg)
const;
224 bool check_available(
size_t n)
override;
225 bool check_available_msg(
size_t n, message_id msg)
const;
237 void set_default_msg(message_id msg);
243 message_id message_count()
const;
249 bool end_of_data()
const override;
299 void append_filter(
Filter* filt);
310 void prepend_filter(
Filter* filt);
322 explicit
Pipe(std::initializer_list<
Filter*> filters);
331 void do_append(
Filter* filt);
332 void do_prepend(
Filter* filt);
333 void find_endpoints(
Filter*);
334 void clear_endpoints(
Filter*);