24 app_client_t *client = SAFE_MALLOC(
sizeof(app_client_t), app_client_t *);
26 log_error(
"Failed to allocate app_client_t");
31 memset(client, 0,
sizeof(*client));
34 client->active_transport = NULL;
35 client->transport_type = ACIP_TRANSPORT_TCP;
36 client->tcp_client = NULL;
37 client->ws_client = NULL;
40 memset(&client->audio_ctx, 0,
sizeof(client->audio_ctx));
41 memset(client->audio_send_queue, 0,
sizeof(client->audio_send_queue));
42 client->audio_send_queue_head = 0;
43 client->audio_send_queue_tail = 0;
44 client->audio_send_queue_initialized =
false;
45 atomic_store(&client->audio_sender_should_exit,
false);
46 client->audio_capture_thread_created =
false;
47 client->audio_sender_thread_created =
false;
48 atomic_store(&client->audio_capture_thread_exited,
false);
51 if (
mutex_init(&client->audio_send_queue_mutex) != 0) {
52 log_error(
"Failed to initialize audio queue mutex");
57 if (cond_init(&client->audio_send_queue_cond) != 0) {
58 log_error(
"Failed to initialize audio queue cond");
65 client->data_thread_created =
false;
66 atomic_store(&client->data_thread_exited,
false);
67 client->last_active_count = 0;
68 client->server_state_initialized =
false;
69 client->should_clear_before_next_frame =
false;
70 client->my_client_id = 0;
71 client->encryption_enabled =
false;
74 client->capture_thread_created =
false;
75 atomic_store(&client->capture_thread_exited,
false);
78 client->ping_thread_created =
false;
79 atomic_store(&client->ping_thread_exited,
false);
82 client->has_tty =
false;
83 atomic_store(&client->is_first_frame_of_connection,
false);
84 memset(&client->tty_info, 0,
sizeof(client->tty_info));
87 memset(&client->crypto_ctx, 0,
sizeof(client->crypto_ctx));
88 client->crypto_initialized =
false;
90 log_debug(
"App client created");