Files
rippled/include/xrpl/core/LoadMonitor.h
Pratik Mankawde 87f4a482c1 refactor: Align identifier naming with develop
Apply readability-identifier-naming clang-tidy check to branch-modified
files (and their transitive includes) in preparation for merging develop.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-05 13:43:49 +01:00

68 lines
1.4 KiB
C++

#pragma once
#include <xrpl/basics/UptimeClock.h>
#include <xrpl/beast/utility/Journal.h>
#include <xrpl/core/LoadEvent.h>
#include <chrono>
#include <mutex>
namespace xrpl {
// Monitors load levels and response times
// VFALCO TODO Rename this. Having both LoadManager and LoadMonitor is
// confusing.
//
class LoadMonitor
{
public:
explicit LoadMonitor(beast::Journal j);
void
addLoadSample(LoadEvent const& sample);
void
addSamples(int count, std::chrono::milliseconds latency);
void
setTargetLatency(std::chrono::milliseconds avg, std::chrono::milliseconds pk);
bool
isOverTarget(std::chrono::milliseconds avg, std::chrono::milliseconds peak);
// VFALCO TODO make this return the values in a struct.
struct Stats
{
Stats();
std::uint64_t count{0};
std::chrono::milliseconds latencyAvg;
std::chrono::milliseconds latencyPeak;
bool isOverloaded{false};
};
Stats
getStats();
bool
isOver();
private:
void
update();
std::mutex mutex_;
std::uint64_t mCounts_{0};
int mLatencyEvents_{0};
std::chrono::milliseconds mLatencyMSAvg_;
std::chrono::milliseconds mLatencyMSPeak_;
std::chrono::milliseconds mTargetLatencyAvg_;
std::chrono::milliseconds mTargetLatencyPk_;
UptimeClock::time_point mLastUpdate_;
beast::Journal const j_;
};
} // namespace xrpl