mirror of
https://github.com/QuasarApp/Snake.git
synced 2025-04-28 18:54:40 +00:00
fix client protocol server signals
This commit is contained in:
parent
6a9ee29312
commit
5a3af94dc0
@ -42,10 +42,8 @@ bool Server::parsePackage(const Package &pkg, QTcpSocket* sender) {
|
||||
|
||||
default: {
|
||||
|
||||
BaseNetworkObject *obj = pkg.parse();
|
||||
|
||||
emit incomingReques(obj, qHash(sender->peerAddress()));
|
||||
delete obj;
|
||||
emit incomingReques(static_cast<Command>(pkg.hdr.command),
|
||||
pkg.data, qHash(sender->peerAddress()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -194,6 +192,8 @@ void Server::badRequest(quint32 address) {
|
||||
|
||||
Package pcg;
|
||||
if (!(pcg.create(Command::BadRequest, Type::Responke))) {
|
||||
QuasarAppUtils::Params::verboseLog("Bad request detected, bud responce command nor received!",
|
||||
QuasarAppUtils::Error);
|
||||
};
|
||||
|
||||
if (!sendPackage(pcg, client.sct)) {
|
||||
|
@ -72,7 +72,7 @@ public:
|
||||
|
||||
QStringList baned() const;
|
||||
signals:
|
||||
void incomingReques(BaseNetworkObject *map, const quint32 &sender);
|
||||
void incomingReques(Command cmd, const QByteArray &data, const quint32 &sender);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -19,15 +19,20 @@ int main(int argc, char *argv[])
|
||||
|
||||
QString address = "";
|
||||
unsigned short port = 0;
|
||||
|
||||
QString db = "";
|
||||
if(QuasarAppUtils::Params::isEndable("address")) {
|
||||
address = QuasarAppUtils::Params::getStrArg("address");
|
||||
}
|
||||
|
||||
if(QuasarAppUtils::Params::isEndable("port")) {
|
||||
port = QuasarAppUtils::Params::getStrArg("port").toUShort();
|
||||
port = static_cast<unsigned short>(QuasarAppUtils::Params::getArg("port").toUInt());
|
||||
}
|
||||
|
||||
if(QuasarAppUtils::Params::isEndable("db")) {
|
||||
db = QuasarAppUtils::Params::getStrArg("db");
|
||||
}
|
||||
|
||||
|
||||
if(ServerUtils::runDaemon()) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,8 +1,10 @@
|
||||
#include "mainserver.h"
|
||||
#include "sqldbcache.h"
|
||||
#include <spserver.h>
|
||||
#include <cpserver.h>
|
||||
#include <quasarapp.h>
|
||||
#include <basenetworkobject.h>
|
||||
#include <login.h>
|
||||
|
||||
bool MainServer::restartSrver(const QString &ip, unsigned short port) {
|
||||
if (_serverDaemon->isListening()) {
|
||||
@ -16,16 +18,27 @@ bool MainServer::restartSrver(const QString &ip, unsigned short port) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainServer::handleRequest(ClientProtocol::BaseNetworkObject *obj,
|
||||
void MainServer::handleRequest(ClientProtocol::Command cmd,
|
||||
const QByteArray& data,
|
||||
const quint32 &addres) {
|
||||
|
||||
Q_UNUSED(addres);
|
||||
|
||||
auto command = static_cast<ClientProtocol::Command>
|
||||
(obj->getClass());
|
||||
|
||||
switch (command) {
|
||||
switch (cmd) {
|
||||
case ClientProtocol::Command::Login: {
|
||||
|
||||
ClientProtocol::Login loginData;
|
||||
loginData.fromBytes(data);
|
||||
|
||||
|
||||
if (!loginData.isValid()) {
|
||||
_serverDaemon->badRequest(addres);
|
||||
return ;
|
||||
}
|
||||
|
||||
// TODO
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -102,6 +115,8 @@ MainServer::MainServer(QObject *ptr):
|
||||
_serverDaemon = new ClientProtocol::Server(this);
|
||||
_terminalPort = new ServerProtocol::Server(this);
|
||||
|
||||
_db = new SqlDBCache();
|
||||
|
||||
connect(_serverDaemon, &ClientProtocol::Server::incomingReques,
|
||||
this, &MainServer::handleRequest);
|
||||
|
||||
@ -110,14 +125,21 @@ MainServer::MainServer(QObject *ptr):
|
||||
|
||||
}
|
||||
|
||||
bool MainServer::run(const QString &ip, unsigned short port) {
|
||||
bool MainServer::run(const QString &ip, unsigned short port, const QString& db) {
|
||||
|
||||
if (!_db->initDb((db.size())? db: DEFAULT_DB_PATH)) {
|
||||
QuasarAppUtils::Params::verboseLog("init db fail!", QuasarAppUtils::Error);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!_terminalPort->run(DEFAULT_SERVER)) {
|
||||
QuasarAppUtils::Params::verboseLog("run termonal fail!", QuasarAppUtils::Error);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!restartSrver(ip.isEmpty()? DEFAULT_SNAKE_SERVER: ip,
|
||||
port ? port : DEFAULT_SNAKE_PORT)) {
|
||||
QuasarAppUtils::Params::verboseLog("restart server fail", QuasarAppUtils::Error);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include <serverprotocol.h>
|
||||
#include "server_global.h"
|
||||
#include <QHostAddress>
|
||||
#include <clientprotocol.h>
|
||||
|
||||
namespace ServerProtocol {
|
||||
class Server;
|
||||
@ -13,12 +14,16 @@ namespace ClientProtocol {
|
||||
class BaseNetworkObject;
|
||||
}
|
||||
|
||||
class SqlDBCache;
|
||||
|
||||
class SERVERSHARED_EXPORT MainServer: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
ServerProtocol::Server *_terminalPort = nullptr;
|
||||
ClientProtocol::Server *_serverDaemon= nullptr;
|
||||
SqlDBCache* _db = nullptr;
|
||||
|
||||
|
||||
bool payItem(int player, int idItem);
|
||||
bool sellItem(int player, int idItem);
|
||||
@ -26,13 +31,13 @@ private:
|
||||
bool restartSrver(const QString& ip, unsigned short port);
|
||||
|
||||
private slots:
|
||||
void handleRequest(ClientProtocol::BaseNetworkObject *obj,
|
||||
void handleRequest(ClientProtocol::Command cmd, const QByteArray &data,
|
||||
const quint32& addres);
|
||||
void handleTerminalRequest(QVariantMap obj);
|
||||
|
||||
public:
|
||||
MainServer(QObject *ptr = nullptr);
|
||||
bool run(const QString& ip = "", unsigned short port = 0);
|
||||
bool run(const QString& ip = "", unsigned short port = 0, const QString &db = "");
|
||||
virtual ~MainServer();
|
||||
};
|
||||
|
||||
|
@ -147,8 +147,8 @@ SqlDBCache::~SqlDBCache() {
|
||||
globalUpdateDataBase(SqlDBCasheWriteMode::Force);
|
||||
}
|
||||
|
||||
bool SqlDBCache::initDb(const QString &sql, const QString &path) {
|
||||
if (!SqlDBWriter::initDb(sql, path)) {
|
||||
bool SqlDBCache::initDb(const QString &pdbath) {
|
||||
if (!SqlDBWriter::initDb(pdbath)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -45,8 +45,7 @@ public:
|
||||
SqlDBCache(qint64 updateInterval = DEFAULT_UPDATE_INTERVAL);
|
||||
~SqlDBCache() override;
|
||||
|
||||
bool initDb(const QString &sql = DEFAULT_DB_NAME,
|
||||
const QString &path = DEFAULT_DB_PATH) override;
|
||||
bool initDb(const QString &pdbath = DEFAULT_DB_PATH) override;
|
||||
|
||||
Item getItem(int id) override;
|
||||
int saveItem(const Item& saveData) override;
|
||||
|
@ -414,12 +414,12 @@ SqlDBWriter::SqlDBWriter() {
|
||||
|
||||
}
|
||||
|
||||
bool SqlDBWriter::initDb(const QString& database, const QString &databasePath) {
|
||||
bool SqlDBWriter::initDb(const QString &databasePath) {
|
||||
QStringList drivers = QSqlDatabase::drivers();
|
||||
db = new QSqlDatabase();
|
||||
*db = QSqlDatabase::addDatabase("QSQLITE", database);
|
||||
|
||||
db->setDatabaseName(QFileInfo(databasePath).absolutePath() + "/" + database);
|
||||
*db = QSqlDatabase::addDatabase("QSQLITE", QFileInfo(databasePath).fileName());
|
||||
db->setDatabaseName(QFileInfo(databasePath).absoluteFilePath());
|
||||
query = new QSqlQuery(*db);
|
||||
|
||||
if (!db->open()) {
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include <player.h>
|
||||
|
||||
#define DEFAULT_DB_NAME "SnakeDatabase.db"
|
||||
#define DEFAULT_DB_PATH QDir::homePath() + "/SnakeServer"
|
||||
#define DEFAULT_DB_PATH QDir::homePath() + "/SnakeServer/" + DEFAULT_DB_NAME
|
||||
#define DEFAULT_UPDATE_INTERVAL 3600000 // 1 hour
|
||||
|
||||
class QSqlQuery;
|
||||
@ -51,8 +51,7 @@ protected:
|
||||
public:
|
||||
SqlDBWriter();
|
||||
|
||||
virtual bool initDb(const QString &sql = DEFAULT_DB_NAME,
|
||||
const QString &path = DEFAULT_DB_PATH);
|
||||
virtual bool initDb(const QString &path = DEFAULT_DB_PATH);
|
||||
|
||||
virtual bool isValid() const;
|
||||
|
||||
|
@ -17,6 +17,7 @@ void ServerUtils::helpDaemon() {
|
||||
qInfo() << " daemon / d : start like daemon.";
|
||||
qInfo() << " -port (port) : start with custom port.";
|
||||
qInfo() << " -address (address) : start with custom address.";
|
||||
qInfo() << " -db (path/to/db.file) : start with custom db";
|
||||
|
||||
qInfo() << " verbose : show debug log";
|
||||
|
||||
|
@ -237,7 +237,7 @@ void testSankeServer::testBaseSql() {
|
||||
SqlDBWriter db;
|
||||
QFile::remove("./test.db");
|
||||
|
||||
bool init = db.initDb("test.db", "./");
|
||||
bool init = db.initDb("./test.db");
|
||||
|
||||
if (!init) {
|
||||
QFile::remove("./test.db");
|
||||
@ -336,7 +336,7 @@ void testSankeServer::testSqlCache() {
|
||||
|
||||
QFile::remove("./test2.db");
|
||||
|
||||
bool init = db.initDb("test2.db", "./");
|
||||
bool init = db.initDb("./test2.db");
|
||||
|
||||
if (!init) {
|
||||
QFile::remove("./test2.db");
|
||||
|
Loading…
x
Reference in New Issue
Block a user