From 16cc20a603360e2a4714472ea441c7e627c544d5 Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Thu, 16 Apr 2009 18:27:10 +0200 Subject: [PATCH] removed thread --- cockatrice/src/decklistmodel.cpp | 2 +- cockatrice/src/main.cpp | 4 +++- servatrice/src/server.cpp | 37 ++++++++++++----------------- servatrice/src/server.h | 3 +-- servatrice/src/servergame.cpp | 16 ++----------- servatrice/src/servergame.h | 5 ++-- servatrice/src/servergamethread.cpp | 21 ---------------- servatrice/src/servergamethread.h | 28 ---------------------- servatrice/src/serversocket.cpp | 2 -- servatrice/src/version.h | 2 +- 10 files changed, 25 insertions(+), 95 deletions(-) delete mode 100644 servatrice/src/servergamethread.cpp delete mode 100644 servatrice/src/servergamethread.h diff --git a/cockatrice/src/decklistmodel.cpp b/cockatrice/src/decklistmodel.cpp index c9edaa4e..83de1ba2 100644 --- a/cockatrice/src/decklistmodel.cpp +++ b/cockatrice/src/decklistmodel.cpp @@ -77,7 +77,7 @@ bool DeckListModel::loadFromFile(const QString &fileName) while (!in.atEnd()) { QString line = in.readLine().simplified(); bool isSideboard = false; - if (line.startsWith("SB:")) { + if (line.startsWith("SB:", Qt::CaseInsensitive)) { line = line.mid(3).trimmed(); isSideboard = true; } diff --git a/cockatrice/src/main.cpp b/cockatrice/src/main.cpp index 4194032f..8abbad5c 100644 --- a/cockatrice/src/main.cpp +++ b/cockatrice/src/main.cpp @@ -38,13 +38,15 @@ void myMessageOutput(QtMsgType type, const char *msg) int main(int argc, char *argv[]) { -// qInstallMsgHandler(myMessageOutput); + qInstallMsgHandler(myMessageOutput); QApplication app(argc, argv); app.addLibraryPath("plugins"); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); MainWindow *ui = new MainWindow; + qDebug("main(): MainWindow constructor finished"); ui->show(); + qDebug("main(): ui->show() finished"); return app.exec(); } diff --git a/servatrice/src/server.cpp b/servatrice/src/server.cpp index 0d66d403..48a087e2 100644 --- a/servatrice/src/server.cpp +++ b/servatrice/src/server.cpp @@ -18,7 +18,6 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "server.h" -#include "servergamethread.h" #include "servergame.h" #include "serversocket.h" #include "counter.h" @@ -48,19 +47,12 @@ bool Server::openDatabase() return sqldb.open(); } -void Server::gameCreated(ServerGame *_game, ServerSocket *_creator) -{ - games << _game; - _creator->moveToThread(_game->thread()); - _game->addPlayer(_creator); -} - void Server::addGame(const QString description, const QString password, const int maxPlayers, ServerSocket *creator) { - ServerGameThread *newThread = new ServerGameThread(nextGameId++, description, password, maxPlayers, creator); - connect(newThread, SIGNAL(gameCreated(ServerGame *, ServerSocket *)), this, SLOT(gameCreated(ServerGame *, ServerSocket *))); - connect(newThread, SIGNAL(finished()), this, SLOT(gameClosed())); - newThread->start(); + ServerGame *newGame = new ServerGame(creator, nextGameId++, description, password, maxPlayers); + games << newGame; + connect(newGame, SIGNAL(gameClosing()), this, SLOT(gameClosing())); + newGame->addPlayer(creator); } void Server::incomingConnection(int socketId) @@ -74,12 +66,18 @@ void Server::incomingConnection(int socketId) AuthenticationResult Server::checkUserPassword(const QString &user, const QString &password) { + if (!QSqlDatabase::database().isOpen()) + if (!openDatabase()) { + qCritical(QString("Database error: %1").arg(QSqlDatabase::database().lastError().text()).toLatin1()); + return PasswordWrong; + } + QSqlQuery query; query.prepare("select password from users where name = :name"); query.bindValue(":name", user); if (!query.exec()) { qCritical(QString("Database error: %1").arg(query.lastError().text()).toLatin1()); - exit(-1); + return PasswordWrong; } if (query.next()) { if (query.value(0).toString() == password) @@ -107,11 +105,9 @@ QList Server::listOpenGames() QListIterator i(games); while (i.hasNext()) { ServerGame *tmp = i.next(); - tmp->mutex->lock(); if ((!tmp->getGameStarted()) && (tmp->getPlayerCount() < tmp->maxPlayers)) result.append(tmp); - tmp->mutex->unlock(); } return result; } @@ -120,7 +116,6 @@ bool Server::checkGamePassword(int gameId, const QString &password) { ServerGame *tmp; if ((tmp = getGame(gameId))) { - QMutexLocker locker(tmp->mutex); if ((!tmp->getGameStarted()) && (!tmp->password.compare(password, Qt::CaseSensitive)) && (tmp->getPlayerCount() < tmp->maxPlayers)) @@ -132,14 +127,12 @@ bool Server::checkGamePassword(int gameId, const QString &password) void Server::addClientToGame(int gameId, ServerSocket *client) { ServerGame *tmp = getGame(gameId); - client->moveToThread(tmp->thread()); tmp->addPlayer(client); } -void Server::gameClosed() +void Server::gameClosing() { - qDebug("Server::gameClosed"); - ServerGameThread *t = qobject_cast(sender()); - games.removeAt(games.indexOf(t->getGame())); - delete t; + qDebug("Server::gameClosing"); + ServerGame *g = qobject_cast(sender()); + games.removeAt(games.indexOf(g)); } diff --git a/servatrice/src/server.h b/servatrice/src/server.h index 8befdef8..7b5408f7 100644 --- a/servatrice/src/server.h +++ b/servatrice/src/server.h @@ -35,8 +35,7 @@ class Server : public QTcpServer private slots: void addGame(const QString description, const QString password, const int maxPlayers, ServerSocket *creator); void addClientToGame(int gameId, ServerSocket *client); - void gameCreated(ServerGame *_game, ServerSocket *_creator); - void gameClosed(); + void gameClosing(); public: Server(QObject *parent = 0); ~Server(); diff --git a/servatrice/src/servergame.cpp b/servatrice/src/servergame.cpp index 14a63e28..5042c2c6 100644 --- a/servatrice/src/servergame.cpp +++ b/servatrice/src/servergame.cpp @@ -24,13 +24,12 @@ ServerGame::ServerGame(ServerSocket *_creator, int _gameId, QString _description, QString _password, int _maxPlayers, QObject *parent) : QObject(parent), gameStarted(false), rnd(0), creator(_creator), gameId(_gameId), description(_description), password(_password), maxPlayers(_maxPlayers) { - mutex = new QMutex(QMutex::Recursive); } ServerGame::~ServerGame() { + emit gameClosing(); delete rnd; - delete mutex; qDebug("ServerGame destructor"); } @@ -41,14 +40,11 @@ bool ServerGame::getGameStarted() int ServerGame::getPlayerCount() { - QMutexLocker locker(mutex); return players.size(); } QStringList ServerGame::getPlayerNames() { - QMutexLocker locker(mutex); - QStringList result; QListIterator i(players); while (i.hasNext()) { @@ -71,8 +67,6 @@ ServerSocket *ServerGame::getPlayer(int player_id) void ServerGame::msg(const QString &s) { - QMutexLocker locker(mutex); - QListIterator i(players); while (i.hasNext()) i.next()->msg(s); @@ -88,8 +82,6 @@ void ServerGame::broadcastEvent(const QString &cmd, ServerSocket *player) void ServerGame::startGameIfReady() { - QMutexLocker locker(mutex); - if (players.size() < maxPlayers) return; for (int i = 0; i < players.size(); i++) @@ -112,8 +104,6 @@ void ServerGame::startGameIfReady() void ServerGame::addPlayer(ServerSocket *player) { - QMutexLocker locker(mutex); - int max = -1; QListIterator i(players); while (i.hasNext()) { @@ -134,12 +124,10 @@ void ServerGame::addPlayer(ServerSocket *player) void ServerGame::removePlayer(ServerSocket *player) { - QMutexLocker locker(mutex); - players.removeAt(players.indexOf(player)); broadcastEvent("leave", player); if (!players.size()) - thread()->quit(); + deleteLater(); } void ServerGame::setActivePlayer(int _activePlayer) diff --git a/servatrice/src/servergame.h b/servatrice/src/servergame.h index 9dee678f..ee291896 100644 --- a/servatrice/src/servergame.h +++ b/servatrice/src/servergame.h @@ -20,8 +20,6 @@ #ifndef SERVERGAME_H #define SERVERGAME_H -#include -#include #include class ServerSocket; @@ -34,10 +32,11 @@ private: bool gameStarted; int activePlayer; int activePhase; +signals: + void gameClosing(); public slots: void broadcastEvent(const QString &event, ServerSocket *player); public: - QMutex *mutex; Random *rnd; ServerSocket *creator; int gameId; diff --git a/servatrice/src/servergamethread.cpp b/servatrice/src/servergamethread.cpp deleted file mode 100644 index 01354e35..00000000 --- a/servatrice/src/servergamethread.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "servergamethread.h" -#include "servergame.h" - -ServerGameThread::ServerGameThread(int _gameId, const QString _description, const QString _password, const int _maxPlayers, ServerSocket *_creator, QObject *parent) - : QThread(parent), gameId(_gameId), description(_description), password(_password), maxPlayers(_maxPlayers), creator(_creator), game(0) -{ - -} - -ServerGameThread::~ServerGameThread() -{ - if (game) - delete game; -} - -void ServerGameThread::run() -{ - game = new ServerGame(creator, gameId, description, password, maxPlayers); - emit gameCreated(game, creator); - exec(); -} diff --git a/servatrice/src/servergamethread.h b/servatrice/src/servergamethread.h deleted file mode 100644 index 1c589b69..00000000 --- a/servatrice/src/servergamethread.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef SERVERGAMETHREAD_H -#define SERVERGAMETHREAD_H - -#include -#include - -class ServerGame; -class ServerSocket; - -class ServerGameThread : public QThread { - Q_OBJECT -signals: - void gameCreated(ServerGame *_game, ServerSocket *creator); -private: - int gameId; - QString description; - QString password; - int maxPlayers; - ServerSocket *creator; - ServerGame *game; -public: - ServerGameThread(int _gameId, const QString _description, const QString _password, const int _maxPlayers, ServerSocket *_creator, QObject *parent = 0); - ~ServerGameThread(); - ServerGame *getGame() { return game; } - void run(); -}; - -#endif diff --git a/servatrice/src/serversocket.cpp b/servatrice/src/serversocket.cpp index 222c01a4..83dc226d 100644 --- a/servatrice/src/serversocket.cpp +++ b/servatrice/src/serversocket.cpp @@ -254,14 +254,12 @@ ReturnMessage::ReturnCode ServerSocket::cmdListGames(const QList ¶ QStringList result; while (gameListIterator.hasNext()) { ServerGame *tmp = gameListIterator.next(); - tmp->mutex->lock(); result << QString("%1|%2|%3|%4|%5|%6").arg(tmp->gameId) .arg(tmp->description) .arg(tmp->password == "" ? 0 : 1) .arg(tmp->getPlayerCount()) .arg(tmp->maxPlayers) .arg(tmp->creator->PlayerName); - tmp->mutex->unlock(); } remsg->sendList(result); return ReturnMessage::ReturnOk; diff --git a/servatrice/src/version.h b/servatrice/src/version.h index 8e1eba34..89f5e012 100644 --- a/servatrice/src/version.h +++ b/servatrice/src/version.h @@ -18,4 +18,4 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -const char *VERSION_STRING = "Servatrice 0.20090409"; +const char *VERSION_STRING = "Servatrice 0.20090416";