22#include "data/BackendInterface.hpp"
24#include "etlng/MonitorInterface.hpp"
25#include "util/Mutex.hpp"
26#include "util/async/AnyExecutionContext.hpp"
27#include "util/async/AnyOperation.hpp"
28#include "util/async/AnyStrand.hpp"
29#include "util/log/Logger.hpp"
31#include <boost/signals2/connection.hpp>
32#include <xrpl/protocol/TxFormats.h>
41namespace etlng::impl {
45 std::shared_ptr<BackendInterface> backend_;
46 std::shared_ptr<etl::NetworkValidatedLedgersInterface> validatedLedgers_;
48 std::atomic_uint32_t nextSequence_;
49 std::optional<util::async::AnyOperation<void>> repeatedTask_;
50 std::optional<boost::signals2::scoped_connection> subscription_;
52 NewSequenceSignalType notificationChannel_;
53 DbStalledSignalType dbStalledChannel_;
56 std::chrono::steady_clock::duration dbStalledReportDelay;
57 std::chrono::steady_clock::time_point lastDbCheckTime;
58 uint32_t lastSeenMaxSeqInDb = 0u;
68 std::shared_ptr<BackendInterface> backend,
69 std::shared_ptr<etl::NetworkValidatedLedgersInterface> validatedLedgers,
70 uint32_t startSequence,
71 std::chrono::steady_clock::duration dbStalledReportDelay
82 run(std::chrono::steady_clock::duration repeatInterval)
override;
87 boost::signals2::scoped_connection
90 boost::signals2::scoped_connection
95 onNextSequence(uint32_t seq);
An interface for the monitor service An implementation of this service is responsible for periodicall...
Definition MonitorInterface.hpp:36
Definition Monitor.hpp:43
boost::signals2::scoped_connection subscribeToDbStalled(DbStalledSignalType::slot_type const &subscriber) override
Allows clients to get notified when no database update is detected for a configured period.
Definition Monitor.cpp:117
void notifyWriteConflict(uint32_t seq) override
Notifies the monitor of a write conflict.
Definition Monitor.cpp:77
boost::signals2::scoped_connection subscribeToNewSequence(NewSequenceSignalType::slot_type const &subscriber) override
Allows clients to get notified when a new ledger becomes available in Clio's database.
Definition Monitor.cpp:111
void run(std::chrono::steady_clock::duration repeatInterval) override
Run the monitor service.
Definition Monitor.cpp:85
void stop() override
Stops the monitor service.
Definition Monitor.cpp:101
void notifySequenceLoaded(uint32_t seq) override
Allows the loading process to notify of a freshly committed ledger.
Definition Monitor.cpp:65
A simple thread-safe logger for the channel specified in the constructor.
Definition Logger.hpp:111
A container for data that is protected by a mutex. Inspired by Mutex in Rust.
Definition Mutex.hpp:96
A type-erased execution context.
Definition AnyExecutionContext.hpp:41
A type-erased execution context.
Definition AnyStrand.hpp:40