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)
107 while(size && filters && filters[size-1] ==
nullptr)
116 for(
size_t j = 0; j != size; ++j)
117 next[j] = filters[j];
123 size_t Filter::total_ports()
const