PokerUnicorn
Loading...
Searching...
No Matches
Lobby

Lobby and session management and interactions. More...

Data Structures

struct  pkrsrv_lobby_t
 Lobby object. More...
 
struct  pkrsrv_lobby_sessions_t
 Lobby sessions list structure. More...
 
struct  pkrsrv_lobby_session_t
 Session object. More...
 
struct  pkrsrv_lobby_session_clients_t
 Session clients list structure. More...
 
struct  pkrsrv_lobby_session_client_t
 Session client object. More...
 
struct  pkrsrv_lobby_client_session_t
 Lobby client session object. More...
 
struct  pkrsrv_lobby_client_sessions_t
 Lobby client sessions list structure. More...
 
struct  pkrsrv_lobby_client_t
 Lobby client object. More...
 
struct  pkrsrv_lobby_new_params_t
 Parameters of pkrsrv_lobby_new More...
 
struct  pkrsrv_lobby_session_new_params_t
 Parameters of pkrsrv_lobby_session_new More...
 
struct  pkrsrv_lobby_session_proceed__async_params_t
 Parameters of pkrsrv_lobby_session_proceed__async More...
 
struct  pkrsrv_lobby_session_poker_start__async_params_t
 Parameters of pkrsrv_lobby_session_poker_start__async More...
 
struct  pkrsrv_lobby_session_poker_restart__async_params_t
 Parameters of pkrsrv_lobby_session_poker_restart__async More...
 

Macros

#define PKRSRV_LOBBY_DISCONNECTION_TOLERANCE   20000
 Lobby disconnection tolerance in milliseconds.
 

Functions

pkrsrv_lobby_client_sessions_t * pkrsrv_lobby_client_sessions_new ()
 
void pkrsrv_lobby_client_sessions_free (pkrsrv_lobby_client_sessions_t *sessions)
 
void on_account_updated__async (pkrsrv_eventloop_task_t *task)
 Used for pkrsrv_account_t::on_updated
 
pkrsrv_lobby_t * pkrsrv_lobby_new (pkrsrv_lobby_new_params_t params)
 Creates a new lobby object.
 
void pkrsrv_lobby_free (pkrsrv_lobby_t *lobby)
 Frees a lobby object.
 
void pkrsrv_lobby_run (pkrsrv_lobby_t *lobby)
 Runs the lobby.
 
pkrsrv_lobby_client_t * pkrsrv_lobby_client_new (pkrsrv_lobby_t *lobby, pkrsrv_server_client_t *client)
 Creates a new lobby client object.
 
void pkrsrv_lobby_client_set_account (pkrsrv_lobby_client_t *lobby_client, pkrsrv_account_t *account)
 Sets the account of a lobby client.
 
void pkrsrv_lobby_client_free (pkrsrv_lobby_client_t *lobby_client)
 Frees a lobby client object.
 
bool reorder_updated_session (pkrsrv_lobby_session_t *updated, int old_length)
 Efficient session reorderer  
 
void pkrsrv_lobby_broadcast_sessions (pkrsrv_lobby_t *lobby)
 Broadcasts the sessions of the lobby to all clients.
 
pkrsrv_lobby_sessions_t * pkrsrv_lobby_sessions_t::pkrsrv_lobby_sessions_new ()
 Creates a new lobby sessions list.
 
void pkrsrv_lobby_sessions_t::pkrsrv_lobby_sessions_free (pkrsrv_lobby_sessions_t *sessions)
 Frees the lobby sessions list (stops & releases all sessions)
 
pkrsrv_lobby_session_t * pkrsrv_lobby_session_t::pkrsrv_lobby_session_new (pkrsrv_lobby_session_new_params_t params)
 Creates a new session object.
 
void pkrsrv_lobby_session_t::pkrsrv_lobby_session_free (pkrsrv_lobby_session_t *session)
 Frees a session object.
 
void pkrsrv_lobby_sessions_t::pkrsrv_lobby_sessions_add (pkrsrv_lobby_sessions_t *sessions, pkrsrv_lobby_session_t *session)
 Adds a session to the lobby.
 
void pkrsrv_lobby_sessions_t::pkrsrv_lobby_sessions_remove (pkrsrv_lobby_sessions_t *sessions, pkrsrv_lobby_session_t *session)
 Removes a session from the lobby.
 
void pkrsrv_lobby_session_t::pkrsrv_lobby_session_start (pkrsrv_lobby_session_t *session)
 Starts the session.
 
void pkrsrv_lobby_session_t::pkrsrv_lobby_session_stop (pkrsrv_lobby_session_t *session)
 Stops the session.
 
pkrsrv_lobby_session_t * pkrsrv_lobby_session_t::pkrsrv_lobby_session_getby_id (pkrsrv_lobby_t *lobby, uint64_t id)
 Gives the session by its ID.
 
pkrsrv_lobby_session_t * pkrsrv_lobby_session_t::pkrsrv_lobby_session_getby_table_id (pkrsrv_lobby_t *lobby, uint64_t id)
 Gives the session by its table ID.
 
