46#define PKRSRV_LOBBY_DISCONNECTION_TOLERANCE 20000
421static void on_client_connected(pkrsrv_eventloop_task_t* task);
422static void on_client_disconnected(pkrsrv_eventloop_task_t* task);
423static void on_client_disconnected__tolerated(pkrsrv_eventloop_task_t* task);
424static void on_client_meowed(pkrsrv_eventloop_task_t* task);
425static void on_client_login(pkrsrv_eventloop_task_t* task);
426static void on_client_signup(pkrsrv_eventloop_task_t* task);
427static void on_client_auth_session(pkrsrv_eventloop_task_t* task);
428static void on_client_get_account(pkrsrv_eventloop_task_t* task);
429static void on_client_enter(pkrsrv_eventloop_task_t* task);
430static void on_client_leave(pkrsrv_eventloop_task_t* task);
431static void on_client_join(pkrsrv_eventloop_task_t* task);
432static void on_client_unjoin(pkrsrv_eventloop_task_t* task);
433static void on_client_action(pkrsrv_eventloop_task_t* task);
434static void on_client_get_tables(pkrsrv_eventloop_task_t* task);
435static void on_client_get_sessions(pkrsrv_eventloop_task_t* task);
436static void on_client_update_account(pkrsrv_eventloop_task_t* task);
437static void on_client_json(pkrsrv_eventloop_task_t* task);
439static void on_poker_action(pkrsrv_eventloop_task_t* task);
pkrsrv_lobby_session_t * session
Definition lobby.h:295
pkrsrv_account_t * account
Definition lobby.h:160
pkrsrv_lobby_client_sessions_t * sessions
Definition lobby.h:159
pkrsrv_lobby_session_clients_t * clients
Definition lobby.h:107
int process_latency
Definition lobby.h:100
PGconn * pg_conn
Definition lobby.h:97
pkrsrv_lobby_client_t * lobby_client
Definition lobby.h:174
pkrsrv_uniqid_uuid_t id
Definition lobby.h:99
int port
Definition lobby.h:186
pthread_mutex_t mutex
Definition lobby.h:64
pkrsrv_account_t * account
Definition lobby.h:173
int max_clients
Definition lobby.h:189
pkrsrv_lobby_t * lobby
Definition lobby.h:224
pkrsrv_lobby_sessions_t * sessions
Definition lobby.h:66
pkrsrv_lobby_session_t * session
Definition lobby.h:281
bool is_tolerant_disconnected
Definition lobby.h:162
int joined_clients_count
Definition lobby.h:108
pkrsrv_lobby_session_t * session
Definition lobby.h:135
pkrsrv_lobby_t * lobby
Definition lobby.h:98
pkrsrv_server_t * server
Definition lobby.h:63
bool is_joined
Definition lobby.h:136
pkrsrv_poker_t * poker
Definition lobby.h:101
pkrsrv_trie__ascii_t * authorized_clients
Definition lobby.h:68
pkrsrv_lobby_t * lobby
Definition lobby.h:157
bool is_revived
Definition lobby.h:165
pkrsrv_lobby_client_t * client
Definition lobby.h:124
pkrsrv_eventloop_task_t * proceed_task
Definition lobby.h:104
bool is_connected
Definition lobby.h:164
pkrsrv_eventloop_t * eventloop
Definition lobby.h:67
bool is_running
Definition lobby.h:103
pkrsrv_eventloop_task_t * tolerated_disconnected_task
Definition lobby.h:166
int process_latency
Definition lobby.h:188
pkrsrv_auth_session_t * auth_session
Definition lobby.h:161
pkrsrv_eventloop_task_t * poker_start_task
Definition lobby.h:105
char * bind_address
Definition lobby.h:187
int process_latency
Definition lobby.h:65
pkrsrv_lobby_session_t * session
Definition lobby.h:309
pthread_mutex_t mutex
Definition lobby.h:102
pkrsrv_eventloop_task_t * poker_restart_task
Definition lobby.h:106
bool is_joined
Definition lobby.h:125
pkrsrv_table_t * table
Definition lobby.h:225
pkrsrv_server_client_t * client
Definition lobby.h:158
pkrsrv_auth_session_t * auth_session
Definition lobby.h:223
bool is_disconnected
Definition lobby.h:163
void pkrsrv_lobby_session_proceed__async(pkrsrv_eventloop_task_t *task)
Proceeds the session's game one step to future.
void pkrsrv_lobby_sessions_free(pkrsrv_lobby_sessions_t *sessions)
Frees the lobby sessions list (stops & releases all sessions)
void pkrsrv_lobby_broadcast_sessions(pkrsrv_lobby_t *lobby)
Broadcasts the sessions of the lobby to all clients.
void pkrsrv_lobby_session_start(pkrsrv_lobby_session_t *session)
Starts the session.
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_free(pkrsrv_lobby_t *lobby)
Frees a lobby object.
void on_account_updated__async(pkrsrv_eventloop_task_t *task)
Used for pkrsrv_account_t::on_updated
void pkrsrv_lobby_run(pkrsrv_lobby_t *lobby)
Runs the lobby.
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.
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_t * pkrsrv_lobby_client_new(pkrsrv_lobby_t *lobby, pkrsrv_server_client_t *client)
Creates a new lobby client object.
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.
void pkrsrv_lobby_sessions_remove(pkrsrv_lobby_sessions_t *sessions, pkrsrv_lobby_session_t *session)
Removes a session from the lobby.
void pkrsrv_lobby_session_free(pkrsrv_lobby_session_t *session)
Frees a session object.
void pkrsrv_lobby_session_client_free(pkrsrv_lobby_session_client_t *session_client)
Frees a session client object.
void pkrsrv_lobby_session_poker_restart__async(pkrsrv_eventloop_task_t *task)
Restarts the poker game of the session.
void pkrsrv_lobby_session_poker_start__async(pkrsrv_eventloop_task_t *task)
Starts the poker game of the session.
pkrsrv_lobby_sessions_t * pkrsrv_lobby_sessions_new()
Creates a new lobby sessions list.
pkrsrv_lobby_client_sessions_t * pkrsrv_lobby_client_sessions_new()
bool pkrsrv_lobby_client_enter_session(pkrsrv_lobby_client_t *client, pkrsrv_lobby_session_t *session)
Makes a lobby enter a session.
void pkrsrv_lobby_client_free(pkrsrv_lobby_client_t *lobby_client)
Frees a lobby client object.
bool pkrsrv_lobby_client_leave_session(pkrsrv_lobby_client_t *client, pkrsrv_lobby_client_session_t *client_session)
Makes a lobby leave a 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_t * pkrsrv_lobby_session_new(pkrsrv_lobby_session_new_params_t params)
Creates a new session object.
bool reorder_updated_session(pkrsrv_lobby_session_t *updated, int old_length)
Efficient session reorderer
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_session_getby_table_id(pkrsrv_lobby_client_t *client, uint64_t id)
Gİies the session of a lobby client by its table ID.
void pkrsrv_lobby_client_sessions_free(pkrsrv_lobby_client_sessions_t *sessions)
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.
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.
void pkrsrv_lobby_client_session_free(pkrsrv_lobby_client_session_t *joined_session)
Frees a lobby client session object.
pkrsrv_lobby_t * pkrsrv_lobby_new(pkrsrv_lobby_new_params_t params)
Creates a new lobby object.
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_sessions_add(pkrsrv_lobby_sessions_t *sessions, pkrsrv_lobby_session_t *session)
Adds a session to the lobby.
pkrsrv_lobby_session_t * pkrsrv_lobby_session_getby_table_id(pkrsrv_lobby_t *lobby, uint64_t id)
Gives the session by its table ID.
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_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_session_t * pkrsrv_lobby_session_getby_id(pkrsrv_lobby_t *lobby, uint64_t id)
Gives the session by its ID.
void pkrsrv_lobby_session_stop(pkrsrv_lobby_session_t *session)
Stops the session.
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_session_t * pkrsrv_lobby_client_session_new(pkrsrv_lobby_session_t *session)
Creates a new lobby client session object.
Parameters of on_account_updated__async
Definition lobby.h:172
Lobby object.
Definition lobby.h:61
Lobby client object.
Definition lobby.h:155
Lobby client session object.
Definition lobby.h:133
Lobby client sessions list structure.
Definition lobby.h:143
Parameters of pkrsrv_lobby_new
Definition lobby.h:185
Session object.
Definition lobby.h:94
Session client object.
Definition lobby.h:122
Session clients list structure.
Definition lobby.h:114
Parameters of pkrsrv_lobby_session_new
Definition lobby.h:222
Parameters of pkrsrv_lobby_session_poker_restart__async
Definition lobby.h:308
Parameters of pkrsrv_lobby_session_poker_start__async
Definition lobby.h:294
Parameters of pkrsrv_lobby_session_proceed__async
Definition lobby.h:280
Lobby sessions list structure.
Definition lobby.h:74
#define PKRSRV_REF_COUNTEDIFY()
Makes a structure reference-counted.
Definition ref.h:70
#define LISTIFY(type)
Definition sugar.h:38
#define ITEMIFY(type)
Definition sugar.h:44