73bf2ca1aa4a6152d8a53a0a8c8aaa4a19aef295
[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     namespace filter {
12         class Base {
13         public:
14             virtual ~Base(){};
15             
16             ///sends Package off to next Filter, returns altered Package
17             virtual  void process(Package & package) const {
18             };
19             virtual  void configure(){};
20             
21             /// get function - right val in assignment
22             std::string name() const {
23                 return m_name;
24             }
25             
26             /// set function - left val in assignment
27             std::string & name() {
28                 return m_name;
29             }
30             
31             /// set function - can be chained
32             Base & name(const std::string & name){
33                 m_name = name;
34                 return *this;
35             }
36             
37         private:
38             std::string m_name;
39         };
40     }
41     
42     class FilterException : public std::runtime_error {
43     public:
44         FilterException(const std::string message)
45             : std::runtime_error("FilterException: " + message){
46         };
47     };
48
49   
50 }
51
52 #endif
53 /*
54  * Local variables:
55  * c-basic-offset: 4
56  * indent-tabs-mode: nil
57  * End:
58  * vim: shiftwidth=4 tabstop=8 expandtab
59  */