4#ifndef _StroikaSample_OperationalStatistics_h_
5#define _StroikaSample_OperationalStatistics_h_ 1
7#include "Stroika/Frameworks/StroikaPreComp.h"
16namespace Stroika::Samples::HTMLUI {
18 using namespace Stroika;
52 nonvirtual
void RecordActiveRunningTasksCount (
size_t length);
55 nonvirtual
void RecordOpenConnectionCount (
size_t length);
58 nonvirtual
void RecordProcessingConnectionCount (
size_t length);
66 nonvirtual Statistics GetStatistics ()
const;
69 mutable mutex fMutex_;
75 eAPIActiveRunningTasks,
76 eAPIOpenConnectionCount,
77 eAPIProcessingConnectionCount,
87 Rec_ fRollingHistory_[1024];
88 size_t fNextHistory_{0};
90 void Add_ (
const Rec_& r);
96 class OperationalStatisticsMgr::ProcessAPICmd {
102 static void NoteError ();
110 class OperationalStatisticsMgr::ProcessDBCmd {
112 ProcessDBCmd (DBCommandType cmdType);
116 static void NoteError ();
125 struct OperationalStatisticsMgr::Statistics {
127 unsigned int fCallsCompleted{};
128 optional<Duration> fMeanDuration;
129 optional<Duration> fMedianDuration;
130 optional<Duration> fMaxDuration;
131 optional<float> fMedianRunningAPITasks;
132 unsigned int fErrors{};
138 unsigned int fReads{};
139 unsigned int fWrites{};
140 unsigned int fErrors{};
154#include "OperationalStatistics.inl"
time_point< RealtimeClock, DurationSeconds > TimePointSeconds
TimePointSeconds is a simpler approach to chrono::time_point, which doesn't require using templates e...
chrono::duration< double > DurationSeconds
chrono::duration<double> - a time span (length of time) measured in seconds, but high precision.
Duration is a chrono::duration<double> (=.