void pkrsrv_lobby_session_t::pkrsrv_lobby_session_proceed__async (pkrsrv_eventloop_task_t *task)
 Proceeds the session's game one step to future.
 
void pkrsrv_lobby_session_t::pkrsrv_lobby_session_poker_start__async (pkrsrv_eventloop_task_t *task)
 Starts the poker game of the session.
 
void pkrsrv_lobby_session_t::pkrsrv_lobby_session_poker_restart__async (pkrsrv_eventloop_task_t *task)
 Restarts the poker game of the session.
 
pkrsrv_lobby_session_client_t * pkrsrv_lobby_session_client_t::pkrsrv_lobby_session_client_new (pkrsrv_lobby_client_t *lobby_client)
 Creates a new session client object.
 
void pkrsrv_lobby_session_client_t::pkrsrv_lobby_session_client_free (pkrsrv_lobby_session_client_t *session_client)
 Frees a session client object.
 
void pkrsrv_lobby_session_clients_t::pkrsrv_lobby_session_clients_add (pkrsrv_lobby_session_clients_t *session_clients, pkrsrv_lobby_session_client_t *session_client)
 Adds a session client to the session.
 
void pkrsrv_lobby_session_clients_t::pkrsrv_lobby_session_clients_remove (pkrsrv_lobby_session_clients_t *session_clients, pkrsrv_lobby_session_client_t *session_client)
 Removes a session client from the session.
 
pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_session_t::pkrsrv_lobby_client_session_new (pkrsrv_lobby_session_t *session)
 Creates a new lobby client session object.
 
void pkrsrv_lobby_client_session_t::pkrsrv_lobby_client_session_free (pkrsrv_lobby_client_session_t *joined_session)
 Frees a lobby client session object.
 
void pkrsrv_lobby_client_sessions_t::pkrsrv_lobby_client_sessions_add (pkrsrv_lobby_client_sessions_t *client_sessions, pkrsrv_lobby_client_session_t *client_session)
 Adds a lobby client session to the lobby client.
 
void pkrsrv_lobby_client_sessions_t::pkrsrv_lobby_client_sessions_remove (pkrsrv_lobby_client_sessions_t *client_sessions, pkrsrv_lobby_client_session_t *client_session)
 Removes a lobby client session from the lobby client.
 
bool pkrsrv_lobby_client_t::pkrsrv_lobby_client_enter_session (pkrsrv_lobby_client_t *client, pkrsrv_lobby_session_t *session)
 Makes a lobby enter a session.
 
bool pkrsrv_lobby_client_t::pkrsrv_lobby_client_leave_session (pkrsrv_lobby_client_t *client, pkrsrv_lobby_client_session_t *client_session)
 Makes a lobby leave a session.
 
bool pkrsrv_lobby_client_t::pkrsrv_lobby_client_join_session (pkrsrv_lobby_client_t *client, pkrsrv_lobby_session_t *session, uint64_t enterance_amount, int position)
 Makes a lobby join a session.
 
bool pkrsrv_lobby_client_t::pkrsrv_lobby_client_unjoin_session (pkrsrv_lobby_client_t *client, pkrsrv_lobby_session_t *session)
 Makes a lobby unjoin a session.
 
pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_t::pkrsrv_lobby_client_get_session_by_id (pkrsrv_lobby_client_t *client, uint64_t id)
 Gives the session of a lobby client by its ID.
 
pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_t::pkrsrv_lobby_client_session_getby_table_id (pkrsrv_lobby_client_t *client, uint64_t id)
 Gİies the session of a lobby client by its table ID.
 
pkrsrv_lobby_session_client_t * pkrsrv_lobby_session_t::pkrsrv_lobby_session_client_getby_socket (pkrsrv_lobby_session_t *session, int socket)
 Gives the client of a session by its socket.
 
pkrsrv_lobby_session_client_t * pkrsrv_lobby_session_t::pkrsrv_lobby_session_client_getby_account_id (pkrsrv_lobby_session_t *session, uint64_t account_id)
 Gives the client of a session by its account ID.
 
pkrsrv_lobby_client_session_t * pkrsrv_lobby_session_t::pkrsrv_lobby_client_session_getby_session_id (pkrsrv_lobby_client_t *lobby_client, uint64_t session_id)
 Gives the client of a session by its account.
 

Detailed Description

Lobby and session management and interactions.


Data Structure Documentation

◆ pkrsrv_lobby

struct pkrsrv_lobby

Lobby object.

+ Inheritance diagram for pkrsrv_lobby_t:

Data Fields

pkrsrv_ref_counted_t ref_counted
 
pkrsrv_server_t * server
 
pthread_mutex_t mutex
 
int process_latency
 
pkrsrv_lobby_sessions_t * sessions
 
pkrsrv_eventloop_t * eventloop
 
pkrsrv_trie__ascii_t * authorized_clients
 
