00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _LOG4TANGO_FILTER_HH
00029 #define _LOG4TANGO_FILTER_HH
00030
00031 #ifdef APPENDERS_HAVE_FILTERS
00032
00033 #include <log4tango/Portability.hh>
00034 #include <log4tango/LoggingEvent.hh>
00035
00036 namespace log4tango {
00037
00069
00070
00071
00072 class LOG4TANGO_EXPORT Filter
00073 {
00074
00075 public:
00076
00077 typedef enum {
00078 DENY = -1,
00079 NEUTRAL = 0,
00080 ACCEPT = 1
00081 } Decision;
00082
00086 Filter ();
00087
00091 virtual ~Filter ();
00092
00097 void set_chained_filter (Filter* filter);
00098
00104 inline Filter* Filter::get_chained_filter (void) {
00105 return _chain;
00106 }
00107
00112 virtual Filter* get_end_of_chain (void);
00113
00119 virtual void append_chained_filter (Filter* filter);
00120
00128 virtual Decision decide (const LoggingEvent& event);
00129
00130 protected:
00138 virtual Decision _decide (const LoggingEvent& event) = 0;
00139
00140 private:
00141 Filter* _chain;
00142 };
00143
00144 }
00145
00146 #endif // APPENDERS_HAVE_FILTERS
00147
00148 #endif // _LOG4TANGO_FILTER_HH
00149
00150