8#include <botan/filter.h>
9#include <botan/secqueue.h>
10#include <botan/exceptn.h>
30 bool nothing_attached =
true;
31 for(
size_t j = 0; j != total_ports(); ++j)
34 if(write_queue.size())
35 next[j]->write(&write_queue[0], write_queue.size());
36 next[j]->write(input, length);
37 nothing_attached =
false;
41 write_queue += std::make_pair(input, length);
52 for(
size_t j = 0; j != total_ports(); ++j)
60void Filter::finish_msg()
63 for(
size_t j = 0; j != total_ports(); ++j)
65 next[j]->finish_msg();
71void Filter::attach(
Filter* new_filter)
76 while(last->get_next())
77 last = last->get_next();
78 last->next[last->current_port()] = new_filter;
85void Filter::set_port(
size_t new_port)
87 if(new_port >= total_ports())
95Filter* Filter::get_next()
const
97 if(port_num < next.size())
98 return next[port_num];
105void Filter::set_next(
Filter* filters[],
size_t size)
112 while(size && filters && filters[size-1] == 0)
116 next.assign(filters, filters + size);
122size_t Filter::total_ports()
const
void send(const byte in[], size_t length)
std::invalid_argument Invalid_Argument