ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
host.c File Reference

🏠 Server-side session hosting implementation More...

Go to the source code of this file.

Data Structures

struct  session_host_client_t
 Internal client record structure. More...
 
struct  session_host
 Internal session host structure. More...
 

Macros

#define SESSION_HOST_DEFAULT_MAX_CLIENTS   32
 Default maximum clients.
 

Typedefs

typedef struct session_host session_host_t
 Internal session host structure.
 

Functions

session_host_t * session_host_create (const session_host_config_t *config)
 Create a new session host.
 
void session_host_destroy (session_host_t *host)
 Destroy session host and free resources.
 
asciichat_error_t session_host_start (session_host_t *host)
 Start accepting client connections.
 
void session_host_stop (session_host_t *host)
 Stop accepting connections and disconnect all clients.
 
bool session_host_is_running (session_host_t *host)
 Check if host is running.
 
uint32_t session_host_add_client (session_host_t *host, socket_t socket, const char *ip, int port)
 Add a client from an accepted socket.
 
uint32_t session_host_add_memory_participant (session_host_t *host)
 Add a memory participant (host's own media)
 
asciichat_error_t session_host_inject_frame (session_host_t *host, uint32_t participant_id, const image_t *frame)
 Inject a video frame from memory participant.
 
asciichat_error_t session_host_inject_audio (session_host_t *host, uint32_t participant_id, const float *samples, size_t count)
 Inject audio samples from memory participant.
 
asciichat_error_t session_host_remove_client (session_host_t *host, uint32_t client_id)
 Remove a client by ID.
 
asciichat_error_t session_host_find_client (session_host_t *host, uint32_t client_id, session_host_client_info_t *info)
 Find a client by ID.
 
int session_host_get_client_count (session_host_t *host)
 Get number of connected clients.
 
int session_host_get_client_ids (session_host_t *host, uint32_t *ids, int max_ids)
 Get list of all connected client IDs.
 
asciichat_error_t session_host_broadcast_frame (session_host_t *host, const char *frame)
 Broadcast ASCII frame to all clients.
 
asciichat_error_t session_host_send_frame (session_host_t *host, uint32_t client_id, const char *frame)
 Send ASCII frame to a specific client.
 
asciichat_error_t session_host_set_display (session_host_t *host, struct session_display_ctx *display)
 Set display context for local frame rendering.
 
asciichat_error_t session_host_start_render (session_host_t *host)
 Start media rendering thread (video mixing and audio distribution)
 
void session_host_stop_render (session_host_t *host)
 Stop media rendering thread.
 
asciichat_error_t session_host_set_client_transport (session_host_t *host, uint32_t client_id, acip_transport_t *transport)
 Set an alternative transport for a specific client in the host.
 
acip_transport_t * session_host_get_client_transport (session_host_t *host, uint32_t client_id)
 Get the current transport for a specific client in the host.
 
bool session_host_client_has_transport (session_host_t *host, uint32_t client_id)
 Check if a specific client has an active alternative transport.
 

Detailed Description

🏠 Server-side session hosting implementation

Implements the session host abstraction for server-side client management and session coordination.

NOTE: This is a stub implementation that provides the API structure. Full implementation will integrate with existing server code in a future phase.

Author
Zachary Fogg me@zf.nosp@m.o.gg
Date
January 2026

Definition in file host.c.

Macro Definition Documentation

◆ SESSION_HOST_DEFAULT_MAX_CLIENTS

#define SESSION_HOST_DEFAULT_MAX_CLIENTS   32

Default maximum clients.

Definition at line 54 of file host.c.

Typedef Documentation

◆ session_host_t

typedef struct session_host session_host_t

Internal session host structure.

Contains server state, client list, and callback configuration.