pstats: Start new session if client disconnects before sending data

This provides a better UX; if the client disconnects after the graphs open, it's quite obvious that there's still a PStats session open, but otherwise it's not obvious (and a little annoying) if you have to realize that PStats is no longer listening and you have to start a new session.
This commit is contained in:
rdb 2022-11-29 16:52:58 +01:00
parent 21cae91890
commit 1fa446e183
2 changed files with 28 additions and 10 deletions

View File

@ -69,12 +69,21 @@ make_monitor(const NetAddress &address) {
*/
void GtkStatsServer::
lost_connection(PStatMonitor *monitor) {
// Store a backup now, in case PStats crashes or something.
_last_session.make_dir();
if (monitor->write(_last_session)) {
nout << "Wrote to " << _last_session << "\n";
if (_monitor != nullptr && !_monitor->_have_data) {
// We didn't have any data yet. Just silently restart the session.
_monitor->close();
_monitor = nullptr;
if (new_session()) {
return;
}
} else {
nout << "Failed to write to " << _last_session << "\n";
// Store a backup now, in case PStats crashes or something.
_last_session.make_dir();
if (monitor->write(_last_session)) {
nout << "Wrote to " << _last_session << "\n";
} else {
nout << "Failed to write to " << _last_session << "\n";
}
}
stop_listening();

View File

@ -81,12 +81,21 @@ make_monitor(const NetAddress &address) {
*/
void WinStatsServer::
lost_connection(PStatMonitor *monitor) {
// Store a backup now, in case PStats crashes or something.
_last_session.make_dir();
if (monitor->write(_last_session)) {
nout << "Wrote to " << _last_session << "\n";
if (_monitor != nullptr && !_monitor->_have_data) {
// We didn't have any data yet. Just silently restart the session.
_monitor->close();
_monitor = nullptr;
if (new_session()) {
return;
}
} else {
nout << "Failed to write to " << _last_session << "\n";
// Store a backup now, in case PStats crashes or something.
_last_session.make_dir();
if (monitor->write(_last_session)) {
nout << "Wrote to " << _last_session << "\n";
} else {
nout << "Failed to write to " << _last_session << "\n";
}
}
stop_listening();