Added server/client feature set communication

This commit is contained in:
woogerboy21 2015-08-27 00:10:41 -04:00
parent baa61d0571
commit 044c2356ff
26 changed files with 225 additions and 22 deletions

View file

@ -198,6 +198,7 @@ int main(int argc, char *argv[])
#else
qInstallMessageHandler(myMessageOutput);
#endif
retval = app.exec();
std::cerr << "Server quit." << std::endl;

View file

@ -38,6 +38,7 @@
#include "pb/event_server_message.pb.h"
#include "pb/event_server_shutdown.pb.h"
#include "pb/event_connection_closed.pb.h"
#include "featureset.h"
Servatrice_GameServer::Servatrice_GameServer(Servatrice *_server, int _numberPools, const QSqlDatabase &_sqlDatabase, QObject *parent)
: QTcpServer(parent),
@ -179,6 +180,16 @@ bool Servatrice::initServer()
if (registrationEnabled)
qDebug() << "Require email address to register: " << requireEmailForRegistration;
FeatureSet features;
features.initalizeFeatureList(serverRequiredFeatureList);
requiredFeatures = settingsCache->value("server/requiredfeatures","").toString();
QStringList listReqFeatures = requiredFeatures.split(",", QString::SkipEmptyParts);
if (!listReqFeatures.isEmpty())
foreach(QString reqFeature, listReqFeatures)
features.enableRequiredFeature(serverRequiredFeatureList,reqFeature);
qDebug() << "Required client features: " << serverRequiredFeatureList;
QString dbTypeStr = settingsCache->value("database/type").toString();
if (dbTypeStr == "mysql")
databaseType = DatabaseMySql;

View file

@ -30,6 +30,7 @@
#include <QMetaType>
#include "server.h"
Q_DECLARE_METATYPE(QSqlDatabase)
class QSqlQuery;
@ -41,6 +42,7 @@ class Servatrice_ConnectionPool;
class Servatrice_DatabaseInterface;
class ServerSocketInterface;
class IslInterface;
class FeatureSet;
class Servatrice_GameServer : public QTcpServer {
Q_OBJECT
@ -109,6 +111,8 @@ private:
mutable QMutex loginMessageMutex;
QString loginMessage;
QString dbPrefix;
QString requiredFeatures;
QMap<QString, bool> serverRequiredFeatureList;
Servatrice_DatabaseInterface *servatriceDatabaseInterface;
int serverId;
int uptime;
@ -134,8 +138,10 @@ public:
Servatrice(QObject *parent = 0);
~Servatrice();
bool initServer();
QMap<QString, bool> getServerRequiredFeatureList() const { return serverRequiredFeatureList; }
QString getServerName() const { return serverName; }
QString getLoginMessage() const { QMutexLocker locker(&loginMessageMutex); return loginMessage; }
QString getRequiredFeatures() const { return requiredFeatures; }
bool permitUnregisteredUsers() const { return authenticationMethod != AuthenticationNone; }
bool getGameShouldPing() const { return true; }
bool getClientIdRequired() const { return clientIdRequired; }