]> granicus.if.org Git - icinga2/blob - lib/livestatus/column.hpp
Docs: Explain across midnight time periods with an overlapping range
[icinga2] / lib / livestatus / column.hpp
1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
2
3 #ifndef COLUMN_H
4 #define COLUMN_H
5
6 #include "livestatus/i2-livestatus.hpp"
7 #include "base/value.hpp"
8
9 using namespace icinga;
10
11 namespace icinga
12 {
13
14 enum LivestatusGroupByType {
15         LivestatusGroupByNone,
16         LivestatusGroupByHostGroup,
17         LivestatusGroupByServiceGroup
18 };
19
20 class Column
21 {
22 public:
23         typedef std::function<Value (const Value&)> ValueAccessor;
24         typedef std::function<Value (const Value&, LivestatusGroupByType, const Object::Ptr&)> ObjectAccessor;
25
26         Column(ValueAccessor valueAccessor, ObjectAccessor objectAccessor);
27
28         Value ExtractValue(const Value& urow, LivestatusGroupByType groupByType = LivestatusGroupByNone, const Object::Ptr& groupByObject = Empty) const;
29
30 private:
31         ValueAccessor m_ValueAccessor;
32         ObjectAccessor m_ObjectAccessor;
33 };
34
35 }
36
37 #endif /* COLUMN_H */