7#ifndef ABSTRACTCLIENT_H
8#define ABSTRACTCLIENT_H
12#include <QElapsedTimer>
13#include <QLoggingCategory>
16#include <QMutexLocker>
24#include <libcockatrice/protocol/pb/serverinfo_user.pb.h>
25#include <qtmetamacros.h>
34template <
typename T>
class QList;
ClientStatus
Definition abstract_client.h:58
@ StatusLoggingIn
Definition abstract_client.h:64
@ StatusLoggedIn
Definition abstract_client.h:65
@ StatusActivating
Definition abstract_client.h:63
@ StatusRequestingForgotPassword
Definition abstract_client.h:66
@ StatusConnecting
Definition abstract_client.h:61
@ StatusDisconnecting
Definition abstract_client.h:60
@ StatusDisconnected
Definition abstract_client.h:59
@ StatusSubmitForgotPasswordReset
Definition abstract_client.h:67
@ StatusSubmitForgotPasswordChallenge
Definition abstract_client.h:68
@ StatusGettingPasswordSalt
Definition abstract_client.h:69
@ StatusRegistering
Definition abstract_client.h:62
void roomEventReceived(const RoomEvent &event)
void userMessageEventReceived(const Event_UserMessage &event)
static PendingCommand * prepareAdminCommand(const ::google::protobuf::Message &cmd)
Definition abstract_client.cpp:269
void addToListEventReceived(const Event_AddToList &event)
QString email
Definition abstract_client.h:134
void clearLatencyStats()
Drops all recorded round-trip samples and resets the stats emission throttle, emitting zeroed stats s...
Definition abstract_client.cpp:237
void removeFromListEventReceived(const Event_RemoveFromList &event)
void gameEventContainerReceived(const GameEventContainer &event)
void serverMessageEventReceived(const Event_ServerMessage &event)
void gameJoinedEventReceived(const Event_GameJoined &event)
bool getServerSupportsChallengeResponse() const
Definition abstract_client.h:170
void notifyUserEventReceived(const Event_NotifyUser &event)
QMap< QString, bool > clientFeatures
Definition abstract_client.h:199
bool getServerSupportsPasswordHash() const
Definition abstract_client.h:166
void ignoreListReceived(const QList< ServerInfo_User > &ignoreList)
void processProtocolItem(const ServerMessage &item)
Definition abstract_client.cpp:83
bool serverSupportsPasswordHash
Definition abstract_client.h:135
QString userName
Definition abstract_client.h:134
QString realName
Definition abstract_client.h:134
LatencyTracker latencyTracker
Definition abstract_client.h:122
void sendCommand(const CommandContainer &cont)
Definition abstract_client.cpp:169
virtual QString serverName() const
Returns the server address configured for the current connection.
Definition abstract_client.h:184
void buddyListReceived(const QList< ServerInfo_User > &buddyList)
void serverIdentificationEventReceived(const Event_ServerIdentification &event)
int nextCmdId
Definition abstract_client.h:119
QString token
Definition abstract_client.h:134
void connectionClosedEventReceived(const Event_ConnectionClosed &event)
int getNewCmdId()
Definition abstract_client.h:138
void maxPingTime(int seconds, int maxSeconds)
static PendingCommand * prepareModeratorCommand(const ::google::protobuf::Message &cmd)
Definition abstract_client.cpp:261
QMutex clientMutex
Definition abstract_client.h:120
QString country
Definition abstract_client.h:134
void replayAddedEventReceived(const Event_ReplayAdded &event)
void listRoomsEventReceived(const Event_ListRooms &event)
void statusChanged(ClientStatus _status)
void userInfoChanged(const ServerInfo_User &userInfo)
void setStatus(ClientStatus _status)
Definition abstract_client.cpp:160
void pingStatsUpdated(const LatencyTracker::Stats &stats, const QList< int > &samplesMs)
Aggregated round-trip statistics and a chronological snapshot of the rolling window,...
AbstractClient(QObject *parent=nullptr)
Definition abstract_client.cpp:43
bool serverSupportsChallengeResponse
Definition abstract_client.h:136
void sigQueuePendingCommand(PendingCommand *pend)
static PendingCommand * prepareDeveloperCommand(const ::google::protobuf::Message &cmd)
Definition abstract_client.cpp:277
QString password
Definition abstract_client.h:134
bool statsEmitClockStarted
Definition abstract_client.h:124
ClientStatus getStatus() const
Definition abstract_client.h:148
QElapsedTimer statsEmitClock
Definition abstract_client.h:123
const QString & getUserName() const
Definition abstract_client.h:174
QMap< int, PendingCommand * > pendingCommands
Definition abstract_client.h:133
virtual void sendCommandContainer(const CommandContainer &cont)=0
virtual quint16 serverPort() const
Definition abstract_client.h:188
ClientStatus status
Definition abstract_client.h:121
void serverShutdownEventReceived(const Event_ServerShutdown &event)
void registerAcceptedNeedsActivate()
void queuePendingCommand(PendingCommand *pend)
Definition abstract_client.cpp:180
void userJoinedEventReceived(const Event_UserJoined &event)
static PendingCommand * prepareRoomCommand(const ::google::protobuf::Message &cmd, int roomId)
Definition abstract_client.cpp:252
void recordLatency(PendingCommand &pend)
Definition abstract_client.cpp:200
void userLeftEventReceived(const Event_UserLeft &event)
static PendingCommand * prepareSessionCommand(const ::google::protobuf::Message &cmd)
Definition abstract_client.cpp:244
Fixed-capacity rolling window of network round-trip time samples.
Definition latency_tracker.h:24
Definition pending_command.h:20
Definition remote_connection_controller.h:20
Q_LOGGING_CATEGORY(CrashReportLog, "crash_report")
Definition game_event_handler.h:57
Definition game_event_handler.h:55
Definition commands.proto:8
Definition event_add_to_list.proto:4
Definition event_connection_closed.proto:3
Definition event_game_joined.proto:5
Definition event_list_rooms.proto:4
Definition event_notify_user.proto:3
Definition event_remove_from_list.proto:3
Definition event_replay_added.proto:4
Definition event_server_identification.proto:3
Definition event_server_message.proto:3
Definition event_server_shutdown.proto:3
Definition event_user_joined.proto:4
Definition event_user_left.proto:3
Definition event_user_message.proto:3
Definition game_event_container.proto:4
Definition latency_tracker.h:29
Definition room_event.proto:2
Definition serverinfo_user.proto:2
Definition server_message.proto:6