- Data Fields inherited from pkrsrv_ref_counted_t
int count
 
pkrsrv_ref_free_f_t free_f
 
pthread_mutex_t mutex
 

Additional Inherited Members

- Protected Member Functions inherited from pkrsrv_ref_counted_t
void pkrsrv_ref_counted_init (pkrsrv_ref_counted_t *ref_counted, pkrsrv_ref_free_f_t free_f)
 Initializes a reference-counted object. Should be called in the constructor of the object after the dynamic allocation.
 
void pkrsrv_ref_counted_use (pkrsrv_ref_counted_t *ref_counted)
 Increments the reference count of a reference-counted object.
 
void pkrsrv_ref_counted_leave (void **obj_vp, pkrsrv_ref_counted_t *ref_counted)
 Decrements the reference count of a reference-counted object.
 

Field Documentation

◆ ref_counted

pkrsrv_ref_counted_t pkrsrv_lobby_t::ref_counted

◆ server

pkrsrv_server_t* pkrsrv_lobby_t::server

◆ mutex

pthread_mutex_t pkrsrv_lobby_t::mutex

◆ process_latency

int pkrsrv_lobby_t::process_latency

◆ sessions

pkrsrv_lobby_sessions_t* pkrsrv_lobby_t::sessions

◆ eventloop

pkrsrv_eventloop_t* pkrsrv_lobby_t::eventloop

◆ authorized_clients

pkrsrv_trie__ascii_t* pkrsrv_lobby_t::authorized_clients

◆ pkrsrv_lobby_sessions

struct pkrsrv_lobby_sessions

Lobby sessions list structure.

Public Member Functions

pkrsrv_lobby_sessions_t * pkrsrv_lobby_sessions_new ()
 Creates a new lobby sessions list.
 
void pkrsrv_lobby_sessions_free (pkrsrv_lobby_sessions_t *sessions)
 Frees the lobby sessions list (stops & releases all sessions)
 
void pkrsrv_lobby_sessions_add (pkrsrv_lobby_sessions_t *sessions, pkrsrv_lobby_session_t *session)
 Adds a session to the lobby.
 
void pkrsrv_lobby_sessions_remove (pkrsrv_lobby_sessions_t *sessions, pkrsrv_lobby_session_t *session)
 Removes a session from the lobby.
 

Data Fields

pkrsrv_ref_counted_t ref_counted
 
pkrsrv_lobby_session_t * next
 
pkrsrv_lobby_session_t * prev
 
pkrsrv_lobby_session_t * terminal
 
int length
 

Field Documentation

◆ ref_counted

pkrsrv_ref_counted_t pkrsrv_lobby_sessions_t::ref_counted

◆ next

pkrsrv_lobby_session_t* pkrsrv_lobby_sessions_t::next

◆ prev

pkrsrv_lobby_session_t* pkrsrv_lobby_sessions_t::prev

◆ terminal

pkrsrv_lobby_session_t* pkrsrv_lobby_sessions_t::terminal

◆ length

int pkrsrv_lobby_sessions_t::length

◆ pkrsrv_lobby_session

struct pkrsrv_lobby_session

Session object.

+ Inheritance diagram for pkrsrv_lobby_session_t:

Public Member Functions

pkrsrv_lobby_session_t * pkrsrv_lobby_session_new (pkrsrv_lobby_session_new_params_t params)
 Creates a new session object.
 
void pkrsrv_lobby_session_free (pkrsrv_lobby_session_t *session)
 Frees a session object.
 
void pkrsrv_lobby_session_start (pkrsrv_lobby_session_t *session)
 Starts the session.
 
void pkrsrv_lobby_session_stop (pkrsrv_lobby_session_t *session)
 Stops the session.
 
pkrsrv_lobby_session_t * pkrsrv_lobby_session_getby_id (pkrsrv_lobby_t *lobby, uint64_t id)
 Gives the session by its ID.
 
pkrsrv_lobby_session_t * pkrsrv_lobby_session_getby_table_id (pkrsrv_lobby_t *lobby, uint64_t id)
 Gives the session by its table ID.
 
void pkrsrv_lobby_session_proceed__async (pkrsrv_eventloop_task_t *task)
 Proceeds the session's game one step to future.
 
void pkrsrv_lobby_session_poker_start__async (pkrsrv_eventloop_task_t *task)
 Starts the poker game of the session.
 
void pkrsrv_lobby_session_poker_restart__async (pkrsrv_eventloop_task_t *task)
 Restarts the poker game of the session.
 
pkrsrv_lobby_session_client_t * pkrsrv_lobby_session_client_getby_socket (pkrsrv_lobby_session_t *session, int socket)
 Gives the client of a session by its socket.
 
pkrsrv_lobby_session_client_t * pkrsrv_lobby_session_client_getby_account_id (pkrsrv_lobby_session_t *session, uint64_t account_id)
 Gives the client of a session by its account ID.
 
pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_session_getby_session_id (pkrsrv_lobby_client_t *lobby_client, uint64_t session_id)
 Gives the client of a session by its account.
 

Data Fields

pkrsrv_ref_counted_t ref_counted
 
pkrsrv_lobby_session_t * next
 
pkrsrv_lobby_session_t * prev
 
PGconn * pg_conn
 
pkrsrv_lobby_t * lobby
 
pkrsrv_uniqid_uuid_t id
 
int process_latency
 
pkrsrv_poker_t * poker
 
pthread_mutex_t mutex
 
bool is_running
 
pkrsrv_eventloop_task_t * proceed_task
 
pkrsrv_eventloop_task_t * poker_start_task
 
pkrsrv_eventloop_task_t * poker_restart_task
 
pkrsrv_lobby_session_clients_t * clients
 
int joined_clients_count
 
- Data Fields inherited from pkrsrv_ref_counted_t
int count
 
pkrsrv_ref_free_f_t free_f
 
pthread_mutex_t mutex
 

Additional Inherited Members

- Protected Member Functions inherited from pkrsrv_ref_counted_t
void pkrsrv_ref_counted_init (pkrsrv_ref_counted_t *ref_counted, pkrsrv_ref_free_f_t free_f)
 Initializes a reference-counted object. Should be called in the constructor of the object after the dynamic allocation.
 
void pkrsrv_ref_counted_use (pkrsrv_ref_counted_t *ref_counted)
 Increments the reference count of a reference-counted object.
 
void pkrsrv_ref_counted_leave (void **obj_vp, pkrsrv_ref_counted_t *ref_counted)
 Decrements the reference count of a reference-counted object.
 

Field Documentation

◆ ref_counted

pkrsrv_ref_counted_t pkrsrv_lobby_session_t::ref_counted

◆ next

pkrsrv_lobby_session_t* pkrsrv_lobby_session_t::next

◆ prev

pkrsrv_lobby_session_t* pkrsrv_lobby_session_t::prev

◆ pg_conn

PGconn* pkrsrv_lobby_session_t::pg_conn

◆ lobby

pkrsrv_lobby_t* pkrsrv_lobby_session_t::lobby

◆ id

pkrsrv_uniqid_uuid_t pkrsrv_lobby_session_t::id

◆ process_latency

int pkrsrv_lobby_session_t::process_latency

◆ poker

pkrsrv_poker_t* pkrsrv_lobby_session_t::poker

◆ mutex

pthread_mutex_t pkrsrv_lobby_session_t::mutex

◆ is_running

bool pkrsrv_lobby_session_t::is_running

◆ proceed_task

pkrsrv_eventloop_task_t* pkrsrv_lobby_session_t::proceed_task

◆ poker_start_task

pkrsrv_eventloop_task_t* pkrsrv_lobby_session_t::poker_start_task

◆ poker_restart_task

pkrsrv_eventloop_task_t* pkrsrv_lobby_session_t::poker_restart_task

◆ clients

pkrsrv_lobby_session_clients_t* pkrsrv_lobby_session_t::clients

◆ joined_clients_count

int pkrsrv_lobby_session_t::joined_clients_count

◆ pkrsrv_lobby_session_clients

struct pkrsrv_lobby_session_clients

Session clients list structure.

Public Member Functions

void pkrsrv_lobby_session_clients_add (pkrsrv_lobby_session_clients_t *session_clients, pkrsrv_lobby_session_client_t *session_client)
 Adds a session client to the session.
 
void pkrsrv_lobby_session_clients_remove (pkrsrv_lobby_session_clients_t *session_clients, pkrsrv_lobby_session_client_t *session_client)
 Removes a session client from the session.
 

Data Fields

pkrsrv_lobby_session_client_t * next
 
pkrsrv_lobby_session_client_t * prev
 
pkrsrv_lobby_session_client_t * terminal
 
int length
 

Field Documentation

◆ next

pkrsrv_lobby_session_client_t* pkrsrv_lobby_session_clients_t::next

◆ prev

pkrsrv_lobby_session_client_t* pkrsrv_lobby_session_clients_t::prev

◆ terminal

pkrsrv_lobby_session_client_t* pkrsrv_lobby_session_clients_t::terminal

◆ length

int pkrsrv_lobby_session_clients_t::length

◆ pkrsrv_lobby_session_client

struct pkrsrv_lobby_session_client

Session client object.

+ Inheritance diagram for pkrsrv_lobby_session_client_t:

Public Member Functions

pkrsrv_lobby_session_client_t * pkrsrv_lobby_session_client_new (pkrsrv_lobby_client_t *lobby_client)
 Creates a new session client object.
 
void pkrsrv_lobby_session_client_free (pkrsrv_lobby_session_client_t *session_client)
 Frees a session client object.
 

Data Fields

pkrsrv_lobby_session_client_t * next
 
pkrsrv_lobby_session_client_t * prev
 
pkrsrv_lobby_client_t * client
 
