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);
49 void Filter::new_msg()
52 for(
size_t j = 0; j != total_ports(); ++j)
60 void Filter::finish_msg()
63 for(
size_t j = 0; j != total_ports(); ++j)
65 next[j]->finish_msg();
71 void Filter::attach(Filter* new_filter)
76 while(last->get_next())
77 last = last->get_next();
78 last->next[last->current_port()] = new_filter;
85 void Filter::set_port(
size_t new_port)
87 if(new_port >= total_ports())
95 Filter* Filter::get_next()
const
97 if(port_num < next.size())
98 return next[port_num];
105 void Filter::set_next(Filter* filters[],
size_t size)
112 while(size && filters && filters[size-1] == 0)
116 next.assign(filters, filters + size);
122 size_t Filter::total_ports()
const
virtual void write(const byte input[], size_t length)=0
std::invalid_argument Invalid_Argument
void send(const byte in[], size_t length)