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 route(const Filter *filter, const Package *package) const {
60 //throw Router_Exception("no routing rules known");
63 virtual void configure(){};
64 Router & rule(const Filter &filter){
69 Router(const Router &);
70 Router& operator=(const Router &);
71 const Filter *m_filter;
75 class Router_Exception : public std::runtime_error {
77 Router_Exception(const std::string message)
78 : std::runtime_error("Router_Exception: " + message){};
85 // send package to it's next filter defined in chain
88 m_filter = m_router->route(m_filter, this);
90 m_filter->process(*this);
94 // get function - returns copy and keeps object const,
95 // thus is right val in assignment
96 unsigned int data() const {
99 // set function - returns reference and changes object,
100 // thus is left val in assignment
101 unsigned int & data() {
105 // more traditional set function, taking const reference
106 // or copy (here const ref for demo), returning ref to object
107 // can be chained with other similar functions!
108 Package & data(const unsigned int & data){
113 // get function - returns copy and keeps object const,
114 // thus is right val in assignment
115 //Router router() const {
118 // set function - returns reference and changes object,
119 // thus is left val in assignment
120 //Router & router() {
123 // more traditional set function, taking const reference
124 // or copy (here const ref for demo), returning ref to object
125 // can be chained with other similar functions!
126 Package & router(const Router &router){
133 const Filter *m_filter;
134 const Router *m_router;
138 class Package_Exception : public std::runtime_error {
140 Package_Exception(const std::string message)
141 : std::runtime_error("Package_Exception: " + message){