From f6f8ad82b2e3812c2b3e37784286c581749e8eb8 Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Tue, 1 May 2012 12:48:59 +0200 Subject: [PATCH] server code cleanup --- cockatrice/src/localserverinterface.h | 16 --------- common/server_protocolhandler.cpp | 43 ++++------------------ common/server_protocolhandler.h | 45 +++++------------------- servatrice/src/serversocketinterface.cpp | 37 +++++++++++++++++++ servatrice/src/serversocketinterface.h | 21 +++++++++++ 5 files changed, 72 insertions(+), 90 deletions(-) diff --git a/cockatrice/src/localserverinterface.h b/cockatrice/src/localserverinterface.h index 557ada95..90e86754 100644 --- a/cockatrice/src/localserverinterface.h +++ b/cockatrice/src/localserverinterface.h @@ -8,22 +8,6 @@ class LocalServer; class LocalServerInterface : public Server_ProtocolHandler { Q_OBJECT -private: - Response::ResponseCode cmdAddToList(const Command_AddToList & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdRemoveFromList(const Command_RemoveFromList & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdDeckList(const Command_DeckList & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdDeckNewDir(const Command_DeckNewDir & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdDeckDelDir(const Command_DeckDelDir & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdDeckDel(const Command_DeckDel & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdDeckUpload(const Command_DeckUpload & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdDeckDownload(const Command_DeckDownload & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdReplayList(const Command_ReplayList & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdReplayDownload(const Command_ReplayDownload & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdReplayModifyMatch(const Command_ReplayModifyMatch &cmd, ResponseContainer &rc) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdReplayDeleteMatch(const Command_ReplayDeleteMatch &cmd, ResponseContainer &rc) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdBanFromServer(const Command_BanFromServer & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdShutdownServer(const Command_ShutdownServer & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } - Response::ResponseCode cmdUpdateServerMessage(const Command_UpdateServerMessage & /*cmd*/, ResponseContainer & /*rc*/) { return Response::RespFunctionNotAllowed; } public: LocalServerInterface(LocalServer *_server); ~LocalServerInterface(); diff --git a/common/server_protocolhandler.cpp b/common/server_protocolhandler.cpp index 0be4ac76..242c5220 100644 --- a/common/server_protocolhandler.cpp +++ b/common/server_protocolhandler.cpp @@ -1,27 +1,11 @@ #include +#include #include "server_protocolhandler.h" #include "server_room.h" -#include "server_card.h" -#include "server_arrow.h" -#include "server_cardzone.h" -#include "server_counter.h" #include "server_game.h" #include "server_player.h" -#include "decklist.h" #include "get_pb_extension.h" -#include -#include "pb/serverinfo_zone.pb.h" #include "pb/commands.pb.h" -#include "pb/command_deck_list.pb.h" -#include "pb/command_deck_upload.pb.h" -#include "pb/command_deck_download.pb.h" -#include "pb/command_deck_new_dir.pb.h" -#include "pb/command_deck_del_dir.pb.h" -#include "pb/command_deck_del.pb.h" -#include "pb/command_replay_list.pb.h" -#include "pb/command_replay_download.pb.h" -#include "pb/command_replay_modify_match.pb.h" -#include "pb/command_replay_delete_match.pb.h" #include "pb/response.pb.h" #include "pb/response_login.pb.h" #include "pb/response_list_users.pb.h" @@ -32,7 +16,6 @@ #include "pb/event_server_message.pb.h" #include "pb/event_user_message.pb.h" #include "pb/event_game_joined.pb.h" -#include "pb/event_game_state_changed.pb.h" #include "pb/event_room_say.pb.h" #include @@ -139,23 +122,12 @@ Response::ResponseCode Server_ProtocolHandler::processSessionCommandContainer(co case SessionCommand::PING: resp = cmdPing(sc.GetExtension(Command_Ping::ext), rc); break; case SessionCommand::LOGIN: resp = cmdLogin(sc.GetExtension(Command_Login::ext), rc); break; case SessionCommand::MESSAGE: resp = cmdMessage(sc.GetExtension(Command_Message::ext), rc); break; - case SessionCommand::ADD_TO_LIST: resp = cmdAddToList(sc.GetExtension(Command_AddToList::ext), rc); break; - case SessionCommand::REMOVE_FROM_LIST: resp = cmdRemoveFromList(sc.GetExtension(Command_RemoveFromList::ext), rc); break; - case SessionCommand::DECK_LIST: resp = cmdDeckList(sc.GetExtension(Command_DeckList::ext), rc); break; - case SessionCommand::DECK_NEW_DIR: resp = cmdDeckNewDir(sc.GetExtension(Command_DeckNewDir::ext), rc); break; - case SessionCommand::DECK_DEL_DIR: resp = cmdDeckDelDir(sc.GetExtension(Command_DeckDelDir::ext), rc); break; - case SessionCommand::DECK_DEL: resp = cmdDeckDel(sc.GetExtension(Command_DeckDel::ext), rc); break; - case SessionCommand::DECK_UPLOAD: resp = cmdDeckUpload(sc.GetExtension(Command_DeckUpload::ext), rc); break; - case SessionCommand::DECK_DOWNLOAD: resp = cmdDeckDownload(sc.GetExtension(Command_DeckDownload::ext), rc); break; - case SessionCommand::REPLAY_LIST: resp = cmdReplayList(sc.GetExtension(Command_ReplayList::ext), rc); break; - case SessionCommand::REPLAY_DOWNLOAD: resp = cmdReplayDownload(sc.GetExtension(Command_ReplayDownload::ext), rc); break; - case SessionCommand::REPLAY_MODIFY_MATCH: resp = cmdReplayModifyMatch(sc.GetExtension(Command_ReplayModifyMatch::ext), rc); break; - case SessionCommand::REPLAY_DELETE_MATCH: resp = cmdReplayDeleteMatch(sc.GetExtension(Command_ReplayDeleteMatch::ext), rc); break; case SessionCommand::GET_GAMES_OF_USER: resp = cmdGetGamesOfUser(sc.GetExtension(Command_GetGamesOfUser::ext), rc); break; case SessionCommand::GET_USER_INFO: resp = cmdGetUserInfo(sc.GetExtension(Command_GetUserInfo::ext), rc); break; case SessionCommand::LIST_ROOMS: resp = cmdListRooms(sc.GetExtension(Command_ListRooms::ext), rc); break; case SessionCommand::JOIN_ROOM: resp = cmdJoinRoom(sc.GetExtension(Command_JoinRoom::ext), rc); break; case SessionCommand::LIST_USERS: resp = cmdListUsers(sc.GetExtension(Command_ListUsers::ext), rc); break; + default: resp = processExtendedSessionCommand(num, sc, rc); } if (resp != Response::RespOk) finalResponseCode = resp; @@ -255,9 +227,8 @@ Response::ResponseCode Server_ProtocolHandler::processModeratorCommandContainer( const ModeratorCommand &sc = cont.moderator_command(i); const int num = getPbExtension(sc); emit logDebugMessage(QString::fromStdString(sc.ShortDebugString()), this); - switch ((ModeratorCommand::ModeratorCommandType) num) { - case ModeratorCommand::BAN_FROM_SERVER: resp = cmdBanFromServer(sc.GetExtension(Command_BanFromServer::ext), rc); break; - } + + resp = processExtendedModeratorCommand(num, sc, rc); if (resp != Response::RespOk) finalResponseCode = resp; } @@ -277,10 +248,8 @@ Response::ResponseCode Server_ProtocolHandler::processAdminCommandContainer(cons const AdminCommand &sc = cont.admin_command(i); const int num = getPbExtension(sc); emit logDebugMessage(QString::fromStdString(sc.ShortDebugString()), this); - switch ((AdminCommand::AdminCommandType) num) { - case AdminCommand::SHUTDOWN_SERVER: resp = cmdShutdownServer(sc.GetExtension(Command_ShutdownServer::ext), rc); break; - case AdminCommand::UPDATE_SERVER_MESSAGE: resp = cmdUpdateServerMessage(sc.GetExtension(Command_UpdateServerMessage::ext), rc); break; - } + + resp = processExtendedAdminCommand(num, sc, rc); if (resp != Response::RespOk) finalResponseCode = resp; } diff --git a/common/server_protocolhandler.h b/common/server_protocolhandler.h index 4f7fd8e4..95867a6d 100644 --- a/common/server_protocolhandler.h +++ b/common/server_protocolhandler.h @@ -9,41 +9,28 @@ #include "pb/server_message.pb.h" class Server_Player; -class Server_Card; class ServerInfo_User; class Server_Room; class QTimer; -class DeckList; -class Message; class ServerMessage; - class Response; class SessionEvent; class GameEventContainer; class RoomEvent; -class GameEventStorage; class ResponseContainer; class CommandContainer; +class SessionCommand; +class ModeratorCommand; +class AdminCommand; + class Command_Ping; class Command_Login; class Command_Message; class Command_ListUsers; class Command_GetGamesOfUser; class Command_GetUserInfo; -class Command_AddToList; -class Command_RemoveFromList; -class Command_DeckList; -class Command_DeckNewDir; -class Command_DeckDelDir; -class Command_DeckDel; -class Command_DeckDownload; -class Command_DeckUpload; -class Command_ReplayList; -class Command_ReplayDownload; -class Command_ReplayModifyMatch; -class Command_ReplayDeleteMatch; class Command_ListRooms; class Command_JoinRoom; class Command_LeaveRoom; @@ -51,10 +38,6 @@ class Command_RoomSay; class Command_CreateGame; class Command_JoinGame; -class Command_BanFromServer; -class Command_UpdateServerMessage; -class Command_ShutdownServer; - class Server_ProtocolHandler : public QObject, public Server_AbstractUserInterface { Q_OBJECT protected: @@ -70,22 +53,10 @@ private: QTimer *pingClock; virtual void transmitProtocolItem(const ServerMessage &item) = 0; - + Response::ResponseCode cmdPing(const Command_Ping &cmd, ResponseContainer &rc); Response::ResponseCode cmdLogin(const Command_Login &cmd, ResponseContainer &rc); Response::ResponseCode cmdMessage(const Command_Message &cmd, ResponseContainer &rc); - virtual Response::ResponseCode cmdAddToList(const Command_AddToList &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdRemoveFromList(const Command_RemoveFromList &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdDeckList(const Command_DeckList &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdDeckNewDir(const Command_DeckNewDir &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdDeckDelDir(const Command_DeckDelDir &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdDeckDel(const Command_DeckDel &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdDeckUpload(const Command_DeckUpload &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdDeckDownload(const Command_DeckDownload &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdReplayList(const Command_ReplayList &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdReplayDownload(const Command_ReplayDownload &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdReplayModifyMatch(const Command_ReplayModifyMatch &cmd, ResponseContainer &rc) = 0; - virtual Response::ResponseCode cmdReplayDeleteMatch(const Command_ReplayDeleteMatch &cmd, ResponseContainer &rc) = 0; Response::ResponseCode cmdGetGamesOfUser(const Command_GetGamesOfUser &cmd, ResponseContainer &rc); Response::ResponseCode cmdGetUserInfo(const Command_GetUserInfo &cmd, ResponseContainer &rc); Response::ResponseCode cmdListRooms(const Command_ListRooms &cmd, ResponseContainer &rc); @@ -95,15 +66,15 @@ private: 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 cmdJoinGame(const Command_JoinGame &cmd, Server_Room *room, ResponseContainer &rc); - 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 cmdUpdateServerMessage(const Command_UpdateServerMessage &cmd, ResponseContainer &rc) = 0; Response::ResponseCode processSessionCommandContainer(const CommandContainer &cont, ResponseContainer &rc); + virtual Response::ResponseCode processExtendedSessionCommand(int cmdType, const SessionCommand &cmd, ResponseContainer &rc) { return Response::RespFunctionNotAllowed; } Response::ResponseCode processRoomCommandContainer(const CommandContainer &cont, ResponseContainer &rc); Response::ResponseCode processGameCommandContainer(const CommandContainer &cont, ResponseContainer &rc); Response::ResponseCode processModeratorCommandContainer(const CommandContainer &cont, ResponseContainer &rc); + virtual Response::ResponseCode processExtendedModeratorCommand(int cmdType, const ModeratorCommand &cmd, ResponseContainer &rc) { return Response::RespFunctionNotAllowed; } Response::ResponseCode processAdminCommandContainer(const CommandContainer &cont, ResponseContainer &rc); + virtual Response::ResponseCode processExtendedAdminCommand(int cmdType, const AdminCommand &cmd, ResponseContainer &rc) { return Response::RespFunctionNotAllowed; } private slots: void pingClockTimeout(); signals: diff --git a/servatrice/src/serversocketinterface.cpp b/servatrice/src/serversocketinterface.cpp index 847daa3b..5e94db02 100644 --- a/servatrice/src/serversocketinterface.cpp +++ b/servatrice/src/serversocketinterface.cpp @@ -29,6 +29,7 @@ #include "server_logger.h" #include "server_response_containers.h" #include "pb/commands.pb.h" +#include "pb/command_deck_list.pb.h" #include "pb/command_deck_upload.pb.h" #include "pb/command_deck_download.pb.h" #include "pb/command_deck_new_dir.pb.h" @@ -165,6 +166,42 @@ void ServerSocketInterface::transmitProtocolItem(const ServerMessage &item) emit outputBufferChanged(); } +Response::ResponseCode ServerSocketInterface::processExtendedSessionCommand(int cmdType, const SessionCommand &cmd, ResponseContainer &rc) +{ + switch ((SessionCommand::SessionCommandType) cmdType) { + case SessionCommand::ADD_TO_LIST: return cmdAddToList(cmd.GetExtension(Command_AddToList::ext), rc); + case SessionCommand::REMOVE_FROM_LIST: return cmdRemoveFromList(cmd.GetExtension(Command_RemoveFromList::ext), rc); + case SessionCommand::DECK_LIST: return cmdDeckList(cmd.GetExtension(Command_DeckList::ext), rc); + case SessionCommand::DECK_NEW_DIR: return cmdDeckNewDir(cmd.GetExtension(Command_DeckNewDir::ext), rc); + case SessionCommand::DECK_DEL_DIR: return cmdDeckDelDir(cmd.GetExtension(Command_DeckDelDir::ext), rc); + case SessionCommand::DECK_DEL: return cmdDeckDel(cmd.GetExtension(Command_DeckDel::ext), rc); + case SessionCommand::DECK_UPLOAD: return cmdDeckUpload(cmd.GetExtension(Command_DeckUpload::ext), rc); + case SessionCommand::DECK_DOWNLOAD: return cmdDeckDownload(cmd.GetExtension(Command_DeckDownload::ext), rc); + case SessionCommand::REPLAY_LIST: return cmdReplayList(cmd.GetExtension(Command_ReplayList::ext), rc); + case SessionCommand::REPLAY_DOWNLOAD: return cmdReplayDownload(cmd.GetExtension(Command_ReplayDownload::ext), rc); + case SessionCommand::REPLAY_MODIFY_MATCH: return cmdReplayModifyMatch(cmd.GetExtension(Command_ReplayModifyMatch::ext), rc); + case SessionCommand::REPLAY_DELETE_MATCH: return cmdReplayDeleteMatch(cmd.GetExtension(Command_ReplayDeleteMatch::ext), rc); + default: return Response::RespFunctionNotAllowed; + } +} + +Response::ResponseCode ServerSocketInterface::processExtendedModeratorCommand(int cmdType, const ModeratorCommand &cmd, ResponseContainer &rc) +{ + switch ((ModeratorCommand::ModeratorCommandType) cmdType) { + case ModeratorCommand::BAN_FROM_SERVER: return cmdBanFromServer(cmd.GetExtension(Command_BanFromServer::ext), rc); + default: return Response::RespFunctionNotAllowed; + } +} + +Response::ResponseCode ServerSocketInterface::processExtendedAdminCommand(int cmdType, const AdminCommand &cmd, ResponseContainer &rc) +{ + switch ((AdminCommand::AdminCommandType) cmdType) { + case AdminCommand::SHUTDOWN_SERVER: return cmdShutdownServer(cmd.GetExtension(Command_ShutdownServer::ext), rc); + case AdminCommand::UPDATE_SERVER_MESSAGE: return cmdUpdateServerMessage(cmd.GetExtension(Command_UpdateServerMessage::ext), rc); + default: return Response::RespFunctionNotAllowed; + } +} + Response::ResponseCode ServerSocketInterface::cmdAddToList(const Command_AddToList &cmd, ResponseContainer &rc) { if (authState != PasswordRight) diff --git a/servatrice/src/serversocketinterface.h b/servatrice/src/serversocketinterface.h index 0502c583..40b7e406 100644 --- a/servatrice/src/serversocketinterface.h +++ b/servatrice/src/serversocketinterface.h @@ -30,6 +30,23 @@ class Servatrice; class DeckList; class ServerInfo_DeckStorage_Folder; +class Command_AddToList; +class Command_RemoveFromList; +class Command_DeckList; +class Command_DeckNewDir; +class Command_DeckDelDir; +class Command_DeckDel; +class Command_DeckDownload; +class Command_DeckUpload; +class Command_ReplayList; +class Command_ReplayDownload; +class Command_ReplayModifyMatch; +class Command_ReplayDeleteMatch; + +class Command_BanFromServer; +class Command_UpdateServerMessage; +class Command_ShutdownServer; + class ServerSocketInterface : public Server_ProtocolHandler { Q_OBJECT @@ -68,6 +85,10 @@ private: Response::ResponseCode cmdBanFromServer(const Command_BanFromServer &cmd, ResponseContainer &rc); Response::ResponseCode cmdShutdownServer(const Command_ShutdownServer &cmd, ResponseContainer &rc); Response::ResponseCode cmdUpdateServerMessage(const Command_UpdateServerMessage &cmd, ResponseContainer &rc); + + Response::ResponseCode processExtendedSessionCommand(int cmdType, const SessionCommand &cmd, ResponseContainer &rc); + Response::ResponseCode processExtendedModeratorCommand(int cmdType, const ModeratorCommand &cmd, ResponseContainer &rc); + Response::ResponseCode processExtendedAdminCommand(int cmdType, const AdminCommand &cmd, ResponseContainer &rc); public: ServerSocketInterface(Servatrice *_server, QTcpSocket *_socket, QObject *parent = 0); ~ServerSocketInterface();