bool is_joined
 
pkrsrv_ref_counted_t ref_counted
 
- Data Fields inherited from pkrsrv_ref_counted_t
int count
 
pkrsrv_ref_free_f_t free_f
 
pthread_mutex_t mutex
 

Additional Inherited Members

- Protected Member Functions inherited from pkrsrv_ref_counted_t
void pkrsrv_ref_counted_init (pkrsrv_ref_counted_t *ref_counted, pkrsrv_ref_free_f_t free_f)
 Initializes a reference-counted object. Should be called in the constructor of the object after the dynamic allocation.
 
void pkrsrv_ref_counted_use (pkrsrv_ref_counted_t *ref_counted)
 Increments the reference count of a reference-counted object.
 
void pkrsrv_ref_counted_leave (void **obj_vp, pkrsrv_ref_counted_t *ref_counted)
 Decrements the reference count of a reference-counted object.
 

Field Documentation

◆ next

pkrsrv_lobby_session_client_t* pkrsrv_lobby_session_client_t::next

◆ prev

pkrsrv_lobby_session_client_t* pkrsrv_lobby_session_client_t::prev

◆ client

pkrsrv_lobby_client_t* pkrsrv_lobby_session_client_t::client

◆ is_joined

bool pkrsrv_lobby_session_client_t::is_joined

◆ ref_counted

pkrsrv_ref_counted_t pkrsrv_lobby_session_client_t::ref_counted

◆ pkrsrv_lobby_client_session

struct pkrsrv_lobby_client_session

Lobby client session object.

+ Inheritance diagram for pkrsrv_lobby_client_session_t:

Public Member Functions

pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_session_new (pkrsrv_lobby_session_t *session)
 Creates a new lobby client session object.
 
void pkrsrv_lobby_client_session_free (pkrsrv_lobby_client_session_t *joined_session)
 Frees a lobby client session object.
 

Data Fields

pkrsrv_lobby_client_session_t * next
 
pkrsrv_lobby_client_session_t * prev
 
pkrsrv_lobby_session_t * session
 
bool is_joined
 
pkrsrv_ref_counted_t ref_counted
 
- Data Fields inherited from pkrsrv_ref_counted_t
int count
 
pkrsrv_ref_free_f_t free_f
 
pthread_mutex_t mutex
 

Additional Inherited Members

- Protected Member Functions inherited from pkrsrv_ref_counted_t
void pkrsrv_ref_counted_init (pkrsrv_ref_counted_t *ref_counted, pkrsrv_ref_free_f_t free_f)
 Initializes a reference-counted object. Should be called in the constructor of the object after the dynamic allocation.
 
void pkrsrv_ref_counted_use (pkrsrv_ref_counted_t *ref_counted)
 Increments the reference count of a reference-counted object.
 
void pkrsrv_ref_counted_leave (void **obj_vp, pkrsrv_ref_counted_t *ref_counted)
 Decrements the reference count of a reference-counted object.
 

Field Documentation

◆ next

pkrsrv_lobby_client_session_t* pkrsrv_lobby_client_session_t::next

◆ prev

pkrsrv_lobby_client_session_t* pkrsrv_lobby_client_session_t::prev

◆ session

pkrsrv_lobby_session_t* pkrsrv_lobby_client_session_t::session

◆ is_joined

bool pkrsrv_lobby_client_session_t::is_joined

◆ ref_counted

pkrsrv_ref_counted_t pkrsrv_lobby_client_session_t::ref_counted

◆ pkrsrv_lobby_client_sessions

struct pkrsrv_lobby_client_sessions

Lobby client sessions list structure.

Public Member Functions

void pkrsrv_lobby_client_sessions_add (pkrsrv_lobby_client_sessions_t *client_sessions, pkrsrv_lobby_client_session_t *client_session)
 Adds a lobby client session to the lobby client.
 
void pkrsrv_lobby_client_sessions_remove (pkrsrv_lobby_client_sessions_t *client_sessions, pkrsrv_lobby_client_session_t *client_session)
 Removes a lobby client session from the lobby client.
 

Data Fields

pkrsrv_lobby_client_session_t * next
 
pkrsrv_lobby_client_session_t * prev
 
pkrsrv_lobby_client_session_t * terminal
 
int length
 
pkrsrv_ref_counted_t ref_counted
 

Field Documentation

◆ next

pkrsrv_lobby_client_session_t* pkrsrv_lobby_client_sessions_t::next

◆ prev

pkrsrv_lobby_client_session_t* pkrsrv_lobby_client_sessions_t::prev

◆ terminal

pkrsrv_lobby_client_session_t* pkrsrv_lobby_client_sessions_t::terminal

◆ length

int pkrsrv_lobby_client_sessions_t::length

◆ ref_counted

pkrsrv_ref_counted_t pkrsrv_lobby_client_sessions_t::ref_counted

◆ pkrsrv_lobby_client

struct pkrsrv_lobby_client

Lobby client object.

