Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform 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 "servatrice.h"
5
6#include <QSslCertificate>
7#include <QWaitCondition>
8#include <libcockatrice/protocol/pb/serverinfo_game.pb.h>
9#include <libcockatrice/protocol/pb/serverinfo_room.pb.h>
10#include <libcockatrice/protocol/pb/serverinfo_user.pb.h>
11
12class Servatrice;
13class QSslSocket;
14class QSslKey;
15class IslMessage;
16
17class Event_ServerCompleteList;
18class Event_UserMessage;
19class Event_UserJoined;
20class Event_UserLeft;
21class Event_JoinRoom;
22class Event_LeaveRoom;
23class Event_RoomSay;
24class Event_ListGames;
25class Event_RemoveMessages;
26class Command_JoinGame;
27
28class IslInterface : public QObject
29{
30 Q_OBJECT
31private slots:
32 void readClient();
33 void catchSocketError(QAbstractSocket::SocketError socketError);
34 void flushOutputBuffer();
35signals:
37
38 void externalUserJoined(ServerInfo_User userInfo);
39 void externalUserLeft(QString userName);
40 void externalRoomUserJoined(int roomId, ServerInfo_User userInfo);
41 void externalRoomUserLeft(int roomId, QString userName);
42 void externalRoomSay(int roomId, QString userName, QString message);
43 void externalRoomGameListChanged(int roomId, ServerInfo_Game gameInfo);
44 void externalRoomRemoveMessages(int roomId, QString userName, int amount);
45 void joinGameCommandReceived(const Command_JoinGame &cmd, int cmdId, int roomId, int serverId, qint64 sessionId);
46 void gameCommandContainerReceived(const CommandContainer &cont, int playerId, int serverId, qint64 sessionId);
47 void responseReceived(const Response &resp, qint64 sessionId);
48 void gameEventContainerReceived(const GameEventContainer &cont, qint64 sessionId);
49
50private:
55 QSslCertificate peerCert;
56
59 QSslSocket *socket;
60
64
65 void sessionEvent_ServerCompleteList(const Event_ServerCompleteList &event);
66 void sessionEvent_UserJoined(const Event_UserJoined &event);
67 void sessionEvent_UserLeft(const Event_UserLeft &event);
68
69 void roomEvent_UserJoined(int roomId, const Event_JoinRoom &event);
70 void roomEvent_UserLeft(int roomId, const Event_LeaveRoom &event);
71 void roomEvent_Say(int roomId, const Event_RoomSay &event);
72 void roomEvent_ListGames(int roomId, const Event_ListGames &event);
73 void roomEvent_RemoveMessages(int roomId, const Event_RemoveMessages &event);
74
75 void roomCommand_JoinGame(const Command_JoinGame &cmd, int cmdId, int roomId, qint64 sessionId);
76
77 void processSessionEvent(const SessionEvent &event, qint64 sessionId);
78 void processRoomEvent(const RoomEvent &event);
79 void processRoomCommand(const CommandContainer &cont, qint64 sessionId);
80
81 void processMessage(const IslMessage &item);
82 void sharedCtor(const QSslCertificate &cert, const QSslKey &privateKey);
83public slots:
84 void initServer();
85 void initClient();
86
87public:
88 IslInterface(int socketDescriptor, const QSslCertificate &cert, const QSslKey &privateKey, Servatrice *_server);
89 IslInterface(int _serverId,
90 const QString &peerHostName,
91 const QString &peerAddress,
92 int peerPort,
93 const QSslCertificate &peerCert,
94 const QSslCertificate &cert,
95 const QSslKey &privateKey,
96 Servatrice *_server);
98
99 void transmitMessage(const IslMessage &item);
100};
101
102#endif
QSslSocket * socket
Definition isl_interface.h:59
void roomEvent_ListGames(int roomId, const Event_ListGames &event)
Definition isl_interface.cpp:344
void roomEvent_UserJoined(int roomId, const Event_JoinRoom &event)
Definition isl_interface.cpp:327
~IslInterface()
Definition isl_interface.cpp:59
void transmitMessage(const IslMessage &item)
Definition isl_interface.cpp:272
void flushOutputBuffer()
Definition isl_interface.cpp:220
QByteArray inputBuffer
Definition isl_interface.h:61
void roomEvent_RemoveMessages(int roomId, const Event_RemoveMessages &event)
Definition isl_interface.cpp:353
void processSessionEvent(const SessionEvent &event, qint64 sessionId)
Definition isl_interface.cpp:363
void processRoomEvent(const RoomEvent &event)
Definition isl_interface.cpp:404
void externalRoomRemoveMessages(int roomId, QString userName, int amount)
void readClient()
Definition isl_interface.cpp:231
void roomCommand_JoinGame(const Command_JoinGame &cmd, int cmdId, int roomId, qint64 sessionId)
Definition isl_interface.cpp:358
void externalRoomUserLeft(int roomId, QString userName)
int socketDescriptor
Definition isl_interface.h:52
void sharedCtor(const QSslCertificate &cert, const QSslKey &privateKey)
Definition isl_interface.cpp:24
QString peerHostName
Definition isl_interface.h:53
int peerPort
Definition isl_interface.h:54
bool messageInProgress
Definition isl_interface.h:62
int messageLength
Definition isl_interface.h:63
void externalRoomSay(int roomId, QString userName, QString message)
QMutex outputBufferMutex
Definition isl_interface.h:57
void externalUserJoined(ServerInfo_User userInfo)
void sessionEvent_UserLeft(const Event_UserLeft &event)
Definition isl_interface.cpp:322
Servatrice * server
Definition isl_interface.h:58
void roomEvent_Say(int roomId, const Event_RoomSay &event)
Definition isl_interface.cpp:339
void initServer()
Definition isl_interface.cpp:93
void responseReceived(const Response &resp, qint64 sessionId)
void roomEvent_UserLeft(int roomId, const Event_LeaveRoom &event)
Definition isl_interface.cpp:334
QByteArray outputBuffer
Definition isl_interface.h:61
void gameCommandContainerReceived(const CommandContainer &cont, int playerId, int serverId, qint64 sessionId)
QSslCertificate peerCert
Definition isl_interface.h:55
void initClient()
Definition isl_interface.cpp:181
void catchSocketError(QAbstractSocket::SocketError socketError)
Definition isl_interface.cpp:261
IslInterface(int socketDescriptor, const QSslCertificate &cert, const QSslKey &privateKey, Servatrice *_server)
Definition isl_interface.cpp:36
void outputBufferChanged()
void gameEventContainerReceived(const GameEventContainer &cont, qint64 sessionId)
void sessionEvent_ServerCompleteList(const Event_ServerCompleteList &event)
Definition isl_interface.cpp:293
void processMessage(const IslMessage &item)
Definition isl_interface.cpp:439
QString peerAddress
Definition isl_interface.h:53
int serverId
Definition isl_interface.h:51
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:426
void sessionEvent_UserJoined(const Event_UserJoined &event)
Definition isl_interface.cpp:315
void externalRoomUserJoined(int roomId, ServerInfo_User userInfo)
Definition servatrice.h:131