Clio  develop
The XRP Ledger API server.
Loading...
Searching...
No Matches
MonitorInterface.hpp
1#pragma once
2
3#include <boost/signals2/connection.hpp>
4#include <boost/signals2/signal.hpp>
5#include <boost/signals2/variadic_signal.hpp>
6
7#include <chrono>
8#include <cstdint>
9
10namespace etl {
11
18public:
19 static constexpr auto kDefaultRepeatInterval = std::chrono::seconds{1};
20 using NewSequenceSignalType = boost::signals2::signal<void(uint32_t)>;
21 using DbStalledSignalType = boost::signals2::signal<void()>;
22
23 virtual ~MonitorInterface() = default;
24
29 virtual void
30 notifySequenceLoaded(uint32_t seq) = 0;
31
36 virtual void
37 notifyWriteConflict(uint32_t seq) = 0;
38
45 [[nodiscard]] virtual boost::signals2::scoped_connection
46 subscribeToNewSequence(NewSequenceSignalType::slot_type const& subscriber) = 0;
47
55 [[nodiscard]] virtual boost::signals2::scoped_connection
56 subscribeToDbStalled(DbStalledSignalType::slot_type const& subscriber) = 0;
57
63 virtual void
64 run(std::chrono::steady_clock::duration repeatInterval = kDefaultRepeatInterval) = 0;
65
69 virtual void
70 stop() = 0;
71};
72
73} // namespace etl
An interface for the monitor service An implementation of this service is responsible for periodicall...
Definition MonitorInterface.hpp:17
virtual boost::signals2::scoped_connection subscribeToNewSequence(NewSequenceSignalType::slot_type const &subscriber)=0
Allows clients to get notified when a new ledger becomes available in Clio's database.
virtual boost::signals2::scoped_connection subscribeToDbStalled(DbStalledSignalType::slot_type const &subscriber)=0
Allows clients to get notified when no database update is detected for a configured period.
virtual void notifySequenceLoaded(uint32_t seq)=0
Allows the loading process to notify of a freshly committed ledger.
virtual void notifyWriteConflict(uint32_t seq)=0
Notifies the monitor of a write conflict.
virtual void stop()=0
Stops the monitor service.
virtual void run(std::chrono::steady_clock::duration repeatInterval=kDefaultRepeatInterval)=0
Run the monitor service.