|
ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
|
🌐 Discovery server TCP connection manager More...
Go to the source code of this file.
Macros | |
| #define | ACDS_CREATE_TRANSPORT(socket, transport_var) |
| #define | ACDS_DESTROY_TRANSPORT(transport_var) acip_transport_destroy(transport_var) |
Functions | |
| asciichat_error_t | acds_server_init (acds_server_t *server, const acds_config_t *config) |
| Initialize discovery server. | |
| asciichat_error_t | acds_server_run (acds_server_t *server) |
| Run discovery server main loop. | |
| void | acds_server_shutdown (acds_server_t *server) |
| Shutdown discovery server. | |
| void * | acds_client_handler (void *arg) |
| Per-client connection handler (thread entry point) | |
🌐 Discovery server TCP connection manager
Uses lib/network/tcp_server abstraction for:
ACDS-specific functionality:
Definition in file src/acds/server.c.
| #define ACDS_CREATE_TRANSPORT | ( | socket, | |
| transport_var | |||
| ) |
Definition at line 252 of file src/acds/server.c.
| #define ACDS_DESTROY_TRANSPORT | ( | transport_var | ) | acip_transport_destroy(transport_var) |
Definition at line 259 of file src/acds/server.c.
| void * acds_client_handler | ( | void * | arg | ) |
Per-client connection handler (thread entry point)
Processes ACIP packets from a connected client. Handles crypto handshake, then dispatches packets to session/signaling handlers.
| arg | Pointer to client connection context |
Definition at line 639 of file src/acds/server.c.
References acip_handle_acds_packet(), acip_acds_callbacks_t::app_ctx, ASCIICHAT_OK, buffer_pool_free(), tcp_client_context_t::client_socket, acds_client_data_t::joined_session, log_debug, log_error, log_info, log_warn, receive_packet(), tcp_server::running, SAFE_FREE, SAFE_MALLOC, socket_close(), tcp_client_context_get_ip(), acds_server_t::tcp_server, tcp_server_add_client(), tcp_server_get_client_count(), tcp_server_reject_client(), tcp_server_remove_client(), and tcp_client_context_t::user_data.
Referenced by acds_server_init().
| asciichat_error_t acds_server_init | ( | acds_server_t * | server, |
| const acds_config_t * | config | ||
| ) |
Initialize discovery server.
Loads or generates identity keys, opens database, creates session registry, and binds TCP socket.
| server | Server structure to initialize |
| config | Configuration from command-line parsing |
Definition at line 86 of file src/acds/server.c.
References acds_client_handler(), acds_config_t::address, acds_config_t::address6, ASCIICHAT_OK, acds_server_t::config, database_close(), database_init(), database_load_sessions(), acds_config_t::database_path, acds_server_t::db, ERROR_INVALID_PARAM, ERROR_MEMORY, log_info, log_warn, tcp_server_config_t::port, acds_config_t::port, acds_server_t::rate_limiter, rate_limiter_create_sqlite(), rate_limiter_destroy(), rate_limiter_set_sqlite_db(), SAFE_FREE, SAFE_MALLOC, session_registry_destroy(), session_registry_init(), acds_server_t::sessions, SET_ERRNO, acds_server_t::shutdown, acds_server_t::tcp_server, tcp_server_init(), tcp_server_shutdown(), thread_pool_create(), thread_pool_spawn(), and acds_server_t::worker_pool.
Referenced by main().
| asciichat_error_t acds_server_run | ( | acds_server_t * | server | ) |
Run discovery server main loop.
Accepts client connections and spawns handler threads. Blocks until shutdown signal received.
| server | Initialized server structure |
Definition at line 176 of file src/acds/server.c.
References acds_server_t::config, ERROR_INVALID_PARAM, log_info, acds_config_t::port, SET_ERRNO, acds_server_t::tcp_server, and tcp_server_run().
Referenced by main().
| void acds_server_shutdown | ( | acds_server_t * | server | ) |
Shutdown discovery server.
Closes listen socket, stops accepting connections, waits for handler threads to exit, closes database, and frees resources.
| server | Server structure to clean up |
Definition at line 187 of file src/acds/server.c.
References database_close(), acds_server_t::db, log_debug, log_info, log_warn, platform_sleep_ms(), acds_server_t::rate_limiter, rate_limiter_destroy(), SAFE_FREE, session_registry_destroy(), acds_server_t::sessions, acds_server_t::shutdown, acds_server_t::tcp_server, tcp_server_get_client_count(), tcp_server_shutdown(), thread_pool_destroy(), and acds_server_t::worker_pool.
Referenced by main().