ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
server_context_t Struct Reference

Server context - encapsulates all server state. More...

#include <src/server/main.h>

Data Fields

tcp_server_ttcp_server
 TCP server managing connections.
 
rate_limiter_trate_limiter
 Connection and packet rate limiter.
 
client_manager_tclient_manager
 Client registry and state.
 
rwlock_tclient_manager_rwlock
 RW lock protecting client manager.
 
atomic_bool * server_should_exit
 Shutdown flag.
 
mixer_taudio_mixer
 Multi-client audio mixer.
 
server_stats_tstats
 Server statistics.
 
mutex_tstats_mutex
 Mutex protecting stats.
 
bool encryption_enabled
 Whether encryption is enabled.
 
private_key_tserver_private_key
 Server's private key.
 
public_key_tclient_whitelist
 Whitelisted client public keys.
 
size_t num_whitelisted_clients
 Number of whitelisted clients.
 

Detailed Description

Server context - encapsulates all server state.

This structure holds all server-wide state that was previously stored in global variables. It's passed to client handlers via tcp_server user_data, reducing global state and improving modularity.

DESIGN RATIONALE:

  • Reduces global state: All server state in one place
  • Improves testability: Can create multiple independent server instances
  • Better encapsulation: Clear ownership of resources
  • Thread-safe: Context is read-only after initialization

LIFETIME:

Definition at line 81 of file server/main.h.

Field Documentation

◆ audio_mixer

mixer_t* server_context_t::audio_mixer

Multi-client audio mixer.

Definition at line 96 of file server/main.h.

◆ client_manager

client_manager_t* server_context_t::client_manager

Client registry and state.

Definition at line 89 of file server/main.h.

◆ client_manager_rwlock

rwlock_t* server_context_t::client_manager_rwlock

RW lock protecting client manager.

Definition at line 90 of file server/main.h.

◆ client_whitelist

public_key_t* server_context_t::client_whitelist

Whitelisted client public keys.

Definition at line 105 of file server/main.h.

◆ encryption_enabled

bool server_context_t::encryption_enabled

Whether encryption is enabled.

Definition at line 103 of file server/main.h.

◆ num_whitelisted_clients

size_t server_context_t::num_whitelisted_clients

Number of whitelisted clients.

Definition at line 106 of file server/main.h.

◆ rate_limiter

rate_limiter_t* server_context_t::rate_limiter

Connection and packet rate limiter.

Definition at line 86 of file server/main.h.

◆ server_private_key

private_key_t* server_context_t::server_private_key

Server's private key.

Definition at line 104 of file server/main.h.

◆ server_should_exit

atomic_bool* server_context_t::server_should_exit

Shutdown flag.

Definition at line 93 of file server/main.h.

◆ stats

server_stats_t* server_context_t::stats

Server statistics.

Definition at line 99 of file server/main.h.

◆ stats_mutex

mutex_t* server_context_t::stats_mutex

Mutex protecting stats.

Definition at line 100 of file server/main.h.

◆ tcp_server

tcp_server_t* server_context_t::tcp_server

TCP server managing connections.

Definition at line 83 of file server/main.h.

Referenced by create_client_render_threads(), and server_main().


The documentation for this struct was generated from the following file: