added mutex for RNG, moved game command implementation from S_PH to S_Player in preparation for forwarding of game commands via tunneling interface
This commit is contained in:
parent
671214c60e
commit
9706ecd98a
11 changed files with 1090 additions and 1092 deletions
|
@ -17,6 +17,9 @@ RNG_SFMT::RNG_SFMT(QObject *parent)
|
||||||
|
|
||||||
unsigned int RNG_SFMT::getNumber(unsigned int min, unsigned int max)
|
unsigned int RNG_SFMT::getNumber(unsigned int min, unsigned int max)
|
||||||
{
|
{
|
||||||
|
mutex.lock();
|
||||||
uint64_t r = gen_rand64();
|
uint64_t r = gen_rand64();
|
||||||
|
mutex.unlock();
|
||||||
|
|
||||||
return min + (unsigned int) (((double) (max + 1 - min)) * r / (18446744073709551616.0 + 1.0));
|
return min + (unsigned int) (((double) (max + 1 - min)) * r / (18446744073709551616.0 + 1.0));
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,12 @@
|
||||||
#define RNG_SFMT_H
|
#define RNG_SFMT_H
|
||||||
|
|
||||||
#include "rng_abstract.h"
|
#include "rng_abstract.h"
|
||||||
|
#include <QMutex>
|
||||||
|
|
||||||
class RNG_SFMT : public RNG_Abstract {
|
class RNG_SFMT : public RNG_Abstract {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
private:
|
||||||
|
QMutex mutex;
|
||||||
public:
|
public:
|
||||||
RNG_SFMT(QObject *parent = 0);
|
RNG_SFMT(QObject *parent = 0);
|
||||||
unsigned int getNumber(unsigned int min, unsigned int max);
|
unsigned int getNumber(unsigned int min, unsigned int max);
|
||||||
|
|
|
@ -21,6 +21,7 @@ class Response;
|
||||||
class SessionEvent;
|
class SessionEvent;
|
||||||
class GameEventContainer;
|
class GameEventContainer;
|
||||||
class RoomEvent;
|
class RoomEvent;
|
||||||
|
class DeckList;
|
||||||
|
|
||||||
enum AuthenticationResult { NotLoggedIn = 0, PasswordRight = 1, UnknownUser = 2, WouldOverwriteOldSession = 3, UserIsBanned = 4 };
|
enum AuthenticationResult { NotLoggedIn = 0, PasswordRight = 1, UnknownUser = 2, WouldOverwriteOldSession = 3, UserIsBanned = 4 };
|
||||||
|
|
||||||
|
@ -60,7 +61,8 @@ public:
|
||||||
virtual bool isInIgnoreList(const QString &whoseList, const QString &who) { return false; }
|
virtual bool isInIgnoreList(const QString &whoseList, const QString &who) { return false; }
|
||||||
|
|
||||||
virtual void storeGameInformation(int secondsElapsed, const QSet<QString> &allPlayersEver, const QSet<QString> &allSpectatorsEver, const QList<GameReplay *> &replays) { }
|
virtual void storeGameInformation(int secondsElapsed, const QSet<QString> &allPlayersEver, const QSet<QString> &allSpectatorsEver, const QList<GameReplay *> &replays) { }
|
||||||
|
virtual DeckList *getDeckFromDatabase(int deckId, const QString &userName) = 0;
|
||||||
|
|
||||||
void sendIslMessage(const Response &item, int serverId = -1);
|
void sendIslMessage(const Response &item, int serverId = -1);
|
||||||
void sendIslMessage(const SessionEvent &item, int serverId = -1);
|
void sendIslMessage(const SessionEvent &item, int serverId = -1);
|
||||||
void sendIslMessage(const GameEventContainer &item, int serverId = -1);
|
void sendIslMessage(const GameEventContainer &item, int serverId = -1);
|
||||||
|
|
|
@ -75,6 +75,7 @@ public:
|
||||||
mutable QMutex gameMutex;
|
mutable QMutex gameMutex;
|
||||||
Server_Game(Server_ProtocolHandler *_creator, int _gameId, const QString &_description, const QString &_password, int _maxPlayers, const QList<int> &_gameTypes, bool _onlyBuddies, bool _onlyRegistered, bool _spectatorsAllowed, bool _spectatorsNeedPassword, bool _spectatorsCanTalk, bool _spectatorsSeeEverything, Server_Room *parent);
|
Server_Game(Server_ProtocolHandler *_creator, int _gameId, const QString &_description, const QString &_password, int _maxPlayers, const QList<int> &_gameTypes, bool _onlyBuddies, bool _onlyRegistered, bool _spectatorsAllowed, bool _spectatorsNeedPassword, bool _spectatorsCanTalk, bool _spectatorsSeeEverything, Server_Room *parent);
|
||||||
~Server_Game();
|
~Server_Game();
|
||||||
|
Server_Room *getRoom() const { return room; }
|
||||||
ServerInfo_Game getInfo() const;
|
ServerInfo_Game getInfo() const;
|
||||||
int getHostId() const { return hostId; }
|
int getHostId() const { return hostId; }
|
||||||
ServerInfo_User *getCreatorInfo() const { return creatorInfo; }
|
ServerInfo_User *getCreatorInfo() const { return creatorInfo; }
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -23,6 +23,39 @@ class CommandContainer;
|
||||||
class CardToMove;
|
class CardToMove;
|
||||||
class GameEventContainer;
|
class GameEventContainer;
|
||||||
class GameEventStorage;
|
class GameEventStorage;
|
||||||
|
class ResponseContainer;
|
||||||
|
class GameCommand;
|
||||||
|
|
||||||
|
class Command_KickFromGame;
|
||||||
|
class Command_LeaveGame;
|
||||||
|
class Command_GameSay;
|
||||||
|
class Command_Shuffle;
|
||||||
|
class Command_Mulligan;
|
||||||
|
class Command_RollDie;
|
||||||
|
class Command_DrawCards;
|
||||||
|
class Command_UndoDraw;
|
||||||
|
class Command_FlipCard;
|
||||||
|
class Command_AttachCard;
|
||||||
|
class Command_CreateToken;
|
||||||
|
class Command_CreateArrow;
|
||||||
|
class Command_DeleteArrow;
|
||||||
|
class Command_SetCardAttr;
|
||||||
|
class Command_SetCardCounter;
|
||||||
|
class Command_IncCardCounter;
|
||||||
|
class Command_ReadyStart;
|
||||||
|
class Command_Concede;
|
||||||
|
class Command_IncCounter;
|
||||||
|
class Command_CreateCounter;
|
||||||
|
class Command_SetCounter;
|
||||||
|
class Command_DelCounter;
|
||||||
|
class Command_NextTurn;
|
||||||
|
class Command_SetActivePhase;
|
||||||
|
class Command_DumpZone;
|
||||||
|
class Command_StopDumpZone;
|
||||||
|
class Command_RevealCards;
|
||||||
|
class Command_MoveCard;
|
||||||
|
class Command_SetSideboardPlan;
|
||||||
|
class Command_DeckSelect;
|
||||||
|
|
||||||
class Server_Player : public Server_ArrowTarget {
|
class Server_Player : public Server_ArrowTarget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -52,8 +85,6 @@ public:
|
||||||
void setProtocolHandler(Server_ProtocolHandler *_handler);
|
void setProtocolHandler(Server_ProtocolHandler *_handler);
|
||||||
|
|
||||||
void setPlayerId(int _id) { playerId = _id; }
|
void setPlayerId(int _id) { playerId = _id; }
|
||||||
int getInitialCards() const { return initialCards; }
|
|
||||||
void setInitialCards(int _initialCards) { initialCards = _initialCards; }
|
|
||||||
bool getReadyStart() const { return readyStart; }
|
bool getReadyStart() const { return readyStart; }
|
||||||
void setReadyStart(bool _readyStart) { readyStart = _readyStart; }
|
void setReadyStart(bool _readyStart) { readyStart = _readyStart; }
|
||||||
int getPlayerId() const { return playerId; }
|
int getPlayerId() const { return playerId; }
|
||||||
|
@ -61,7 +92,6 @@ public:
|
||||||
bool getConceded() const { return conceded; }
|
bool getConceded() const { return conceded; }
|
||||||
void setConceded(bool _conceded) { conceded = _conceded; }
|
void setConceded(bool _conceded) { conceded = _conceded; }
|
||||||
ServerInfo_User *getUserInfo() const { return userInfo; }
|
ServerInfo_User *getUserInfo() const { return userInfo; }
|
||||||
void setDeck(DeckList *_deck);
|
|
||||||
DeckList *getDeck() const { return deck; }
|
DeckList *getDeck() const { return deck; }
|
||||||
Server_Game *getGame() const { return game; }
|
Server_Game *getGame() const { return game; }
|
||||||
const QMap<QString, Server_CardZone *> &getZones() const { return zones; }
|
const QMap<QString, Server_CardZone *> &getZones() const { return zones; }
|
||||||
|
@ -80,7 +110,6 @@ public:
|
||||||
void addArrow(Server_Arrow *arrow);
|
void addArrow(Server_Arrow *arrow);
|
||||||
bool deleteArrow(int arrowId);
|
bool deleteArrow(int arrowId);
|
||||||
void addCounter(Server_Counter *counter);
|
void addCounter(Server_Counter *counter);
|
||||||
bool deleteCounter(int counterId);
|
|
||||||
|
|
||||||
void clearZones();
|
void clearZones();
|
||||||
void setupZones();
|
void setupZones();
|
||||||
|
@ -92,6 +121,38 @@ public:
|
||||||
void unattachCard(GameEventStorage &ges, Server_Card *card);
|
void unattachCard(GameEventStorage &ges, Server_Card *card);
|
||||||
Response::ResponseCode setCardAttrHelper(GameEventStorage &ges, const QString &zone, int cardId, CardAttribute attribute, const QString &attrValue);
|
Response::ResponseCode setCardAttrHelper(GameEventStorage &ges, const QString &zone, int cardId, CardAttribute attribute, const QString &attrValue);
|
||||||
|
|
||||||
|
Response::ResponseCode cmdLeaveGame(const Command_LeaveGame &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdKickFromGame(const Command_KickFromGame &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdConcede(const Command_Concede &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdReadyStart(const Command_ReadyStart &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdDeckSelect(const Command_DeckSelect &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdSetSideboardPlan(const Command_SetSideboardPlan &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdGameSay(const Command_GameSay &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdShuffle(const Command_Shuffle &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdMulligan(const Command_Mulligan &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdRollDie(const Command_RollDie &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdDrawCards(const Command_DrawCards &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdUndoDraw(const Command_UndoDraw &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdMoveCard(const Command_MoveCard &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdFlipCard(const Command_FlipCard &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdAttachCard(const Command_AttachCard &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdCreateToken(const Command_CreateToken &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdCreateArrow(const Command_CreateArrow &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdDeleteArrow(const Command_DeleteArrow &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdSetCardAttr(const Command_SetCardAttr &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdSetCardCounter(const Command_SetCardCounter &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdIncCardCounter(const Command_IncCardCounter &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdIncCounter(const Command_IncCounter &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdCreateCounter(const Command_CreateCounter &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdSetCounter(const Command_SetCounter &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdDelCounter(const Command_DelCounter &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdNextTurn(const Command_NextTurn &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdSetActivePhase(const Command_SetActivePhase &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdDumpZone(const Command_DumpZone &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdStopDumpZone(const Command_StopDumpZone &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
Response::ResponseCode cmdRevealCards(const Command_RevealCards &cmd, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
|
|
||||||
|
Response::ResponseCode processGameCommand(const GameCommand &command, ResponseContainer &rc, GameEventStorage &ges);
|
||||||
void sendGameEvent(const GameEventContainer &event);
|
void sendGameEvent(const GameEventContainer &event);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -50,37 +50,6 @@ class Command_RoomSay;
|
||||||
class Command_CreateGame;
|
class Command_CreateGame;
|
||||||
class Command_JoinGame;
|
class Command_JoinGame;
|
||||||
|
|
||||||
class Command_KickFromGame;
|
|
||||||
class Command_LeaveGame;
|
|
||||||
class Command_GameSay;
|
|
||||||
class Command_Shuffle;
|
|
||||||
class Command_Mulligan;
|
|
||||||
class Command_RollDie;
|
|
||||||
class Command_DrawCards;
|
|
||||||
class Command_UndoDraw;
|
|
||||||
class Command_FlipCard;
|
|
||||||
class Command_AttachCard;
|
|
||||||
class Command_CreateToken;
|
|
||||||
class Command_CreateArrow;
|
|
||||||
class Command_DeleteArrow;
|
|
||||||
class Command_SetCardAttr;
|
|
||||||
class Command_SetCardCounter;
|
|
||||||
class Command_IncCardCounter;
|
|
||||||
class Command_ReadyStart;
|
|
||||||
class Command_Concede;
|
|
||||||
class Command_IncCounter;
|
|
||||||
class Command_CreateCounter;
|
|
||||||
class Command_SetCounter;
|
|
||||||
class Command_DelCounter;
|
|
||||||
class Command_NextTurn;
|
|
||||||
class Command_SetActivePhase;
|
|
||||||
class Command_DumpZone;
|
|
||||||
class Command_StopDumpZone;
|
|
||||||
class Command_RevealCards;
|
|
||||||
class Command_MoveCard;
|
|
||||||
class Command_SetSideboardPlan;
|
|
||||||
class Command_DeckSelect;
|
|
||||||
|
|
||||||
class Command_BanFromServer;
|
class Command_BanFromServer;
|
||||||
class Command_UpdateServerMessage;
|
class Command_UpdateServerMessage;
|
||||||
class Command_ShutdownServer;
|
class Command_ShutdownServer;
|
||||||
|
@ -105,8 +74,6 @@ private:
|
||||||
|
|
||||||
virtual void transmitProtocolItem(const ServerMessage &item) = 0;
|
virtual void transmitProtocolItem(const ServerMessage &item) = 0;
|
||||||
|
|
||||||
virtual DeckList *getDeckFromDatabase(int deckId) = 0;
|
|
||||||
|
|
||||||
Response::ResponseCode cmdPing(const Command_Ping &cmd, ResponseContainer &rc);
|
Response::ResponseCode cmdPing(const Command_Ping &cmd, ResponseContainer &rc);
|
||||||
Response::ResponseCode cmdLogin(const Command_Login &cmd, ResponseContainer &rc);
|
Response::ResponseCode cmdLogin(const Command_Login &cmd, ResponseContainer &rc);
|
||||||
Response::ResponseCode cmdMessage(const Command_Message &cmd, ResponseContainer &rc);
|
Response::ResponseCode cmdMessage(const Command_Message &cmd, ResponseContainer &rc);
|
||||||
|
@ -130,36 +97,6 @@ private:
|
||||||
Response::ResponseCode cmdRoomSay(const Command_RoomSay &cmd, Server_Room *room, ResponseContainer &rc);
|
Response::ResponseCode cmdRoomSay(const Command_RoomSay &cmd, Server_Room *room, ResponseContainer &rc);
|
||||||
Response::ResponseCode cmdCreateGame(const Command_CreateGame &cmd, Server_Room *room, ResponseContainer &rc);
|
Response::ResponseCode cmdCreateGame(const Command_CreateGame &cmd, Server_Room *room, ResponseContainer &rc);
|
||||||
Response::ResponseCode cmdJoinGame(const Command_JoinGame &cmd, Server_Room *room, ResponseContainer &rc);
|
Response::ResponseCode cmdJoinGame(const Command_JoinGame &cmd, Server_Room *room, ResponseContainer &rc);
|
||||||
Response::ResponseCode cmdLeaveGame(const Command_LeaveGame &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdKickFromGame(const Command_KickFromGame &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdConcede(const Command_Concede &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdReadyStart(const Command_ReadyStart &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdDeckSelect(const Command_DeckSelect &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdSetSideboardPlan(const Command_SetSideboardPlan &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdGameSay(const Command_GameSay &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdShuffle(const Command_Shuffle &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdMulligan(const Command_Mulligan &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdRollDie(const Command_RollDie &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdDrawCards(const Command_DrawCards &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdUndoDraw(const Command_UndoDraw &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdMoveCard(const Command_MoveCard &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdFlipCard(const Command_FlipCard &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdAttachCard(const Command_AttachCard &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdCreateToken(const Command_CreateToken &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdCreateArrow(const Command_CreateArrow &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdDeleteArrow(const Command_DeleteArrow &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdSetCardAttr(const Command_SetCardAttr &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdSetCardCounter(const Command_SetCardCounter &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdIncCardCounter(const Command_IncCardCounter &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdIncCounter(const Command_IncCounter &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdCreateCounter(const Command_CreateCounter &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdSetCounter(const Command_SetCounter &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdDelCounter(const Command_DelCounter &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdNextTurn(const Command_NextTurn &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdSetActivePhase(const Command_SetActivePhase &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdDumpZone(const Command_DumpZone &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdStopDumpZone(const Command_StopDumpZone &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
Response::ResponseCode cmdRevealCards(const Command_RevealCards &cmd, Server_Game *game, Server_Player *player, ResponseContainer &rc, GameEventStorage &ges);
|
|
||||||
virtual Response::ResponseCode cmdBanFromServer(const Command_BanFromServer &cmd, ResponseContainer &rc) = 0;
|
virtual Response::ResponseCode cmdBanFromServer(const Command_BanFromServer &cmd, ResponseContainer &rc) = 0;
|
||||||
virtual Response::ResponseCode cmdShutdownServer(const Command_ShutdownServer &cmd, ResponseContainer &rc) = 0;
|
virtual Response::ResponseCode cmdShutdownServer(const Command_ShutdownServer &cmd, ResponseContainer &rc) = 0;
|
||||||
virtual Response::ResponseCode cmdUpdateServerMessage(const Command_UpdateServerMessage &cmd, ResponseContainer &rc) = 0;
|
virtual Response::ResponseCode cmdUpdateServerMessage(const Command_UpdateServerMessage &cmd, ResponseContainer &rc) = 0;
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "server_logger.h"
|
#include "server_logger.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "passwordhasher.h"
|
#include "passwordhasher.h"
|
||||||
|
#include "decklist.h"
|
||||||
#include "pb/game_replay.pb.h"
|
#include "pb/game_replay.pb.h"
|
||||||
#include "pb/event_replay_added.pb.h"
|
#include "pb/event_replay_added.pb.h"
|
||||||
#include "pb/event_server_message.pb.h"
|
#include "pb/event_server_message.pb.h"
|
||||||
|
@ -815,6 +816,27 @@ void Servatrice::storeGameInformation(int secondsElapsed, const QSet<QString> &a
|
||||||
query3.execBatch();
|
query3.execBatch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DeckList *Servatrice::getDeckFromDatabase(int deckId, const QString &userName)
|
||||||
|
{
|
||||||
|
checkSql();
|
||||||
|
|
||||||
|
QMutexLocker locker(&dbMutex);
|
||||||
|
QSqlQuery query;
|
||||||
|
|
||||||
|
query.prepare("select content from " + dbPrefix + "_decklist_files where id = :id and user = :user");
|
||||||
|
query.bindValue(":id", deckId);
|
||||||
|
query.bindValue(":user", userName);
|
||||||
|
execSqlQuery(query);
|
||||||
|
if (!query.next())
|
||||||
|
throw Response::RespNameNotFound;
|
||||||
|
|
||||||
|
QXmlStreamReader deckReader(query.value(0).toString());
|
||||||
|
DeckList *deck = new DeckList;
|
||||||
|
deck->loadFromXml(&deckReader);
|
||||||
|
|
||||||
|
return deck;
|
||||||
|
}
|
||||||
|
|
||||||
void Servatrice::scheduleShutdown(const QString &reason, int minutes)
|
void Servatrice::scheduleShutdown(const QString &reason, int minutes)
|
||||||
{
|
{
|
||||||
shutdownReason = reason;
|
shutdownReason = reason;
|
||||||
|
|
|
@ -116,6 +116,7 @@ public:
|
||||||
void incRxBytes(quint64 num);
|
void incRxBytes(quint64 num);
|
||||||
int getUserIdInDB(const QString &name);
|
int getUserIdInDB(const QString &name);
|
||||||
void storeGameInformation(int secondsElapsed, const QSet<QString> &allPlayersEver, const QSet<QString> &allSpectatorsEver, const QList<GameReplay *> &replays);
|
void storeGameInformation(int secondsElapsed, const QSet<QString> &allPlayersEver, const QSet<QString> &allSpectatorsEver, const QList<GameReplay *> &replays);
|
||||||
|
DeckList *getDeckFromDatabase(int deckId, const QString &userName);
|
||||||
|
|
||||||
bool islConnectionExists(int serverId) const;
|
bool islConnectionExists(int serverId) const;
|
||||||
void addIslInterface(int serverId, IslInterface *interface);
|
void addIslInterface(int serverId, IslInterface *interface);
|
||||||
|
|
|
@ -451,27 +451,6 @@ Response::ResponseCode ServerSocketInterface::cmdDeckUpload(const Command_DeckUp
|
||||||
return Response::RespOk;
|
return Response::RespOk;
|
||||||
}
|
}
|
||||||
|
|
||||||
DeckList *ServerSocketInterface::getDeckFromDatabase(int deckId)
|
|
||||||
{
|
|
||||||
servatrice->checkSql();
|
|
||||||
|
|
||||||
QMutexLocker locker(&servatrice->dbMutex);
|
|
||||||
QSqlQuery query;
|
|
||||||
|
|
||||||
query.prepare("select content from " + servatrice->getDbPrefix() + "_decklist_files where id = :id and user = :user");
|
|
||||||
query.bindValue(":id", deckId);
|
|
||||||
query.bindValue(":user", QString::fromStdString(userInfo->name()));
|
|
||||||
servatrice->execSqlQuery(query);
|
|
||||||
if (!query.next())
|
|
||||||
throw Response::RespNameNotFound;
|
|
||||||
|
|
||||||
QXmlStreamReader deckReader(query.value(0).toString());
|
|
||||||
DeckList *deck = new DeckList;
|
|
||||||
deck->loadFromXml(&deckReader);
|
|
||||||
|
|
||||||
return deck;
|
|
||||||
}
|
|
||||||
|
|
||||||
Response::ResponseCode ServerSocketInterface::cmdDeckDownload(const Command_DeckDownload &cmd, ResponseContainer &rc)
|
Response::ResponseCode ServerSocketInterface::cmdDeckDownload(const Command_DeckDownload &cmd, ResponseContainer &rc)
|
||||||
{
|
{
|
||||||
if (authState != PasswordRight)
|
if (authState != PasswordRight)
|
||||||
|
@ -479,7 +458,7 @@ Response::ResponseCode ServerSocketInterface::cmdDeckDownload(const Command_Deck
|
||||||
|
|
||||||
DeckList *deck;
|
DeckList *deck;
|
||||||
try {
|
try {
|
||||||
deck = getDeckFromDatabase(cmd.deck_id());
|
deck = servatrice->getDeckFromDatabase(cmd.deck_id(), QString::fromStdString(userInfo->name()));
|
||||||
} catch(Response::ResponseCode r) {
|
} catch(Response::ResponseCode r) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue