1#ifndef YAZE_APP_NET_WEBSOCKET_CLIENT_H_
2#define YAZE_APP_NET_WEBSOCKET_CLIENT_H_
11#include "absl/status/status.h"
12#include "absl/status/statusor.h"
15#include "nlohmann/json.hpp"
73 absl::Status
Connect(
const std::string& host,
int port = 8765);
84 const std::string& session_name,
85 const std::string& username,
86 const std::string& rom_hash,
87 bool ai_enabled =
true);
93 const std::string& session_code,
94 const std::string& username);
105 const std::string& message,
106 const std::string& sender);
112 const std::string& diff_data,
113 const std::string& rom_hash,
114 const std::string& sender);
120 const std::string& snapshot_data,
121 const std::string& snapshot_type,
122 const std::string& sender);
128 const nlohmann::json& proposal_data,
129 const std::string& sender);
135 const std::string& proposal_id,
137 const std::string& username);
143 const std::string& proposal_id,
144 const std::string& status);
150 const std::string& query,
151 const std::string& username);
207 absl::Status
SendRaw(
const nlohmann::json& message);
WebSocket client for connecting to yaze-server.
void SetState(ConnectionState state)
absl::Status Connect(const std::string &host, int port=8765)
absl::StatusOr< SessionInfo > HostSession(const std::string &session_name, const std::string &username, const std::string &rom_hash, bool ai_enabled=true)
absl::Status ShareSnapshot(const std::string &snapshot_data, const std::string &snapshot_type, const std::string &sender)
absl::Status VoteOnProposal(const std::string &proposal_id, bool approved, const std::string &username)
std::function< void(ConnectionState)> StateCallback
absl::Status UpdateProposalStatus(const std::string &proposal_id, const std::string &status)
ConnectionState GetState() const
absl::Status ShareProposal(const nlohmann::json &proposal_data, const std::string &sender)
absl::Status LeaveSession()
void OnStateChange(StateCallback callback)
absl::StatusOr< SessionInfo > GetSessionInfo() const
std::function< void(const std::string &)> ErrorCallback
std::unique_ptr< Impl > impl_
void OnMessage(const std::string &type, MessageCallback callback)
absl::Status SendChatMessage(const std::string &message, const std::string &sender)
void OnError(ErrorCallback callback)
std::function< void(const nlohmann::json &)> MessageCallback
std::vector< StateCallback > state_callbacks_
std::vector< ErrorCallback > error_callbacks_
std::map< std::string, std::vector< MessageCallback > > message_callbacks_
absl::StatusOr< SessionInfo > JoinSession(const std::string &session_code, const std::string &username)
absl::Status SendAIQuery(const std::string &query, const std::string &username)
absl::Status SendRomSync(const std::string &diff_data, const std::string &rom_hash, const std::string &sender)
SessionInfo current_session_
void HandleMessage(const std::string &message)
absl::Status SendRaw(const nlohmann::json &message)
void HandleError(const std::string &error)
ConnectionState
WebSocket connection states.
Main namespace for the application.
Information about the current collaboration session.
std::vector< std::string > participants