Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
server_protocolhandler.h
Go to the documentation of this file.
1#ifndef SERVER_PROTOCOLHANDLER_H
2#define SERVER_PROTOCOLHANDLER_H
3
4#include "server.h"
6
7#include <QObject>
8#include <libcockatrice/protocol/pb/response.pb.h>
9#include <libcockatrice/protocol/pb/server_message.pb.h>
10
11class Features;
13class Server_Player;
14class ServerInfo_User;
15class Server_Room;
16class QTimer;
17class FeatureSet;
18
19class ServerMessage;
20class Response;
21class SessionEvent;
22class GameEventContainer;
23class RoomEvent;
25
26class CommandContainer;
27class SessionCommand;
28class ModeratorCommand;
29class AdminCommand;
30
31class Command_Ping;
32class Command_Login;
33class Command_Register;
34class Command_Message;
35class Command_ListUsers;
36class Command_GetGamesOfUser;
37class Command_GetUserInfo;
38class Command_ListRooms;
39class Command_JoinRoom;
40class Command_LeaveRoom;
41class Command_RoomSay;
42class Command_CreateGame;
43class Command_JoinGame;
44
46{
47 Q_OBJECT
48protected:
49 QMap<int, Server_Room *> rooms;
50
51 bool deleted;
58 virtual void logDebugMessage(const QString & /* message */)
59 {
60 }
61
62private:
65
66 virtual void transmitProtocolItem(const ServerMessage &item) = 0;
67
68 Response::ResponseCode cmdPing(const Command_Ping &cmd, ResponseContainer &rc);
69 Response::ResponseCode cmdLogin(const Command_Login &cmd, ResponseContainer &rc);
70 Response::ResponseCode cmdMessage(const Command_Message &cmd, ResponseContainer &rc);
71 Response::ResponseCode cmdGetGamesOfUser(const Command_GetGamesOfUser &cmd, ResponseContainer &rc);
72 Response::ResponseCode cmdGetUserInfo(const Command_GetUserInfo &cmd, ResponseContainer &rc);
73 Response::ResponseCode cmdListRooms(const Command_ListRooms &cmd, ResponseContainer &rc);
74 Response::ResponseCode cmdJoinRoom(const Command_JoinRoom &cmd, ResponseContainer &rc);
75 Response::ResponseCode cmdListUsers(const Command_ListUsers &cmd, ResponseContainer &rc);
76 Response::ResponseCode cmdLeaveRoom(const Command_LeaveRoom &cmd, Server_Room *room, ResponseContainer &rc);
77 Response::ResponseCode cmdRoomSay(const Command_RoomSay &cmd, Server_Room *room, ResponseContainer &rc);
78 Response::ResponseCode cmdCreateGame(const Command_CreateGame &cmd, Server_Room *room, ResponseContainer &rc);
79 Response::ResponseCode cmdJoinGame(const Command_JoinGame &cmd, Server_Room *room, ResponseContainer &rc);
80
81 Response::ResponseCode processSessionCommandContainer(const CommandContainer &cont, ResponseContainer &rc);
82 virtual Response::ResponseCode
83 processExtendedSessionCommand(int /* cmdType */, const SessionCommand & /* cmd */, ResponseContainer & /* rc */)
84 {
85 return Response::RespFunctionNotAllowed;
86 }
87 Response::ResponseCode processRoomCommandContainer(const CommandContainer &cont, ResponseContainer &rc);
88 Response::ResponseCode processGameCommandContainer(const CommandContainer &cont, ResponseContainer &rc);
89 Response::ResponseCode processModeratorCommandContainer(const CommandContainer &cont, ResponseContainer &rc);
90 virtual Response::ResponseCode
91 processExtendedModeratorCommand(int /* cmdType */, const ModeratorCommand & /* cmd */, ResponseContainer & /* rc */)
92 {
93 return Response::RespFunctionNotAllowed;
94 }
95 Response::ResponseCode processAdminCommandContainer(const CommandContainer &cont, ResponseContainer &rc);
96 virtual Response::ResponseCode
97 processExtendedAdminCommand(int /* cmdType */, const AdminCommand & /* cmd */, ResponseContainer & /* rc */)
98 {
99 return Response::RespFunctionNotAllowed;
100 }
101
102 void resetIdleTimer();
103private slots:
104 void pingClockTimeout();
105public slots:
106 void prepareDestroy();
107
108public:
109 Server_ProtocolHandler(Server *_server, Server_DatabaseInterface *_databaseInterface, QObject *parent = 0);
111
113 {
115 }
117 {
119 }
120 virtual QString getAddress() const = 0;
121 virtual QString getConnectionType() const = 0;
126
128 {
130 }
131 bool addSaidMessageSize(int size);
132 void processCommandContainer(const CommandContainer &cont);
133
134 void sendProtocolItem(const Response &item);
135 void sendProtocolItem(const SessionEvent &item);
136 void sendProtocolItem(const GameEventContainer &item);
137 void sendProtocolItem(const RoomEvent &item);
138};
139
140#endif
Definition featureset.h:9
Definition server_response_containers.h:89
Server_AbstractUserInterface(Server *_server)
Definition server_abstractuserinterface.h:28
Definition server_database_interface.h:9
Definition server_player.h:7
void sendProtocolItem(const Response &item)
Definition server_protocolhandler.cpp:95
bool acceptsRoomListChanges
Definition server_protocolhandler.h:56
Response::ResponseCode processRoomCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:176
void prepareDestroy()
Definition server_protocolhandler.cpp:49
Response::ResponseCode cmdGetUserInfo(const Command_GetUserInfo &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:637
virtual QString getConnectionType() const =0
Response::ResponseCode cmdCreateGame(const Command_CreateGame &cmd, Server_Room *room, ResponseContainer &rc)
Definition server_protocolhandler.cpp:800
void resetIdleTimer()
Definition server_protocolhandler.cpp:861
Response::ResponseCode cmdLeaveRoom(const Command_LeaveRoom &cmd, Server_Room *room, ResponseContainer &rc)
Definition server_protocolhandler.cpp:745
bool getAcceptsRoomListChanges() const
Definition server_protocolhandler.h:116
virtual Response::ResponseCode processExtendedAdminCommand(int, const AdminCommand &, ResponseContainer &)
Definition server_protocolhandler.h:97
int getLastCommandTime() const
Definition server_protocolhandler.h:127
Response::ResponseCode cmdMessage(const Command_Message &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:563
QList< int > messageCountOverTime
Definition server_protocolhandler.h:63
virtual void logDebugMessage(const QString &)
Definition server_protocolhandler.h:58
Response::ResponseCode cmdJoinRoom(const Command_JoinRoom &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:678
Response::ResponseCode cmdListUsers(const Command_ListUsers &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:723
Response::ResponseCode processGameCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:215
void processCommandContainer(const CommandContainer &cont)
Definition server_protocolhandler.cpp:350
virtual void transmitProtocolItem(const ServerMessage &item)=0
virtual Response::ResponseCode processExtendedSessionCommand(int, const SessionCommand &, ResponseContainer &)
Definition server_protocolhandler.h:83
Response::ResponseCode processSessionCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:131
Response::ResponseCode cmdListRooms(const Command_ListRooms &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:663
QMap< int, Server_Room * > rooms
Definition server_protocolhandler.h:49
Response::ResponseCode cmdGetGamesOfUser(const Command_GetGamesOfUser &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:599
Server_DatabaseInterface * databaseInterface
Definition server_protocolhandler.h:52
Response::ResponseCode cmdJoinGame(const Command_JoinGame &cmd, Server_Room *room, ResponseContainer &rc)
Definition server_protocolhandler.cpp:853
Response::ResponseCode cmdLogin(const Command_Login &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:439
virtual QString getAddress() const =0
void pingClockTimeout()
Definition server_protocolhandler.cpp:378
AuthenticationResult authState
Definition server_protocolhandler.h:53
QList< int > commandCountOverTime
Definition server_protocolhandler.h:63
int lastActionReceived
Definition server_protocolhandler.h:64
bool usingRealPassword
Definition server_protocolhandler.h:54
int timeRunning
Definition server_protocolhandler.h:64
Response::ResponseCode cmdRoomSay(const Command_RoomSay &cmd, Server_Room *room, ResponseContainer &rc)
Definition server_protocolhandler.cpp:781
bool getAcceptsUserListChanges() const
Definition server_protocolhandler.h:112
bool deleted
Definition server_protocolhandler.h:51
bool idleClientWarningSent
Definition server_protocolhandler.h:57
Server_ProtocolHandler(Server *_server, Server_DatabaseInterface *_databaseInterface, QObject *parent=0)
Definition server_protocolhandler.cpp:31
Response::ResponseCode cmdPing(const Command_Ping &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:434
Response::ResponseCode processModeratorCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:302
Response::ResponseCode processAdminCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:326
virtual Response::ResponseCode processExtendedModeratorCommand(int, const ModeratorCommand &, ResponseContainer &)
Definition server_protocolhandler.h:91
QList< int > messageSizeOverTime
Definition server_protocolhandler.h:63
int lastDataReceived
Definition server_protocolhandler.h:64
Server_DatabaseInterface * getDatabaseInterface() const
Definition server_protocolhandler.h:122
~Server_ProtocolHandler()
Definition server_protocolhandler.cpp:42
bool addSaidMessageSize(int size)
Definition server_protocolhandler.cpp:752
bool acceptsUserListChanges
Definition server_protocolhandler.h:55
Definition server_room.h:27
Definition server.h:45
AuthenticationResult
Definition server.h:32