kea-custom-hooks
FeM custom hooks libraries for Kea DHCP
exceptions.hpp
Go to the documentation of this file.
1
7#pragma once
8
9#include <exception>
10#include <string>
11#include <utility>
12
13#include "log_admindb_arpwatch_exporter.h"
14#include <log/logger.h>
15#include <log/macros.h>
16
18class InitFailure : public std::exception
19{
20public:
21 explicit InitFailure(std::string message) : message(std::move(message))
22 {}
23
24 InitFailure(const InitFailure&) = default;
25 InitFailure& operator=(const InitFailure&) = default;
28 ~InitFailure() override = default;
29
30 [[nodiscard]] const char* what() const noexcept override
31 {
32 return message.c_str();
33 }
34
35 virtual void log(isc::log::Logger& logger) const
36 {
37 LOG_ERROR(logger, arpwatch::INIT_FAILED).arg(message);
38 }
39
40protected:
41 std::string message; // NOLINT(*-non-private-member-variables-in-classes)
42};
43
46{
47public:
48 InvalidConfig(const std::string& key, const std::string& expected, const std::string& actual)
49 : InitFailure("Key: " + key + ", Expected: " + expected + ", Actual: " + actual)
50 , key(key)
52 , actual(actual)
53 {}
54
55protected:
56 explicit InvalidConfig(const std::string& message) : InitFailure(message)
57 {}
58
59public:
60 void log(isc::log::Logger& logger) const override
61 {
62 LOG_ERROR(logger, arpwatch::INVALID_PARAMETER).arg(key).arg(expected).arg(actual);
63 }
64
65protected:
66 // NOLINTBEGIN(*-non-private-member-variables-in-classes)
67 std::string key{};
68 std::string expected{};
69 std::string actual{};
70 // NOLINTEND(*-non-private-member-variables-in-classes)
71};
72
74{
75public:
76 explicit InvalidConfigMissingElement(const std::string& key)
77 : InvalidConfig("Key: " + key + " undefined, but required")
78 {
79 this->key = key;
80 }
81
82 void log(isc::log::Logger& logger) const override
83 {
84 LOG_ERROR(logger, arpwatch::UNDEFINED_PARAMETER).arg(key);
85 }
86};
87
90{
91public:
92 explicit HiredisInitFailure(const std::string& msg) : InitFailure(msg)
93 {}
94
95 void log(isc::log::Logger& logger) const override
96 {
97 LOG_ERROR(logger, arpwatch::HIREDIS_INIT_FAILED).arg(message);
98 }
99};
Redis couldn't be initialized for some reason.
Definition: exceptions.hpp:90
HiredisInitFailure(const std::string &msg)
Definition: exceptions.hpp:92
void log(isc::log::Logger &logger) const override
Definition: exceptions.hpp:95
A failure during initialization has happened.
Definition: exceptions.hpp:19
InitFailure & operator=(const InitFailure &)=default
InitFailure(const InitFailure &)=default
virtual void log(isc::log::Logger &logger) const
Definition: exceptions.hpp:35
std::string message
Definition: exceptions.hpp:41
InitFailure & operator=(InitFailure &&)=default
const char * what() const noexcept override
Definition: exceptions.hpp:30
InitFailure(InitFailure &&)=default
InitFailure(std::string message)
Definition: exceptions.hpp:21
~InitFailure() override=default
void log(isc::log::Logger &logger) const override
Definition: exceptions.hpp:82
InvalidConfigMissingElement(const std::string &key)
Definition: exceptions.hpp:76
Parts of the hook configuration are invalid.
Definition: exceptions.hpp:46
InvalidConfig(const std::string &message)
Definition: exceptions.hpp:56
std::string expected
Definition: exceptions.hpp:68
std::string actual
Definition: exceptions.hpp:69
std::string key
Definition: exceptions.hpp:67
InvalidConfig(const std::string &key, const std::string &expected, const std::string &actual)
Definition: exceptions.hpp:48
void log(isc::log::Logger &logger) const override
Definition: exceptions.hpp:60
isc::log::Logger logger
Definition: init.cpp:28