Updated server and client ping to 5 seconds. Also changed hard set 1 second value on the ping timers to read values from the settings cache.
This commit is contained in:
parent
183fbd2805
commit
8c7301b19f
5 changed files with 133 additions and 122 deletions
|
@ -1,7 +1,7 @@
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include "remoteclient.h"
|
#include "remoteclient.h"
|
||||||
|
#include "settingscache.h"
|
||||||
#include "pending_command.h"
|
#include "pending_command.h"
|
||||||
#include "pb/commands.pb.h"
|
#include "pb/commands.pb.h"
|
||||||
#include "pb/session_commands.pb.h"
|
#include "pb/session_commands.pb.h"
|
||||||
|
@ -16,8 +16,10 @@ static const unsigned int protocolVersion = 14;
|
||||||
RemoteClient::RemoteClient(QObject *parent)
|
RemoteClient::RemoteClient(QObject *parent)
|
||||||
: AbstractClient(parent), timeRunning(0), lastDataReceived(0), messageInProgress(false), handshakeStarted(false), messageLength(0)
|
: AbstractClient(parent), timeRunning(0), lastDataReceived(0), messageInProgress(false), handshakeStarted(false), messageLength(0)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
int keepalive = settingsCache->getKeepAlive();
|
||||||
timer = new QTimer(this);
|
timer = new QTimer(this);
|
||||||
timer->setInterval(1000);
|
timer->setInterval(keepalive * 1000);
|
||||||
connect(timer, SIGNAL(timeout()), this, SLOT(ping()));
|
connect(timer, SIGNAL(timeout()), this, SLOT(ping()));
|
||||||
|
|
||||||
socket = new QTcpSocket(this);
|
socket = new QTcpSocket(this);
|
||||||
|
@ -309,9 +311,10 @@ void RemoteClient::ping()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int keepalive = settingsCache->getKeepAlive();
|
||||||
int maxTime = timeRunning - lastDataReceived;
|
int maxTime = timeRunning - lastDataReceived;
|
||||||
emit maxPingTime(maxTime, maxTimeout);
|
emit maxPingTime(maxTime, maxTimeout);
|
||||||
if (maxTime >= maxTimeout) {
|
if (maxTime >= (keepalive * maxTimeout)) {
|
||||||
disconnectFromServer();
|
disconnectFromServer();
|
||||||
emit serverTimeout();
|
emit serverTimeout();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -6,6 +6,7 @@ SettingsCache::SettingsCache()
|
||||||
settings = new QSettings(this);
|
settings = new QSettings(this);
|
||||||
|
|
||||||
lang = settings->value("personal/lang").toString();
|
lang = settings->value("personal/lang").toString();
|
||||||
|
keepalive = settings->value("personal/keepalive", 5).toInt();
|
||||||
|
|
||||||
deckPath = settings->value("paths/decks").toString();
|
deckPath = settings->value("paths/decks").toString();
|
||||||
replaysPath = settings->value("paths/replays").toString();
|
replaysPath = settings->value("paths/replays").toString();
|
||||||
|
|
|
@ -97,6 +97,7 @@ private:
|
||||||
bool spectatorsNeedPassword;
|
bool spectatorsNeedPassword;
|
||||||
bool spectatorsCanTalk;
|
bool spectatorsCanTalk;
|
||||||
bool spectatorsCanSeeEverything;
|
bool spectatorsCanSeeEverything;
|
||||||
|
int keepalive;
|
||||||
public:
|
public:
|
||||||
SettingsCache();
|
SettingsCache();
|
||||||
const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; }
|
const QByteArray &getMainWindowGeometry() const { return mainWindowGeometry; }
|
||||||
|
@ -167,6 +168,7 @@ public:
|
||||||
bool getSpectatorsNeedPassword() const { return spectatorsNeedPassword; }
|
bool getSpectatorsNeedPassword() const { return spectatorsNeedPassword; }
|
||||||
bool getSpectatorsCanTalk() const { return spectatorsCanTalk; }
|
bool getSpectatorsCanTalk() const { return spectatorsCanTalk; }
|
||||||
bool getSpectatorsCanSeeEverything() const { return spectatorsCanSeeEverything; }
|
bool getSpectatorsCanSeeEverything() const { return spectatorsCanSeeEverything; }
|
||||||
|
int getKeepAlive() const { return keepalive; }
|
||||||
public slots:
|
public slots:
|
||||||
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
|
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
|
||||||
void setLang(const QString &_lang);
|
void setLang(const QString &_lang);
|
||||||
|
|
|
@ -38,6 +38,14 @@ logfile=server.log
|
||||||
; it won't be logged. Default is empty; example: "kittens,ponies,faires"
|
; it won't be logged. Default is empty; example: "kittens,ponies,faires"
|
||||||
logfilters=""
|
logfilters=""
|
||||||
|
|
||||||
|
; Set the time interval in seconds that servatrice will use to communicate with each connected client
|
||||||
|
; to verify the client has not timed out. Defaults is 5 seconds
|
||||||
|
clientkeepalive=5
|
||||||
|
|
||||||
|
; Maximum time in seconds a player can stay inactive with there client not even responding to pings, before is
|
||||||
|
; considered disconnected; default is 15
|
||||||
|
max_player_inactivity_time=15
|
||||||
|
|
||||||
|
|
||||||
[authentication]
|
[authentication]
|
||||||
|
|
||||||
|
@ -178,10 +186,6 @@ roomlist\1\game_types\3\name="GameType3"
|
||||||
|
|
||||||
[game]
|
[game]
|
||||||
|
|
||||||
; Maximum time in seconds a player can stay inactive, with his client hot even responding to pings, before is
|
|
||||||
; considered disconnected; default is 15
|
|
||||||
max_player_inactivity_time=15
|
|
||||||
|
|
||||||
; Maximum time in seconds all players in a game can stay inactive before the game is automatically closed;
|
; Maximum time in seconds all players in a game can stay inactive before the game is automatically closed;
|
||||||
; default is 120
|
; default is 120
|
||||||
max_game_inactivity_time=120
|
max_game_inactivity_time=120
|
||||||
|
|
|
@ -273,7 +273,7 @@ bool Servatrice::initServer()
|
||||||
updateLoginMessage();
|
updateLoginMessage();
|
||||||
|
|
||||||
maxGameInactivityTime = settingsCache->value("game/max_game_inactivity_time", 120).toInt();
|
maxGameInactivityTime = settingsCache->value("game/max_game_inactivity_time", 120).toInt();
|
||||||
maxPlayerInactivityTime = settingsCache->value("game/max_player_inactivity_time", 15).toInt();
|
maxPlayerInactivityTime = settingsCache->value("server/max_player_inactivity_time", 15).toInt();
|
||||||
|
|
||||||
maxUsersPerAddress = settingsCache->value("security/max_users_per_address", 4).toInt();
|
maxUsersPerAddress = settingsCache->value("security/max_users_per_address", 4).toInt();
|
||||||
messageCountingInterval = settingsCache->value("security/message_counting_interval", 10).toInt();
|
messageCountingInterval = settingsCache->value("security/message_counting_interval", 10).toInt();
|
||||||
|
@ -343,9 +343,10 @@ bool Servatrice::initServer()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int clientkeepalive = settingsCache->value("server/clientkeepalive", 1).toInt();
|
||||||
pingClock = new QTimer(this);
|
pingClock = new QTimer(this);
|
||||||
connect(pingClock, SIGNAL(timeout()), this, SIGNAL(pingClockTimeout()));
|
connect(pingClock, SIGNAL(timeout()), this, SIGNAL(pingClockTimeout()));
|
||||||
pingClock->start(1000);
|
pingClock->start(clientkeepalive * 1000);
|
||||||
|
|
||||||
int statusUpdateTime = settingsCache->value("server/statusupdate", 15000).toInt();
|
int statusUpdateTime = settingsCache->value("server/statusupdate", 15000).toInt();
|
||||||
statusUpdateClock = new QTimer(this);
|
statusUpdateClock = new QTimer(this);
|
||||||
|
|
Loading…
Reference in a new issue