Cockatrice 2026-10-19-Development-3.1.2-beta.2
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
isl_interface.h
Go to the documentation of this file.
1#ifndef ISL_INTERFACE_H
2#define ISL_INTERFACE_H
3
4#include <QAbstractSocket>
5#include <QByteArray>
6#include <QMutex>
7#include <QObject>
8#include <QSslCertificate>
9#include <QString>
10
11// IWYU pragma: keep
12// ServerInfo_User and ServerInfo_Game are passed by value to signals, so the
13// moc-generated code needs the complete types.
14#include <QtGlobal>
15#include <libcockatrice/protocol/pb/serverinfo_game.pb.h>
16#include <libcockatrice/protocol/pb/serverinfo_user.pb.h>
17#include <qtmetamacros.h>
18
19class Servatrice;
20class QSslSocket;
21class QSslKey;
22class IslMessage;
25class Event_UserLeft;
26class Event_JoinRoom;
27class Event_LeaveRoom;
28class Event_RoomSay;
30class Event_ListGames;
35class Response;
36class RoomEvent;
37class SessionEvent;
38
39class IslInterface : public QObject
40{
41 Q_OBJECT
42private slots:
43 void readClient();
44 void catchSocketError(QAbstractSocket::SocketError socketError);
45 void flushOutputBuffer();
46signals:
48
50 void externalUserLeft(QString userName);
51 void externalRoomUserJoined(int roomId, ServerInfo_User userInfo);
52 void externalRoomUserLeft(int roomId, QString userName);
53 void externalRoomSay(int roomId, QString userName, QString message, QString channelId);
54 void externalRoomGameListChanged(int roomId, ServerInfo_Game gameInfo);
55 void externalRoomRemoveMessages(int roomId, QString userName, int amount);
56 void joinGameCommandReceived(const Command_JoinGame &cmd, int cmdId, int roomId, int serverId, qint64 sessionId);
57 void gameCommandContainerReceived(const CommandContainer &cont, int playerId, int serverId, qint64 sessionId);
58 void responseReceived(const Response &resp, qint64 sessionId);
59 void gameEventContainerReceived(const GameEventContainer &cont, qint64 sessionId);
60
61private:
66 QSslCertificate peerCert;
67
70 QSslSocket *socket;
71
75
78 void sessionEvent_UserLeft(const Event_UserLeft &event);
79
80 void roomEvent_UserJoined(int roomId, const Event_JoinRoom &event);
81 void roomEvent_UserLeft(int roomId, const Event_LeaveRoom &event);
82 void roomEvent_Say(int roomId, const Event_RoomSay &event);
83 void roomEvent_ChannelSay(int roomId, const Event_RoomChannelSay &event);
84 void roomEvent_ListGames(int roomId, const Event_ListGames &event);
85 void roomEvent_RemoveMessages(int roomId, const Event_RemoveMessages &event);
86
87 void roomCommand_JoinGame(const Command_JoinGame &cmd, int cmdId, int roomId, qint64 sessionId);
88
89 void processSessionEvent(const SessionEvent &event, qint64 sessionId);
90 void processRoomEvent(const RoomEvent &event);
91 void processRoomCommand(const CommandContainer &cont, qint64 sessionId);
92
93 void processMessage(const IslMessage &item);
94 void sharedCtor(const QSslCertificate &cert, const QSslKey &privateKey);
95public slots:
96 void initServer();
97 void initClient();
98
99public:
100 IslInterface(int socketDescriptor, const QSslCertificate &cert, const QSslKey &privateKey, Servatrice *_server);
101 IslInterface(int _serverId,
102 const QString &peerHostName,
103 const QString &peerAddress,
104 int peerPort,
105 const QSslCertificate &peerCert,
106 const QSslCertificate &cert,
107 const QSslKey &privateKey,
108 Servatrice *_server);
110
111 void transmitMessage(const IslMessage &item);
112};
113
114#endif
void roomEvent_ChannelSay(int roomId, const Event_RoomChannelSay &event)
Definition isl_interface.cpp:391
QSslSocket * socket
Definition isl_interface.h:70
void roomEvent_ListGames(int roomId, const Event_ListGames &event)
Definition isl_interface.cpp:397
void roomEvent_UserJoined(int roomId, const Event_JoinRoom &event)
Definition isl_interface.cpp:373
void transmitMessage(const IslMessage &item)
Definition isl_interface.cpp:315
void flushOutputBuffer()
Definition isl_interface.cpp:249
QByteArray inputBuffer
Definition isl_interface.h:72
void roomEvent_RemoveMessages(int roomId, const Event_RemoveMessages &event)
Definition isl_interface.cpp:406
void processSessionEvent(const SessionEvent &event, qint64 sessionId)
Definition isl_interface.cpp:416
void processRoomEvent(const RoomEvent &event)
Definition isl_interface.cpp:458
void externalRoomRemoveMessages(int roomId, QString userName, int amount)
void readClient()
Definition isl_interface.cpp:261
void roomCommand_JoinGame(const Command_JoinGame &cmd, int cmdId, int roomId, qint64 sessionId)
Definition isl_interface.cpp:411
void externalRoomUserLeft(int roomId, QString userName)
int socketDescriptor
Definition isl_interface.h:63
void sharedCtor(const QSslCertificate &cert, const QSslKey &privateKey)
Definition isl_interface.cpp:55
QString peerHostName
Definition isl_interface.h:64
int peerPort
Definition isl_interface.h:65
bool messageInProgress
Definition isl_interface.h:73
int messageLength
Definition isl_interface.h:74
QMutex outputBufferMutex
Definition isl_interface.h:68
void externalUserJoined(ServerInfo_User userInfo)
void sessionEvent_UserLeft(const Event_UserLeft &event)
Definition isl_interface.cpp:368
Servatrice * server
Definition isl_interface.h:69
void roomEvent_Say(int roomId, const Event_RoomSay &event)
Definition isl_interface.cpp:385
void initServer()
Definition isl_interface.cpp:126
void responseReceived(const Response &resp, qint64 sessionId)
void roomEvent_UserLeft(int roomId, const Event_LeaveRoom &event)
Definition isl_interface.cpp:380
QByteArray outputBuffer
Definition isl_interface.h:72
void gameCommandContainerReceived(const CommandContainer &cont, int playerId, int serverId, qint64 sessionId)
QSslCertificate peerCert
Definition isl_interface.h:66
void initClient()
Definition isl_interface.cpp:213
void catchSocketError(QAbstractSocket::SocketError socketError)
Definition isl_interface.cpp:304
IslInterface(int socketDescriptor, const QSslCertificate &cert, const QSslKey &privateKey, Servatrice *_server)
Definition isl_interface.cpp:67
void outputBufferChanged()
void externalRoomSay(int roomId, QString userName, QString message, QString channelId)
void gameEventContainerReceived(const GameEventContainer &cont, qint64 sessionId)
void sessionEvent_ServerCompleteList(const Event_ServerCompleteList &event)
Definition isl_interface.cpp:339
void processMessage(const IslMessage &item)
Definition isl_interface.cpp:496
QString peerAddress
Definition isl_interface.h:64
int serverId
Definition isl_interface.h:62
void joinGameCommandReceived(const Command_JoinGame &cmd, int cmdId, int roomId, int serverId, qint64 sessionId)
void externalRoomGameListChanged(int roomId, ServerInfo_Game gameInfo)
void externalUserLeft(QString userName)
void processRoomCommand(const CommandContainer &cont, qint64 sessionId)
Definition isl_interface.cpp:483
void sessionEvent_UserJoined(const Event_UserJoined &event)
Definition isl_interface.cpp:361
void externalRoomUserJoined(int roomId, ServerInfo_User userInfo)
Definition servatrice.h:149
Definition commands.proto:8
Definition room_commands.proto:79
Definition event_join_room.proto:4
Definition event_leave_room.proto:3
Definition event_list_games.proto:4
Definition event_remove_messages.proto:3
Definition event_room_channel_say.proto:3
Definition event_room_say.proto:3
Definition event_server_complete_list.proto:5
Definition event_user_joined.proto:4
Definition event_user_left.proto:3
Definition game_event_container.proto:4
Definition isl_message.proto:7
Definition response.proto:11
Definition room_event.proto:2
Definition serverinfo_game.proto:5
Definition serverinfo_user.proto:2
Definition session_event.proto:2