15 virtual Package & process(Package & package) const {
18 virtual void configure(){};
20 // set/get the C++ way .. just as showoff
22 // get function - returns copy and keeps object const,
23 // thus is right val in assignment
24 std::string name() const {
27 // set function - returns reference and changes object,
28 // thus is left val in assignment
29 std::string & name() {
32 // more traditional set function, taking const reference
33 // or copy (here const ref for demo), returning ref to object
34 // can be chained with other similar functions!
35 Filter & name(const std::string & name){
45 class Filter_Exception : public std::runtime_error {
47 Filter_Exception(const std::string message)
48 : std::runtime_error("Filter_Exception: " + message){
57 virtual const Filter *
58 move(const Filter *filter, const Package *package) const {
59 std::list<const Filter *>::const_iterator it;
60 it = m_filter_list.begin();
63 for (; it != m_filter_list.end(); it++)
70 if (it == m_filter_list.end())
72 //throw Router_Exception("no routing rules known");
77 virtual void configure(){};
78 Router & rule(const Filter &filter){
79 m_filter_list.push_back(&filter);
83 Router(const Router &);
84 Router& operator=(const Router &);
85 std::list<const Filter *> m_filter_list;
89 class Router_Exception : public std::runtime_error {
91 Router_Exception(const std::string message)
92 : std::runtime_error("Router_Exception: " + message){};
99 // send package to it's next filter defined in chain
101 m_filter = m_router->move(m_filter, this);
103 return m_filter->process(*this);
108 // get function - returns copy and keeps object const,
109 // thus is right val in assignment
110 unsigned int data() const {
113 // set function - returns reference and changes object,
114 // thus is left val in assignment
115 unsigned int & data() {
119 // more traditional set function, taking const reference
120 // or copy (here const ref for demo), returning ref to object
121 // can be chained with other similar functions!
122 Package & data(const unsigned int & data){
127 // get function - returns copy and keeps object const,
128 // thus is right val in assignment
129 //Router router() const {
132 // set function - returns reference and changes object,
133 // thus is left val in assignment
134 //Router & router() {
137 // more traditional set function, taking const reference
138 // or copy (here const ref for demo), returning ref to object
139 // can be chained with other similar functions!
140 Package & router(const Router &router){
153 const Filter *m_filter;
154 const Router *m_router;
158 class Package_Exception : public std::runtime_error {
160 Package_Exception(const std::string message)
161 : std::runtime_error("Package_Exception: " + message){
171 * indent-tabs-mode: nil
173 * vim: shiftwidth=4 tabstop=8 expandtab