|
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.
Data Structures | |
| struct | acds_client_data_t |
| Per-client connection data. More... | |
| struct | acds_server_t |
| Discovery server state. More... | |
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
Implements the core TCP server for the discovery service. Handles client connections, crypto handshakes, and dispatches packets to appropriate handlers (session management, WebRTC signaling).
Definition in file src/acds/server.h.
| 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().