Rename from yp2 to metaproxy. The namespace for all definitions
[metaproxy-moved-to-github.git] / src / filter.hpp
1 /* $Id: filter.hpp,v 1.16 2006-03-16 10:40:59 adam Exp $
2    Copyright (c) 2005-2006, Index Data.
3
4 %LICENSE%
5  */
6
7 #ifndef FILTER_HPP
8 #define FILTER_HPP
9
10 #include <string>
11 #include <stdexcept>
12 #include <libxml/tree.h>
13 #include "xmlutil.hpp"
14
15 namespace metaproxy_1 {
16
17     class Package;
18
19     namespace filter {
20         class Base {
21         public:
22             virtual ~Base(){};
23             
24             ///sends Package off to next Filter, returns altered Package
25             virtual void process(Package & package) const = 0;
26
27             virtual void configure(const xmlNode * ptr);
28         };
29
30         class FilterException : public std::runtime_error {
31         public:
32             FilterException(const std::string message)
33                 : std::runtime_error("FilterException: " + message){
34             };
35         };
36     }
37 }
38
39 struct metaproxy_1_filter_struct {
40     int ver;
41     const char *type;
42     metaproxy_1::filter::Base* (*creator)();
43 };
44
45 #endif
46 /*
47  * Local variables:
48  * c-basic-offset: 4
49  * indent-tabs-mode: nil
50  * c-file-style: "stroustrup"
51  * End:
52  * vim: shiftwidth=4 tabstop=8 expandtab
53  */