mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-11 16:44:48 -07:00
Added server/client feature set communication
This commit is contained in:
parent
baa61d0571
commit
044c2356ff
26 changed files with 225 additions and 22 deletions
|
|
@ -198,6 +198,7 @@ int main(int argc, char *argv[])
|
|||
#else
|
||||
qInstallMessageHandler(myMessageOutput);
|
||||
#endif
|
||||
|
||||
retval = app.exec();
|
||||
|
||||
std::cerr << "Server quit." << std::endl;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue