22#include "cluster/Backend.hpp"
23#include "cluster/Concepts.hpp"
24#include "cluster/Metrics.hpp"
25#include "cluster/WriterDecider.hpp"
26#include "data/BackendInterface.hpp"
27#include "etl/WriterState.hpp"
29#include <boost/asio/cancellation_signal.hpp>
30#include <boost/asio/spawn.hpp>
31#include <boost/asio/strand.hpp>
32#include <boost/asio/thread_pool.hpp>
33#include <boost/uuid/uuid.hpp>
45 boost::asio::thread_pool ctx_{1};
51 static constexpr std::chrono::milliseconds kDEFAULT_READ_INTERVAL{1000};
52 static constexpr std::chrono::milliseconds kDEFAULT_WRITE_INTERVAL{1000};
63 std::shared_ptr<data::BackendInterface> backend,
64 std::unique_ptr<etl::WriterStateInterface> writerState,
65 std::chrono::steady_clock::duration readInterval = kDEFAULT_READ_INTERVAL,
66 std::chrono::steady_clock::duration writeInterval = kDEFAULT_WRITE_INTERVAL
Backend communication handler for cluster state synchronization.
Definition Backend.hpp:55
ClusterCommunicationService(std::shared_ptr< data::BackendInterface > backend, std::unique_ptr< etl::WriterStateInterface > writerState, std::chrono::steady_clock::duration readInterval=kDEFAULT_READ_INTERVAL, std::chrono::steady_clock::duration writeInterval=kDEFAULT_WRITE_INTERVAL)
Construct a new Cluster Communication Service object.
Definition ClusterCommunicationService.cpp:32
void run()
Start the service.
Definition ClusterCommunicationService.cpp:44
void stop()
Stop the service.
Definition ClusterCommunicationService.cpp:61
Manages Prometheus metrics for cluster communication and node tracking.
Definition Metrics.hpp:39
Decides which node in the cluster should be the writer based on cluster state.
Definition WriterDecider.hpp:43
Tag type for cluster communication service implementations.
Definition Concepts.hpp:32