Simplified process interface. Private sub class Worker.
[metaproxy-moved-to-github.git] / src / filter.hpp
1
2 #ifndef FILTER_HPP
3 #define FILTER_HPP
4
5 #include <stdexcept>
6
7 namespace yp2 {
8
9     class Package;
10     
11     class Filter {
12     public:
13         virtual ~Filter(){};
14
15         ///sends Package off to next Filter, returns altered Package
16         virtual  void process(Package & package) const {
17         };
18         virtual  void configure(){};
19
20         /// get function - right val in assignment
21         std::string name() const {
22             return m_name;
23         }
24
25         /// set function - left val in assignment
26         std::string & name() {
27             return m_name;
28         }
29
30         /// set function - can be chained
31         Filter & name(const std::string & name){
32             m_name = name;
33             return *this;
34         }
35         
36     private:
37         std::string m_name;
38     };
39     
40     
41     class FilterException : public std::runtime_error {
42     public:
43         FilterException(const std::string message)
44             : std::runtime_error("FilterException: " + message){
45         };
46     };
47
48   
49 }
50
51 #endif
52 /*
53  * Local variables:
54  * c-basic-offset: 4
55  * indent-tabs-mode: nil
56  * End:
57  * vim: shiftwidth=4 tabstop=8 expandtab
58  */