+ Inheritance diagram for pkrsrv_lobby_client_t:

Public Member Functions

bool pkrsrv_lobby_client_enter_session (pkrsrv_lobby_client_t *client, pkrsrv_lobby_session_t *session)
 Makes a lobby enter a session.
 
bool pkrsrv_lobby_client_leave_session (pkrsrv_lobby_client_t *client, pkrsrv_lobby_client_session_t *client_session)
 Makes a lobby leave a session.
 
bool pkrsrv_lobby_client_join_session (pkrsrv_lobby_client_t *client, pkrsrv_lobby_session_t *session, uint64_t enterance_amount, int position)
 Makes a lobby join a session.
 
bool pkrsrv_lobby_client_unjoin_session (pkrsrv_lobby_client_t *client, pkrsrv_lobby_session_t *session)
 Makes a lobby unjoin a session.
 
pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_get_session_by_id (pkrsrv_lobby_client_t *client, uint64_t id)
 Gives the session of a lobby client by its ID.
 
pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_session_getby_table_id (pkrsrv_lobby_client_t *client, uint64_t id)
 Gİies the session of a lobby client by its table ID.
 

Data Fields

pkrsrv_ref_counted_t ref_counted
 
pkrsrv_lobby_t * lobby
 
pkrsrv_server_client_t * client
 
pkrsrv_lobby_client_sessions_t * sessions
 
pkrsrv_account_t * account
 
pkrsrv_auth_session_t * auth_session
 
bool is_tolerant_disconnected
 
bool is_disconnected
 
bool is_connected
 
bool is_revived
 
pkrsrv_eventloop_task_t * tolerated_disconnected_task
 
- Data Fields inherited from pkrsrv_ref_counted_t
int count
 
pkrsrv_ref_free_f_t free_f
 
pthread_mutex_t mutex
 

Additional Inherited Members

- Protected Member Functions inherited from pkrsrv_ref_counted_t
void pkrsrv_ref_counted_init (pkrsrv_ref_counted_t *ref_counted, pkrsrv_ref_free_f_t free_f)
 Initializes a reference-counted object. Should be called in the constructor of the object after the dynamic allocation.
 
void pkrsrv_ref_counted_use (pkrsrv_ref_counted_t *ref_counted)
 Increments the reference count of a reference-counted object.
 
void pkrsrv_ref_counted_leave (void **obj_vp, pkrsrv_ref_counted_t *ref_counted)
 Decrements the reference count of a reference-counted object.
 

Field Documentation

◆ ref_counted

pkrsrv_ref_counted_t pkrsrv_lobby_client_t::ref_counted

◆ lobby

pkrsrv_lobby_t* pkrsrv_lobby_client_t::lobby

◆ client

◆ sessions

pkrsrv_lobby_client_sessions_t* pkrsrv_lobby_client_t::sessions

◆ account

pkrsrv_account_t* pkrsrv_lobby_client_t::account

◆ auth_session

pkrsrv_auth_session_t* pkrsrv_lobby_client_t::auth_session

◆ is_tolerant_disconnected

bool pkrsrv_lobby_client_t::is_tolerant_disconnected

◆ is_disconnected

bool pkrsrv_lobby_client_t::is_disconnected

◆ is_connected

bool pkrsrv_lobby_client_t::is_connected

◆ is_revived

bool pkrsrv_lobby_client_t::is_revived

◆ tolerated_disconnected_task

pkrsrv_eventloop_task_t* pkrsrv_lobby_client_t::tolerated_disconnected_task

◆ on_account_updated_params

struct on_account_updated_params

Parameters of on_account_updated__async

Data Fields
pkrsrv_account_t * account
pkrsrv_lobby_client_t * lobby_client

◆ pkrsrv_lobby_new_params

struct pkrsrv_lobby_new_params

Parameters of pkrsrv_lobby_new

Data Fields
int port
char * bind_address
int process_latency
int max_clients

◆ pkrsrv_lobby_session_new_params

struct pkrsrv_lobby_session_new_params

Parameters of pkrsrv_lobby_session_new

Data Fields
pkrsrv_auth_session_t * auth_session
pkrsrv_lobby_t * lobby
pkrsrv_table_t * table

◆ pkrsrv_lobby_session_proceed__async_params

struct pkrsrv_lobby_session_proceed__async_params

Parameters of pkrsrv_lobby_session_proceed__async

Data Fields
pkrsrv_lobby_session_t * session

◆ pkrsrv_lobby_session_poker_start__async_params

struct pkrsrv_lobby_session_poker_start__async_params

Parameters of pkrsrv_lobby_session_poker_start__async

Data Fields
pkrsrv_lobby_session_t * session

◆ pkrsrv_lobby_session_poker_restart__async_params

struct pkrsrv_lobby_session_poker_restart__async_params

Parameters of pkrsrv_lobby_session_poker_restart__async

Data Fields
pkrsrv_lobby_session_t * session

Macro Definition Documentation

