ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
src/server/client.h
Go to the documentation of this file.
1
10#pragma once
11
13
14// Forward declaration to avoid circular dependency with main.h
15// Files that need the full definition should include main.h themselves
17
73
74// Global client manager
78
79// Client management functions
80client_info_t *add_client(server_context_t *server_ctx, socket_t socket, const char *client_ip, int port);
81client_info_t *add_webrtc_client(server_context_t *server_ctx, acip_transport_t *transport, const char *client_ip,
82 bool start_threads);
83int start_webrtc_client_threads(server_context_t *server_ctx, const char *client_id);
84int remove_client(server_context_t *server_ctx, const char *client_id);
85client_info_t *find_client_by_id(const char *client_id);
89
90// Client thread functions
91void *client_receive_thread(void *arg);
93
94// Packet processing functions
95int process_encrypted_packet(client_info_t *client, packet_type_t *type, void **data, size_t *len, uint32_t *sender_id);
96void process_decrypted_packet(client_info_t *client, packet_type_t type, void *data, size_t len);
97
98// Client initialization
unsigned int uint32_t
Definition common.h:58
#define MAX_CLIENTS
Maximum possible clients (static array size) - actual runtime limit set by –max-clients (1-32)
Definition limits.h:26
packet_type_t
Network protocol packet type enumeration.
Definition packet.h:286
int socket_t
void initialize_client_info(client_info_t *client)
client_info_t * add_client(server_context_t *server_ctx, socket_t socket, const char *client_ip, int port)
void cleanup_client_media_buffers(client_info_t *client)
void process_decrypted_packet(client_info_t *client, packet_type_t type, void *data, size_t len)
void cleanup_client_packet_queues(client_info_t *client)
rwlock_t g_client_manager_rwlock
Reader-writer lock protecting the global client manager.
client_info_t * add_webrtc_client(server_context_t *server_ctx, acip_transport_t *transport, const char *client_ip, bool start_threads)
Register a WebRTC client with the server.
void * client_receive_thread(void *arg)
void stop_client_threads(client_info_t *client)
bool g_client_manager_rwlock_initialized
client_info_t * find_client_by_socket(socket_t socket)
Find client by socket descriptor using linear search.
int process_encrypted_packet(client_info_t *client, packet_type_t *type, void **data, size_t *len, uint32_t *sender_id)
int start_webrtc_client_threads(server_context_t *server_ctx, const char *client_id)
Start threads for a WebRTC client after crypto initialization.
client_info_t * find_client_by_id(const char *client_id)
Fast O(1) client lookup by ID using hash table.
client_manager_t g_client_manager
Global client manager singleton - central coordination point.
int remove_client(server_context_t *server_ctx, const char *client_id)
Transport instance structure.
Definition transport.h:214
Per-client state structure for server-side client management.
Global client manager structure for server-side client coordination.
client_info_t * clients_by_id
uthash head pointer for O(1) client_id -> client_info_t* lookups
mutex_t mutex
Legacy mutex (mostly replaced by rwlock)
int client_count
Current number of active clients.
Mutex type (POSIX: pthread_mutex_t with debug tracking)
Read-write lock type (POSIX: pthread_rwlock_t with debug tracking)
Definition rwlock.h:61
Server context - encapsulates all server state.