#pragma once

#include "foundation/diagnostics/Metrics.h"

namespace ta::application::config
{
    struct ConfigDiagnosticsSnapshot final
    {
        ta::foundation::diagnostics::RequestConsumeSnapshot commands;
    };

    class ConfigDiagnostics final
    {
    public:
        void mark_command_requested() noexcept { commands_.mark_requested(); }
        void mark_command_consumed() noexcept { commands_.mark_consumed(); }
        void reset() noexcept { commands_.reset(); }
        [[nodiscard]] ConfigDiagnosticsSnapshot snapshot() const noexcept { return {commands_.snapshot()}; }

    private:
        ta::foundation::diagnostics::RequestConsumeMetrics commands_;
    };
}
