ConnectX 3.0
ConnectX Game Suite
Loading...
Searching...
No Matches
Client Class Reference

#include <client.hpp>

Public Types

using DisconnectedCallback = std::function< void()>
 
using GameStateUpdateCallback = std::function< void(const GameStateUpdate &)>
 
using MoveResultCallback = std::function< void(bool success, const std::string &message)>
 
using ErrorCallback = std::function< void(uint16_t error_code, const std::string &message)>
 

Public Member Functions

 Client ()
 
 ~Client ()
 
bool connect (const std::string &host, uint16_t port)
 
void disconnect ()
 
bool isConnected () const
 
bool isRunning () const
 
void run ()
 
void stop ()
 
bool sendConnectRequest (const std::string &player_name)
 
bool sendCreateGame (const GameConfig &config, const std::string &name="")
 
bool sendListGames ()
 
bool sendJoinGame (uint32_t game_id)
 
bool sendMove (uint8_t column)
 
bool sendDisconnect (const std::string &reason="Client disconnecting")
 
std::optional< ConnectResponserequestConnect (const std::string &player_name, int timeout_ms=3000)
 
std::optional< CreateGameResponserequestCreateGame (const GameConfig &config, const std::string &name="", int timeout_ms=3000)
 
std::optional< ListGamesResponserequestGamesList (int timeout_ms=3000)
 
std::optional< JoinGameResponserequestJoinGame (uint32_t game_id, int timeout_ms=3000)
 
void onDisconnected (DisconnectedCallback callback)
 
void onGameStateUpdate (GameStateUpdateCallback callback)
 
void onMoveResult (MoveResultCallback callback)
 
void onError (ErrorCallback callback)
 
const std::string & getSessionToken () const
 
uint8_t getPlayerId () const
 
std::optional< uint8_t > getPlayerIndex (const GameStateUpdate &state, uint8_t player_id)
 
const std::optional< GameInfo > & getGameInfo () const
 
uint32_t getGameId () const
 
std::string getGameName () const
 
const std::optional< GameStateUpdate > & getCurrentState () const
 
bool isMyTurn () const
 

Detailed Description

High-level client for Connect X game Handles connection, message serialization, and state management

Member Typedef Documentation

◆ DisconnectedCallback

using Client::DisconnectedCallback = std::function<void()>

◆ ErrorCallback

using Client::ErrorCallback = std::function<void(uint16_t error_code, const std::string &message)>

◆ GameStateUpdateCallback

using Client::GameStateUpdateCallback = std::function<void(const GameStateUpdate &)>

◆ MoveResultCallback

using Client::MoveResultCallback = std::function<void(bool success, const std::string &message)>

Constructor & Destructor Documentation

◆ Client()

Client::Client ( )

◆ ~Client()

Client::~Client ( )

Member Function Documentation

◆ connect()

bool Client::connect ( const std::string &  host,
uint16_t  port 
)

Connect to server

Parameters
hostServer hostname or IP
portServer port
Returns
true if connection successful

◆ disconnect()

void Client::disconnect ( )

Disconnect from server

◆ getCurrentState()

const std::optional< GameStateUpdate > & Client::getCurrentState ( ) const
inline

Get current game state (updated by server)

◆ getGameId()

uint32_t Client::getGameId ( ) const
inline

Get current game ID

◆ getGameInfo()

const std::optional< GameInfo > & Client::getGameInfo ( ) const
inline

Get current game info

◆ getGameName()

std::string Client::getGameName ( ) const
inline

Get current game name

◆ getPlayerId()

uint8_t Client::getPlayerId ( ) const
inline

Get assigned player ID

◆ getPlayerIndex()

std::optional< uint8_t > Client::getPlayerIndex ( const GameStateUpdate state,
uint8_t  player_id 
)
inline

◆ getSessionToken()

const std::string & Client::getSessionToken ( ) const
inline

Get current session token

◆ isConnected()

bool Client::isConnected ( ) const
inline

Check if connected to server

◆ isMyTurn()

bool Client::isMyTurn ( ) const
inline

Check if it's my turn

◆ isRunning()

bool Client::isRunning ( ) const
inline

Check if event loop is running

◆ onDisconnected()

void Client::onDisconnected ( DisconnectedCallback  callback)
inline

◆ onError()

void Client::onError ( ErrorCallback  callback)
inline

◆ onGameStateUpdate()

void Client::onGameStateUpdate ( GameStateUpdateCallback  callback)
inline

◆ onMoveResult()

void Client::onMoveResult ( MoveResultCallback  callback)
inline

◆ requestConnect()

std::optional< ConnectResponse > Client::requestConnect ( const std::string &  player_name,
int  timeout_ms = 3000 
)

◆ requestCreateGame()

std::optional< CreateGameResponse > Client::requestCreateGame ( const GameConfig config,
const std::string &  name = "",
int  timeout_ms = 3000 
)

◆ requestGamesList()

std::optional< ListGamesResponse > Client::requestGamesList ( int  timeout_ms = 3000)

◆ requestJoinGame()

std::optional< JoinGameResponse > Client::requestJoinGame ( uint32_t  game_id,
int  timeout_ms = 3000 
)

◆ run()

void Client::run ( )

Run the client event loop (blocking) Processes incoming messages until disconnected

◆ sendConnectRequest()

bool Client::sendConnectRequest ( const std::string &  player_name)

Send connection request with player name

Parameters
player_nameYour display name

◆ sendCreateGame()

bool Client::sendCreateGame ( const GameConfig config,
const std::string &  name = "" 
)

Create a new game with custom configuration

◆ sendDisconnect()

bool Client::sendDisconnect ( const std::string &  reason = "Client disconnecting")

Send disconnect message

◆ sendJoinGame()

bool Client::sendJoinGame ( uint32_t  game_id)

Join an existing game by ID

◆ sendListGames()

bool Client::sendListGames ( )

Request list of available games

◆ sendMove()

bool Client::sendMove ( uint8_t  column)

Make a move (place piece in column)

Parameters
columnColumn index (0-based)

◆ stop()

void Client::stop ( )

Stop the event loop


The documentation for this class was generated from the following files: