25 std::string address) ->
bool override;
26 void close()
override;
30 void Login(std::string user, std::string pass)
override;
31 void Logout()
override;
33 void SendChat(
const std::string& message,
37 void CreateNewRoom(std::string name,
39 std::string password)
override;
40 void EnterRoom(std::string name, std::string password)
override;
42 bool InRoom()
const {
return inRoom; }
43 std::string GetRoomName() {
return roomName; }
44 bool CreatingRoom()
const {
return creatingRoom; }
50 void OnMusicSelect()
override;
52 void OnOptions()
override;
53 void OffOptions()
override;
55 void OnEval()
override;
56 void OffEval()
override;
58 void SendMPLeaderboardUpdate(
float wife, std::string& jdgstr)
override;
70 int tapNoteSubType)
override;
77 int tapNoteSubType)
override;
83 int subType)
override;
85 void ReportV2Data(
int col,
int row,
float offset,
int tapNoteType)
override;
89 void Send(
const std::string& str);
92 std::mutex sendBufferMutex;
93 std::mutex messageBufferMutex;
97 std::unique_ptr<std::thread> receivingThread;
98 std::unique_ptr<std::thread> sendingThread;
100 std::atomic_bool stopPolling =
false;
101 std::atomic_bool stopSending =
false;
102 void LaunchPollingThread();
103 void LaunchSendingThread();
109 std::string roomName;
110 std::string roomDesc;
111 bool creatingRoom{
false };
112 bool inRoom{
false };
115 bool waitingForTimeout{
false };
116 clock_t timeoutStart = 0;
118 std::function<void(
void)> onTimeout;
121 std::vector<std::unique_ptr<rapidjson::Document>> newMessages;
122 std::vector<std::string> messagesToSend{};
123 unsigned int msgId{ 0 };
125 rapidjson::Document newMsg(
const ETTClientMessageTypes& msgType);
126 void completeAndSend(rapidjson::Document& doc);
128 void handleLogin(rapidjson::Value& payload);
129 void handleHello(rapidjson::Value& payload);
130 void handleReceiveScore(rapidjson::Value& payload);
132 void handleSelectChart(rapidjson::Value& payload);
133 void handleStartChart(rapidjson::Value& payload);
134 void handleReceiveChat(rapidjson::Value& payload);
135 void handleMPLeaderboardUpdate(rapidjson::Value& payload);
136 void handleCreateRoomResponse(rapidjson::Value& payload);
137 void handleChartRequest(rapidjson::Value& payload);
138 void handleEnterRoomResponse(rapidjson::Value& payload);
139 void handleNewRoom(rapidjson::Value& payload);
140 void handleDeleteRoom(rapidjson::Value& payload);
141 void handleUpdateRoom(rapidjson::Value& payload);
142 void handleLobbyUserlist(rapidjson::Value& payload);
143 void handleLobbyUserlistUpdate(rapidjson::Value& payload);
144 void handleRoomlist(rapidjson::Value& payload);
145 void handleRoomPacklist(rapidjson::Value& payload);
146 void handleRoomUserlist(rapidjson::Value& payload);
147 void handleGameplayReplayUpdate(rapidjson::Value& payload);
148 void handleSpectatingUpdate(rapidjson::Value& payload);