◆ PKRSRV_LOBBY_DISCONNECTION_TOLERANCE

#define PKRSRV_LOBBY_DISCONNECTION_TOLERANCE   20000

Lobby disconnection tolerance in milliseconds.

If a client is disconnected from the lobby, it will be removed from the lobby after this time. Default is 20 seconds.

Note
This avoids the client being removed from the lobby immediately after disconnection.

Function Documentation

◆ pkrsrv_lobby_client_sessions_new()

pkrsrv_lobby_client_sessions_t * pkrsrv_lobby_client_sessions_new ( )

◆ pkrsrv_lobby_client_sessions_free()

void pkrsrv_lobby_client_sessions_free ( pkrsrv_lobby_client_sessions_t * sessions)

◆ on_account_updated__async()

void on_account_updated__async ( pkrsrv_eventloop_task_t * task)

Used for pkrsrv_account_t::on_updated

◆ pkrsrv_lobby_new()

pkrsrv_lobby_t * pkrsrv_lobby_new ( pkrsrv_lobby_new_params_t params)

Creates a new lobby object.

◆ pkrsrv_lobby_free()

void pkrsrv_lobby_free ( pkrsrv_lobby_t * lobby)

Frees a lobby object.

◆ pkrsrv_lobby_run()

void pkrsrv_lobby_run ( pkrsrv_lobby_t * lobby)

Runs the lobby.

◆ pkrsrv_lobby_client_new()

pkrsrv_lobby_client_t * pkrsrv_lobby_client_new ( pkrsrv_lobby_t * lobby,
pkrsrv_server_client_t * client )

Creates a new lobby client object.

◆ pkrsrv_lobby_client_set_account()

void pkrsrv_lobby_client_set_account ( pkrsrv_lobby_client_t * lobby_client,
pkrsrv_account_t * account )

Sets the account of a lobby client.

◆ pkrsrv_lobby_client_free()

void pkrsrv_lobby_client_free ( pkrsrv_lobby_client_t * lobby_client)

Frees a lobby client object.

◆ reorder_updated_session()

bool reorder_updated_session ( pkrsrv_lobby_session_t * updated,
int old_length )

Efficient session reorderer  

Parameters
updatedpkrsrv_lobby_session_t* The just-updated session
old_lengthint Old number of total sessions before updated got updated

◆ pkrsrv_lobby_broadcast_sessions()

void pkrsrv_lobby_broadcast_sessions ( pkrsrv_lobby_t * lobby)

Broadcasts the sessions of the lobby to all clients.

◆ pkrsrv_lobby_sessions_new()

pkrsrv_lobby_sessions_t * pkrsrv_lobby_sessions_new ( )

Creates a new lobby sessions list.

◆ pkrsrv_lobby_sessions_free()

void pkrsrv_lobby_sessions_free ( pkrsrv_lobby_sessions_t * sessions)

Frees the lobby sessions list (stops & releases all sessions)

◆ pkrsrv_lobby_session_new()

pkrsrv_lobby_session_t * pkrsrv_lobby_session_new ( pkrsrv_lobby_session_new_params_t params)

Creates a new session object.

◆ pkrsrv_lobby_session_free()

void pkrsrv_lobby_session_free ( pkrsrv_lobby_session_t * session)

Frees a session object.

Proceeds the session.

Referenced by pkrsrv_lobby_session_stop().

◆ pkrsrv_lobby_sessions_add()

void pkrsrv_lobby_sessions_add ( pkrsrv_lobby_sessions_t * sessions,
pkrsrv_lobby_session_t * session )

Adds a session to the lobby.

◆ pkrsrv_lobby_sessions_remove()

void pkrsrv_lobby_sessions_remove ( pkrsrv_lobby_sessions_t * sessions,
pkrsrv_lobby_session_t * session )

Removes a session from the lobby.

◆ pkrsrv_lobby_session_start()

void pkrsrv_lobby_session_start ( pkrsrv_lobby_session_t * session)

Starts the session.

◆ pkrsrv_lobby_session_stop()

void pkrsrv_lobby_session_stop ( pkrsrv_lobby_session_t * session)

Stops the session.

References pkrsrv_lobby_session_free().

◆ pkrsrv_lobby_session_getby_id()

pkrsrv_lobby_session_t * pkrsrv_lobby_session_getby_id ( pkrsrv_lobby_t * lobby,
uint64_t id )

Gives the session by its ID.

References lobby.

◆ pkrsrv_lobby_session_getby_table_id()

pkrsrv_lobby_session_t * pkrsrv_lobby_session_getby_table_id ( pkrsrv_lobby_t * lobby,
uint64_t id )

Gives the session by its table ID.

References lobby.

◆ pkrsrv_lobby_session_proceed__async()

void pkrsrv_lobby_session_proceed__async ( pkrsrv_eventloop_task_t * task)

Proceeds the session's game one step to future.

◆ pkrsrv_lobby_session_poker_start__async()

