feat: session color reflects RPC connection health
- Green: connected and not paused (healthy) - Gray: paused (intentional) - Red: not paused but disconnected (crashed/broken) - Yellow: paused but still connected (zombie)
This commit is contained in:
parent
566aeddecc
commit
6210fccf30
|
|
@ -172,12 +172,17 @@ QString Ollie9pClient::sessionConnectionColor(const QString &sessionId) const
|
|||
for (const QVariant &v : m_sessions) {
|
||||
const QVariantMap s = v.toMap();
|
||||
if (s.value("id").toString() != sessionId) continue;
|
||||
// Paused sessions show gray (RPC connection intentionally stopped)
|
||||
if (s.value("paused").toBool()) return "gray";
|
||||
// Session maintains its own RPC connection, independent of agent count.
|
||||
// For now, assume connected if not paused. Agent-level connection
|
||||
// status is tracked separately for per-agent indicators.
|
||||
return "green";
|
||||
const bool paused = s.value("paused").toBool();
|
||||
const bool connected = s.value("connected").toBool();
|
||||
// Color logic:
|
||||
// - Gray: paused (intentionally stopped)
|
||||
// - Green: not paused AND connected
|
||||
// - Red: not paused AND disconnected (crashed/broken)
|
||||
// - Yellow: paused BUT still connected (zombie - shouldn't happen)
|
||||
if (paused && connected) return "yellow"; // zombie
|
||||
if (paused) return "gray"; // intentionally paused
|
||||
if (connected) return "green"; // healthy
|
||||
return "red"; // crashed/broken
|
||||
}
|
||||
return "gray";
|
||||
}
|
||||
|
|
@ -312,6 +317,9 @@ void Ollie9pClient::refreshSessions()
|
|||
// Check if session is paused
|
||||
QString pausedStr = QString::fromUtf8(run9p({"read", "session/" + sessionId + "/paused"})).trimmed();
|
||||
session["paused"] = (pausedStr == "true");
|
||||
// Check RPC connection status
|
||||
QString connectedStr = QString::fromUtf8(run9p({"read", "session/" + sessionId + "/connected"})).trimmed();
|
||||
session["connected"] = (connectedStr == "true");
|
||||
QVariantList agents;
|
||||
for (const QString &name : QString::fromUtf8(run9p({"ls", "session/" + sessionId + "/agent"})).trimmed().split('\n', Qt::SkipEmptyParts)) {
|
||||
if (name == "new") continue;
|
||||
|
|
|
|||
Reference in New Issue