Cockatrice 2026-10-19-Development-3.1.2-beta.2
A 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 <QByteArray>
8#include <QDateTime>
9#include <QList>
10#include <QMap>
11#include <QObject>
12#include <QString>
13#include <libcockatrice/protocol/pb/response.pb.h>
14#include <qtmetamacros.h>
15
17class Server_Room;
18class ServerMessage;
21class SessionCommand;
23class AdminCommand;
25class Command_Ping;
26class Command_Login;
27class Command_Message;
34class Command_RoomSay;
38
40{
41 Q_OBJECT
42protected:
44
45 bool deleted;
52 QByteArray authNonce;
55 virtual void logDebugMessage(const QString & /* message */)
56 {
57 }
58
59private:
62
63 virtual void transmitProtocolItem(const ServerMessage &item) = 0;
64
79
82 processExtendedSessionCommand(int /* cmdType */, const SessionCommand & /* cmd */, ResponseContainer & /* rc */)
83 {
85 }
90 processExtendedModeratorCommand(int /* cmdType */, const ModeratorCommand & /* cmd */, ResponseContainer & /* rc */)
91 {
93 }
96 processExtendedAdminCommand(int /* cmdType */, const AdminCommand & /* cmd */, ResponseContainer & /* rc */)
97 {
99 }
102 processExtendedDeveloperCommand(int /* cmdType */, const DeveloperCommand & /* cmd */, ResponseContainer & /* rc */)
103 {
105 }
106
107 void resetIdleTimer();
108private slots:
109 void pingClockTimeout();
110public slots:
111 void prepareDestroy();
112
113public:
114 Server_ProtocolHandler(Server *_server, Server_DatabaseInterface *_databaseInterface, QObject *parent = 0);
116
118 {
120 }
122 {
124 }
125 virtual QString getAddress() const = 0;
126 virtual QString getConnectionType() const = 0;
131
133 void setAuthNonce(const QByteArray &nonce, const QString &userName);
135 bool isAuthNonceValid(const QByteArray &nonce, const QString &userName) const;
137 void clearAuthNonce();
138
140 {
142 }
143 bool addSaidMessageSize(int size);
144 virtual void processCommandContainer(const CommandContainer &cont);
145
146 void sendProtocolItem(const Response &item);
147 void sendProtocolItem(const SessionEvent &item);
148 void sendProtocolItem(const GameEventContainer &item);
149 void sendProtocolItem(const RoomEvent &item);
150};
151
152#endif
Definition remote_connection_controller.h:20
Definition game.h:18
Definition server_response_containers.h:93
Server_AbstractUserInterface(Server *_server)
Definition server_abstractuserinterface.h:36
Definition server_database_interface.h:22
Definition server_protocolhandler.h:40
void sendProtocolItem(const Response &item)
Definition server_protocolhandler.cpp:151
bool acceptsRoomListChanges
Definition server_protocolhandler.h:50
Response::ResponseCode processRoomCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:254
void prepareDestroy()
Definition server_protocolhandler.cpp:103
Response::ResponseCode cmdGetUserInfo(const Command_GetUserInfo &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:824
virtual QString getConnectionType() const =0
QByteArray authNonce
Definition server_protocolhandler.h:52
Response::ResponseCode cmdCreateGame(const Command_CreateGame &cmd, Server_Room *room, ResponseContainer &rc)
Definition server_protocolhandler.cpp:1053
void resetIdleTimer()
Definition server_protocolhandler.cpp:1129
Response::ResponseCode cmdLeaveRoom(const Command_LeaveRoom &cmd, Server_Room *room, ResponseContainer &rc)
Definition server_protocolhandler.cpp:968
bool getAcceptsRoomListChanges() const
Definition server_protocolhandler.h:121
virtual Response::ResponseCode processExtendedAdminCommand(int, const AdminCommand &, ResponseContainer &)
Definition server_protocolhandler.h:96
int getLastCommandTime() const
Definition server_protocolhandler.h:139
Response::ResponseCode cmdMessage(const Command_Message &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:747
QString authNonceUser
Definition server_protocolhandler.h:53
QList< int > messageCountOverTime
Definition server_protocolhandler.h:60
virtual void logDebugMessage(const QString &)
Definition server_protocolhandler.h:55
Response::ResponseCode cmdJoinRoom(const Command_JoinRoom &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:877
Response::ResponseCode cmdListUsers(const Command_ListUsers &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:943
Response::ResponseCode cmdRoomChannelSay(const Command_RoomChannelSay &cmd, Server_Room *room, ResponseContainer &rc)
Definition server_protocolhandler.cpp:1022
Response::ResponseCode processGameCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:299
virtual void processCommandContainer(const CommandContainer &cont)
Definition server_protocolhandler.cpp:474
virtual void transmitProtocolItem(const ServerMessage &item)=0
virtual Response::ResponseCode processExtendedSessionCommand(int, const SessionCommand &, ResponseContainer &)
Definition server_protocolhandler.h:82
Response::ResponseCode processSessionCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:187
Response::ResponseCode cmdListRooms(const Command_ListRooms &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:860
QMap< int, Server_Room * > rooms
Definition server_protocolhandler.h:43
Response::ResponseCode cmdGetGamesOfUser(const Command_GetGamesOfUser &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:784
void clearAuthNonce()
Invalidate the pending nonce (single-use).
Definition server_protocolhandler.cpp:94
void setAuthNonce(const QByteArray &nonce, const QString &userName)
Store a fresh challenge nonce bound to userName for the next challenge-response login attempt.
Definition server_protocolhandler.cpp:78
QDateTime authNonceCreated
Definition server_protocolhandler.h:54
Server_DatabaseInterface * databaseInterface
Definition server_protocolhandler.h:46
Response::ResponseCode cmdJoinGame(const Command_JoinGame &cmd, Server_Room *room, ResponseContainer &rc)
Definition server_protocolhandler.cpp:1120
Response::ResponseCode cmdLogin(const Command_Login &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:573
virtual QString getAddress() const =0
void pingClockTimeout()
Definition server_protocolhandler.cpp:507
AuthenticationResult authState
Definition server_protocolhandler.h:47
QList< int > commandCountOverTime
Definition server_protocolhandler.h:60
int lastActionReceived
Definition server_protocolhandler.h:61
bool usingRealPassword
Definition server_protocolhandler.h:48
int timeRunning
Definition server_protocolhandler.h:61
Response::ResponseCode cmdRoomSay(const Command_RoomSay &cmd, Server_Room *room, ResponseContainer &rc)
Definition server_protocolhandler.cpp:1004
Response::ResponseCode processDeveloperCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:447
bool getAcceptsUserListChanges() const
Definition server_protocolhandler.h:117
bool deleted
Definition server_protocolhandler.h:45
bool idleClientWarningSent
Definition server_protocolhandler.h:51
Server_ProtocolHandler(Server *_server, Server_DatabaseInterface *_databaseInterface, QObject *parent=0)
Definition server_protocolhandler.cpp:63
Response::ResponseCode cmdPing(const Command_Ping &cmd, ResponseContainer &rc)
Definition server_protocolhandler.cpp:568
Response::ResponseCode processModeratorCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:393
virtual Response::ResponseCode processExtendedDeveloperCommand(int, const DeveloperCommand &, ResponseContainer &)
Definition server_protocolhandler.h:102
Response::ResponseCode processAdminCommandContainer(const CommandContainer &cont, ResponseContainer &rc)
Definition server_protocolhandler.cpp:420
virtual Response::ResponseCode processExtendedModeratorCommand(int, const ModeratorCommand &, ResponseContainer &)
Definition server_protocolhandler.h:90
bool isAuthNonceValid(const QByteArray &nonce, const QString &userName) const
True if nonce matches the pending one, was issued for userName, and is less than 60 seconds old.
Definition server_protocolhandler.cpp:85
QList< int > messageSizeOverTime
Definition server_protocolhandler.h:60
int lastDataReceived
Definition server_protocolhandler.h:61
Server_DatabaseInterface * getDatabaseInterface() const
Definition server_protocolhandler.h:127
bool addSaidMessageSize(int size)
Definition server_protocolhandler.cpp:975
bool acceptsUserListChanges
Definition server_protocolhandler.h:49
Definition server_room.h:35
Definition server.h:48
AuthenticationResult
Definition server.h:34
Definition admin_commands.proto:2
Definition commands.proto:8
Definition room_commands.proto:32
Definition session_commands.proto:82
Definition session_commands.proto:88
Definition room_commands.proto:79
Definition session_commands.proto:113
Definition room_commands.proto:12
Definition session_commands.proto:108
Definition session_commands.proto:77
Definition session_commands.proto:59
Definition session_commands.proto:70
Definition session_commands.proto:54
Definition room_commands.proto:23
Definition room_commands.proto:17
Definition developer_commands.proto:2
Definition game_event_container.proto:4
Definition moderator_commands.proto:3
Definition response.proto:11
ResponseCode
Definition response.proto:14
@ RespFunctionNotAllowed
Client tried to perform a restricted action.
Definition response.proto:24
Definition room_event.proto:2
Definition server_message.proto:6
Definition session_commands.proto:2
Definition session_event.proto:2