void pkrsrv_lobby_session_poker_start__async ( pkrsrv_eventloop_task_t * task)

Starts the poker game of the session.

◆ pkrsrv_lobby_session_poker_restart__async()

void pkrsrv_lobby_session_poker_restart__async ( pkrsrv_eventloop_task_t * task)

Restarts the poker game of the session.

◆ pkrsrv_lobby_session_client_new()

pkrsrv_lobby_session_client_t * pkrsrv_lobby_session_client_new ( pkrsrv_lobby_client_t * lobby_client)

Creates a new session client object.

◆ pkrsrv_lobby_session_client_free()

void pkrsrv_lobby_session_client_free ( pkrsrv_lobby_session_client_t * session_client)

Frees a session client object.

◆ pkrsrv_lobby_session_clients_add()

void pkrsrv_lobby_session_clients_add ( pkrsrv_lobby_session_clients_t * session_clients,
pkrsrv_lobby_session_client_t * session_client )

Adds a session client to the session.

◆ pkrsrv_lobby_session_clients_remove()

void pkrsrv_lobby_session_clients_remove ( pkrsrv_lobby_session_clients_t * session_clients,
pkrsrv_lobby_session_client_t * session_client )

Removes a session client from the session.

◆ pkrsrv_lobby_client_session_new()

pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_session_new ( pkrsrv_lobby_session_t * session)

Creates a new lobby client session object.

References session.

◆ pkrsrv_lobby_client_session_free()

void pkrsrv_lobby_client_session_free ( pkrsrv_lobby_client_session_t * joined_session)

Frees a lobby client session object.

◆ pkrsrv_lobby_client_sessions_add()

void pkrsrv_lobby_client_sessions_add ( pkrsrv_lobby_client_sessions_t * client_sessions,
pkrsrv_lobby_client_session_t * client_session )

Adds a lobby client session to the lobby client.

◆ pkrsrv_lobby_client_sessions_remove()

void pkrsrv_lobby_client_sessions_remove ( pkrsrv_lobby_client_sessions_t * client_sessions,
pkrsrv_lobby_client_session_t * client_session )

Removes a lobby client session from the lobby client.

◆ pkrsrv_lobby_client_enter_session()

bool pkrsrv_lobby_client_enter_session ( pkrsrv_lobby_client_t * client,
pkrsrv_lobby_session_t * session )

Makes a lobby enter a session.

References client.

◆ pkrsrv_lobby_client_leave_session()

bool pkrsrv_lobby_client_leave_session ( pkrsrv_lobby_client_t * client,
pkrsrv_lobby_client_session_t * client_session )

Makes a lobby leave a session.

References client.

◆ pkrsrv_lobby_client_join_session()

bool pkrsrv_lobby_client_join_session ( pkrsrv_lobby_client_t * client,
pkrsrv_lobby_session_t * session,
uint64_t enterance_amount,
int position )

Makes a lobby join a session.

Parameters
clientpkrsrv_lobby_client* The client
sessionpkrsrv_lobby_session* The session
enterance_amountuint64_t The amount of money to enter the session
Returns
Is the join was successful?

References client.

◆ pkrsrv_lobby_client_unjoin_session()

bool pkrsrv_lobby_client_unjoin_session ( pkrsrv_lobby_client_t * client,
pkrsrv_lobby_session_t * session )

Makes a lobby unjoin a session.

Returns
true

References client.

◆ pkrsrv_lobby_client_get_session_by_id()

pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_get_session_by_id ( pkrsrv_lobby_client_t * client,
uint64_t id )

Gives the session of a lobby client by its ID.

References client.

◆ pkrsrv_lobby_client_session_getby_table_id()

pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_session_getby_table_id ( pkrsrv_lobby_client_t * client,
uint64_t id )

Gİies the session of a lobby client by its table ID.

References client.

◆ pkrsrv_lobby_session_client_getby_socket()

pkrsrv_lobby_session_client_t * pkrsrv_lobby_session_client_getby_socket ( pkrsrv_lobby_session_t * session,
int socket )

Gives the client of a session by its socket.

Parameters
sessionpkrsrv_lobby_session* The session
socketint OS socket handler
Returns
The client

◆ pkrsrv_lobby_session_client_getby_account_id()

pkrsrv_lobby_session_client_t * pkrsrv_lobby_session_client_getby_account_id ( pkrsrv_lobby_session_t * session,
uint64_t account_id )

Gives the client of a session by its account ID.

Parameters
sessionpkrsrv_lobby_session* The session
account_iduint64_t The account ID
Returns
The client

◆ pkrsrv_lobby_client_session_getby_session_id()

pkrsrv_lobby_client_session_t * pkrsrv_lobby_client_session_getby_session_id ( pkrsrv_lobby_client_t * lobby_client,
uint64_t session_id )

Gives the client of a session by its account.

Parameters
sessionpkrsrv_lobby_session* The session
accountpkrsrv_account* The account
Returns
The client