ascii-chat 0.8.38
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
server/main.h
Go to the documentation of this file.
1
41#pragma once
42
43#include <ascii-chat/network/rate_limit/rate_limit.h>
44#include <ascii-chat/network/tcp/server.h>
45#include <ascii-chat/audio/mixer.h>
46#include <ascii-chat/crypto/key_types.h>
47#include <ascii-chat/session/host.h>
48#include <ascii-chat/options/options.h>
49#include "stats.h"
50#include "client.h"
51
52/* ============================================================================
53 * Global Server State
54 * ============================================================================ */
55
62extern rate_limiter_t *g_rate_limiter;
63
71
78extern rwlock_t g_client_manager_rwlock;
79
86extern atomic_bool g_server_should_exit;
87
94extern mixer_t *volatile g_audio_mixer;
95
102
108extern private_key_t g_server_private_key;
109
116extern private_key_t g_server_identity_keys[MAX_IDENTITY_KEYS];
117
123extern size_t g_num_server_identity_keys;
124
131extern public_key_t g_client_whitelist[MAX_CLIENTS];
132
138extern size_t g_num_whitelisted_clients;
139
163typedef struct server_context_t {
164 // TCP server instance
165 tcp_server_t *tcp_server;
166
167 // Rate limiting
168 rate_limiter_t *rate_limiter;
169
170 // Client management
173
174 // Server lifecycle
175 atomic_bool *server_should_exit;
176
177 // Audio mixing
178 mixer_t *audio_mixer;
179
180 // Statistics
182 mutex_t *stats_mutex;
183
184 // Cryptography
186 private_key_t *server_private_key;
187 public_key_t *client_whitelist;
189
190 // Session library integration
193
216int server_main(void);
Per-client state management and lifecycle orchestration.
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.
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_bool g_server_should_exit
Server shutdown flag.
client_manager_t g_client_manager
Global client manager.
Server performance statistics tracking.
Global client manager structure for server-side client coordination.
Definition client.h:63
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.
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.
rwlock_t * client_manager_rwlock
RW lock protecting client manager.
atomic_bool * server_should_exit
Shutdown flag.
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:82