mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-23 01:55:10 -07:00
Extend Response_GetServerStats with live counters from the in-process MetricsRegistry: cards in games, event loop stall totals/worst, total commands processed, average command time, active command types, and game-start count/duration. Add a repeated CommandStats message carrying per-command breakdowns (kind, extension number, resolved protobuf name, count, total ms) for every type that has seen at least one sample. Server-side cmdGetServerStats() populates all new fields after the existing DB uptime snapshot query, resolving protobuf extension names via the descriptor pool for human-readable labels like session/Command_Ping. Expand TabDeveloper with two tables: an overview section (existing DB stats plus the new live metrics) and a per-command breakdown table (Command / Count / Total ms / Avg ms) sorted by total_ms descending so the hottest commands surface first. Took 55 minutes Took 47 seconds
46 lines
1,001 B
C++
46 lines
1,001 B
C++
/**
|
|
* @file tab_developer.h
|
|
* @ingroup ServerTabs
|
|
*/
|
|
//! \todo Document this file.
|
|
|
|
#ifndef TAB_DEVELOPER_H
|
|
#define TAB_DEVELOPER_H
|
|
|
|
#include "tab.h"
|
|
|
|
class AbstractClient;
|
|
class QLabel;
|
|
class QPushButton;
|
|
class QTableWidget;
|
|
class Response;
|
|
|
|
class TabDeveloper : public Tab
|
|
{
|
|
Q_OBJECT
|
|
private:
|
|
AbstractClient *client;
|
|
QTableWidget *statsTable;
|
|
QTableWidget *commandTable;
|
|
QPushButton *refreshButton;
|
|
QLabel *statusLabel;
|
|
|
|
void appendStatRow(const QString &name, const QString &value);
|
|
void appendSeparatorRow(const QString §ionTitle);
|
|
static QString formatBytes(quint64 bytes);
|
|
static QString formatDurationMs(qint64 ms);
|
|
|
|
private slots:
|
|
void refreshClicked();
|
|
void serverStatsResponse(const Response &resp);
|
|
|
|
public:
|
|
explicit TabDeveloper(TabSupervisor *_tabSupervisor, AbstractClient *_client);
|
|
void retranslateUi() override;
|
|
[[nodiscard]] QString getTabText() const override
|
|
{
|
|
return tr("Developer");
|
|
}
|
|
};
|
|
|
|
#endif
|