diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 11:32:39 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 11:32:39 +0000 |
commit | 56ae875861ab260b80a030f50c4aff9f9dc8fff0 (patch) | |
tree | 531412110fc901a5918c7f7442202804a83cada9 /lib/livestatus/logtable.hpp | |
parent | Initial commit. (diff) | |
download | icinga2-56ae875861ab260b80a030f50c4aff9f9dc8fff0.tar.xz icinga2-56ae875861ab260b80a030f50c4aff9f9dc8fff0.zip |
Adding upstream version 2.14.2.upstream/2.14.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'lib/livestatus/logtable.hpp')
-rw-r--r-- | lib/livestatus/logtable.hpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/lib/livestatus/logtable.hpp b/lib/livestatus/logtable.hpp new file mode 100644 index 0000000..7a89310 --- /dev/null +++ b/lib/livestatus/logtable.hpp @@ -0,0 +1,65 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +#ifndef LOGTABLE_H +#define LOGTABLE_H + +#include "livestatus/historytable.hpp" + +using namespace icinga; + +namespace icinga +{ + +/** + * @ingroup livestatus + */ +class LogTable final : public HistoryTable +{ +public: + DECLARE_PTR_TYPEDEFS(LogTable); + + LogTable(const String& compat_log_path, time_t from, time_t until); + + static void AddColumns(Table *table, const String& prefix = String(), + const Column::ObjectAccessor& objectAccessor = Column::ObjectAccessor()); + + String GetName() const override; + String GetPrefix() const override; + + void UpdateLogEntries(const Dictionary::Ptr& log_entry_attrs, int line_count, int lineno, const AddRowFunction& addRowFn) override; + +protected: + void FetchRows(const AddRowFunction& addRowFn) override; + + static Object::Ptr HostAccessor(const Value& row, const Column::ObjectAccessor& parentObjectAccessor); + static Object::Ptr ServiceAccessor(const Value& row, const Column::ObjectAccessor& parentObjectAccessor); + static Object::Ptr ContactAccessor(const Value& row, const Column::ObjectAccessor& parentObjectAccessor); + static Object::Ptr CommandAccessor(const Value& row, const Column::ObjectAccessor& parentObjectAccessor); + + static Value TimeAccessor(const Value& row); + static Value LinenoAccessor(const Value& row); + static Value ClassAccessor(const Value& row); + static Value MessageAccessor(const Value& row); + static Value TypeAccessor(const Value& row); + static Value OptionsAccessor(const Value& row); + static Value CommentAccessor(const Value& row); + static Value PluginOutputAccessor(const Value& row); + static Value StateAccessor(const Value& row); + static Value StateTypeAccessor(const Value& row); + static Value AttemptAccessor(const Value& row); + static Value ServiceDescriptionAccessor(const Value& row); + static Value HostNameAccessor(const Value& row); + static Value ContactNameAccessor(const Value& row); + static Value CommandNameAccessor(const Value& row); + +private: + std::map<time_t, String> m_LogFileIndex; + std::map<time_t, Dictionary::Ptr> m_RowsCache; + time_t m_TimeFrom; + time_t m_TimeUntil; + String m_CompatLogPath; +}; + +} + +#endif /* LOGTABLE_H */ |