Kea 2.7.1
reconnect_ctl.h
Go to the documentation of this file.
1// Copyright (C) 2022 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#ifndef RECONNECT_CTL_H
8#define RECONNECT_CTL_H
9
10#include <string>
11#include <boost/shared_ptr.hpp>
12
13namespace isc {
14namespace util {
15
22
31public:
39 ReconnectCtl(const std::string& backend_type, const std::string& timer_name,
40 unsigned int max_retries, unsigned int retry_interval,
41 OnFailAction action) :
42 backend_type_(backend_type), timer_name_(timer_name),
43 max_retries_(max_retries), retries_left_(max_retries),
44 retry_interval_(retry_interval), action_(action) {}
45
47 std::string backendType() const {
48 return (backend_type_);
49 }
50
54 std::string timerName() const {
55 return (timer_name_);
56 }
57
62 bool checkRetries() {
63 return (retries_left_ ? --retries_left_ : false);
64 }
65
67 unsigned int maxRetries() const {
68 return (max_retries_);
69 }
70
72 unsigned int retriesLeft() const {
73 return (retries_left_);
74 }
75
77 unsigned int retryIndex() const {
78 return (max_retries_ - retries_left_);
79 }
80
82 unsigned int retryInterval() const {
83 return (retry_interval_);
84 }
85
87 void resetRetries() {
88 retries_left_ = max_retries_;
89 }
90
93 bool alterServiceState() const {
94 return (action_ == OnFailAction::STOP_RETRY_EXIT);
95 }
96
99 bool exitOnFailure() const {
100 return ((action_ == OnFailAction::STOP_RETRY_EXIT) ||
101 (action_ == OnFailAction::SERVE_RETRY_EXIT));
102 }
103
108 static std::string onFailActionToText(OnFailAction action);
109
114 static OnFailAction onFailActionFromText(const std::string& text);
115
116private:
117
119 const std::string backend_type_;
120
122 std::string timer_name_;
123
125 unsigned int max_retries_;
126
128 unsigned int retries_left_;
129
131 unsigned int retry_interval_;
132
134 OnFailAction action_;
135};
136
138typedef boost::shared_ptr<ReconnectCtl> ReconnectCtlPtr;
139
140}
141}
142
143#endif // RECONNECT_CTL_H
Warehouses reconnect control values.
unsigned int maxRetries() const
Returns the maximum number of retries allowed.
unsigned int retryInterval() const
Returns the amount of time to wait between reconnect attempts.
unsigned int retriesLeft() const
Returns the number for retries remaining.
void resetRetries()
Resets the retries count.
bool alterServiceState() const
Return true if the connection loss should affect the service, false otherwise.
std::string timerName() const
Returns the associated timer name.
static std::string onFailActionToText(OnFailAction action)
Convert action to string.
std::string backendType() const
Returns the type of the caller backend.
unsigned int retryIndex() const
Returns an index of current retry.
ReconnectCtl(const std::string &backend_type, const std::string &timer_name, unsigned int max_retries, unsigned int retry_interval, OnFailAction action)
Constructor.
bool checkRetries()
Decrements the number of retries remaining.
bool exitOnFailure() const
Return true if the connection recovery mechanism should shut down the server on failure,...
static OnFailAction onFailActionFromText(const std::string &text)
Convert string to action.
OnFailAction
Type of action to take on connection loss.
boost::shared_ptr< ReconnectCtl > ReconnectCtlPtr
Pointer to an instance of ReconnectCtl.
Defines the logger used by the top-level component of kea-lfc.