ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
server/main.h
Go to the documentation of this file.
1
41#pragma once
42
43#include <ascii-chat/atomic.h>
48#include "session/host.h"
50#include "stats.h"
51#include "client.h"
52#include "session/h265/server.h"
53
54/* ============================================================================
55 * Global Server State
56 * ============================================================================ */
57
65
73
81
89
96extern mixer_t *volatile g_audio_mixer;
97
104extern h265_server_context_t *volatile g_h265_server;
105
112
119
127
133extern size_t g_num_server_identity_keys;
134
142
148extern size_t g_num_whitelisted_clients;
149
173typedef struct server_context_t {
174 // TCP server instance
176
177 // Rate limiting
179
180 // Client management
183
184 // Server lifecycle
186
187 // Audio mixing
189
190 // Statistics
193
194 // Cryptography
199
200 // Session library integration
202
203 // H.265 codec integration
206
229int server_main(void);
⚛️ Atomic operations abstraction layer with debug tracking
#define MAX_CLIENTS
Maximum possible clients (static array size) - actual runtime limit set by –max-clients (1-32)
Definition limits.h:26
#define MAX_IDENTITY_KEYS
Maximum number of identity keys that can be loaded (for multi-key support)
size_t g_num_whitelisted_clients
Number of whitelisted clients.
bool g_server_encryption_enabled
Server encryption enabled flag.
public_key_t g_client_whitelist[MAX_CLIENTS]
Whitelist of allowed client public keys.
private_key_t g_server_private_key
Server's private key.
private_key_t g_server_identity_keys[MAX_IDENTITY_KEYS]
Array of server identity keys.
size_t g_num_server_identity_keys
Number of server identity keys in use.
🏠 Server-side session hosting abstraction
⚙️ Unified options parsing system for ascii-chat with builder pattern and lock-free access
Multi-Source Audio Mixing and Processing System.
🚦 Rate limiting API with pluggable backends
h265_server_context_t *volatile g_h265_server
Global H.265 codec server context.
rate_limiter_t * g_rate_limiter
Global connection rate limiter.
mixer_t *volatile g_audio_mixer
Global audio mixer.
int server_main(void)
Server mode entry point for unified binary.
rwlock_t g_client_manager_rwlock
Read-write lock protecting client manager.
atomic_t g_should_exit
Global application exit flag (shared across all modes)
Definition globals.c:34
client_manager_t g_client_manager
Global client manager.
Client-side H.265 media capture and encoding pipeline.
Server-side H.265 decoding pipeline for multi-client streams.
Server performance statistics tracking.
Atomic value wrapper for integral/boolean types.
Definition atomic.h:76
Global client manager structure for server-side client coordination.
Main mixer structure for multi-source audio processing.
Definition mixer.h:325
Mutex type (POSIX: pthread_mutex_t with debug tracking)
Private key structure (for server –ssh-key)
Definition key_types.h:91
Public key structure.
Definition key_types.h:69
Rate limiter structure.
Definition rate_limit.c:64
Read-write lock type (POSIX: pthread_rwlock_t with debug tracking)
Definition rwlock.h:61
Server context - encapsulates all server state.
tcp_server_t * tcp_server
TCP server managing connections.
session_host_t * session_host
Session host for discovery mode support.
bool encryption_enabled
Whether encryption is enabled.
client_manager_t * client_manager
Client registry and state.
mixer_t * audio_mixer
Multi-client audio mixer.
atomic_t * server_should_exit
Shutdown flag.
size_t num_whitelisted_clients
Number of whitelisted clients.
mutex_t * stats_mutex
Mutex protecting stats.
public_key_t * client_whitelist
Whitelisted client public keys.
h265_server_context_t * h265_server
H.265 decoder pool for all clients.
rwlock_t * client_manager_rwlock
RW lock protecting client manager.
private_key_t * server_private_key
Server's private key.
server_stats_t * stats
Server statistics.
rate_limiter_t * rate_limiter
Connection and packet rate limiter.
Server performance statistics structure.
Definition stats.h:47
Internal session host structure.
Definition host.c:106