-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFilter.cpp
More file actions
60 lines (47 loc) · 1.35 KB
/
Filter.cpp
File metadata and controls
60 lines (47 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
* Filter.cpp
*
* Copyright 2001, LifeLine Networks BV (www.lifeline.nl). All rights reserved.
* Copyright 2001, Bastiaan Bakker. All rights reserved.
*
* See the COPYING file for the terms of usage and distribution.
*/
#include "PortabilityImpl.hh"
#include <log4cpp/Filter.hh>
namespace log4cpp {
Filter::Filter() :
_chainedFilter(NULL) {
}
Filter::~Filter() {
if (_chainedFilter)
delete _chainedFilter;
}
void Filter::setChainedFilter(Filter* filter) {
if (filter != _chainedFilter) {
if (_chainedFilter)
delete _chainedFilter;
_chainedFilter = filter;
}
}
Filter* Filter::getChainedFilter() {
return _chainedFilter;
}
Filter* Filter::getEndOfChain() {
Filter* end = this;
while(end->getChainedFilter()) {
end = end->getChainedFilter();
}
return end;
}
void Filter::appendChainedFilter(Filter* filter) {
Filter* end = getEndOfChain();
end->setChainedFilter(filter);
}
Filter::Decision Filter::decide(const LoggingEvent& event) {
Filter::Decision decision = _decide(event);
if ((Filter::NEUTRAL == decision) && getChainedFilter()) {
decision = getChainedFilter()->decide(event);
}
return decision;
}
}