ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
connections.h File Reference

Go to the source code of this file.

Data Structures

struct  server_connection_state_t

Functions

asciichat_error_t server_dispatch_packet (client_info_t *, packet_type_t, const void *, size_t)
asciichat_error_t server_send_state (acip_transport_t *)
void server_send_video (client_info_t *, acip_frame_workspace_t *, const char *, size_t, uint32_t, uint32_t, int, const acip_render_settings_t *)
asciichat_error_t server_send_audio (client_info_t *, const void *, size_t)

Variables

const network_connection_callbacks_t server_network_callbacks

Function Documentation

◆ server_dispatch_packet()

asciichat_error_t server_dispatch_packet ( client_info_t * client,
packet_type_t type,
const void * data,
size_t length )

Definition at line 740 of file src/server/client.c.

740 {
742 return handle_runtime_settings(client, data, length);
743 return acip_handle_server_packet(client->transport, type, data, length, client, &g_acip_server_callbacks);
744}
@ PACKET_TYPE_ACIP_SETTINGS_SYNC
Settings sync (Initiator -> Host -> All Participants).
Definition packet.h:485
asciichat_error_t acip_handle_server_packet(acip_transport_t *transport, packet_type_t type, const void *payload, size_t payload_len, void *client_ctx, const acip_server_callbacks_t *callbacks)
Handle incoming packet on server side.
Definition handlers.c:799
asciichat_error_t handle_runtime_settings(client_info_t *client, const void *data, size_t length)

References acip_handle_server_packet(), handle_runtime_settings(), PACKET_TYPE_ACIP_SETTINGS_SYNC, and client_info::transport.

◆ server_send_audio()

asciichat_error_t server_send_audio ( client_info_t * client,
const void * data,
size_t length )

Definition at line 131 of file connections.c.

131 {
132 mutex_lock(&client->send_mutex);
134 if (client->transport && !atomic_load_bool(&client->shutting_down) && atomic_load_bool(&client->event_ready))
136 fnv1a_hash_string(client->client_id));
137 mutex_unlock(&client->send_mutex);
138 return result;
139}
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
@ ASCIICHAT_OK
Definition error_codes.h:46
@ PACKET_TYPE_AUDIO_OPUS_BATCH
Batched Opus-encoded audio frames.
Definition packet.h:398
asciichat_error_t packet_send_via_transport(acip_transport_t *transport, packet_type_t type, const void *payload, size_t payload_len, uint32_t client_id)
Definition send.c:190
char client_id[MAX_CLIENT_ID_LEN]

References ASCIICHAT_OK, client_info::client_id, client_info::event_ready, packet_send_via_transport(), PACKET_TYPE_AUDIO_OPUS_BATCH, client_info::send_mutex, client_info::shutting_down, and client_info::transport.

◆ server_send_state()

asciichat_error_t server_send_state ( acip_transport_t * transport)

Definition at line 777 of file src/server/client.c.

777 {
778 server_state_packet_t state = server_state_snapshot();
779 return acip_send_server_state(transport, &state);
780}
asciichat_error_t acip_send_server_state(acip_transport_t *transport, const server_state_packet_t *state)
Send server state update to client (server → client).
Server state packet structure.
Definition packet.h:746

References acip_send_server_state().

◆ server_send_video()

void server_send_video ( client_info_t * client,
acip_frame_workspace_t * workspace,
const char * data,
size_t length,
uint32_t width,
uint32_t height,
int sources,
const acip_render_settings_t * rendering )

Definition at line 113 of file connections.c.

114 {
115 mutex_lock(&client->send_mutex);
116 acip_transport_t *transport = client->transport;
117 if (transport && !atomic_load_bool(&client->shutting_down) && atomic_load_bool(&client->event_ready)) {
118 if (sources > 0 && atomic_load_u64(&client->last_sent_grid_sources) != (uint64_t)sources) {
119 acip_send_clear_console(transport);
120 atomic_store_u64(&client->last_sent_grid_sources, (uint64_t)sources);
121 }
123 transport, workspace, data, length, width, height, rendering,
124 (rendering->caps.capabilities & TERM_CAP_MATRIX_RAIN) ? FRAME_RENDER_CONTRACT_RAIN : 0,
125 client->client_id) == ASCIICHAT_OK)
126 atomic_fetch_add_u64(&client->frames_sent_count, 1);
127 }
128 mutex_unlock(&client->send_mutex);
129}
unsigned int height
Definition fft.c:23
unsigned int width
Definition fft.c:23
unsigned long long uint64_t
Definition common.h:63
struct acip_transport acip_transport_t
Forward declaration of ACIP transport.
Definition host.h:506
asciichat_error_t acip_send_ascii_frame_contract(acip_transport_t *transport, acip_frame_workspace_t *workspace, const char *frame_data, size_t frame_size, uint32_t width, uint32_t height, const acip_render_settings_t *settings, uint32_t effects, const char *client_id)
asciichat_error_t acip_send_clear_console(acip_transport_t *transport)
Send clear console command to client (server → client).
#define FRAME_RENDER_CONTRACT_RAIN

References acip_send_ascii_frame_contract(), acip_send_clear_console(), ASCIICHAT_OK, acip_render_settings_t::caps, client_info::client_id, client_info::event_ready, FRAME_RENDER_CONTRACT_RAIN, client_info::frames_sent_count, height, client_info::last_sent_grid_sources, client_info::send_mutex, client_info::shutting_down, client_info::transport, and width.

Referenced by client_video_render_thread().

Variable Documentation

◆ server_network_callbacks

const network_connection_callbacks_t server_network_callbacks
extern

Definition at line 110 of file connections.c.

110 {server_connection_open, server_connection_packet,
111 server_connection_closing, server_connection_closed};

Referenced by server_main().