ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
discovery.h
Go to the documentation of this file.
1
64#pragma once
65
66#include <stdint.h>
67#include <stdbool.h>
68#include <time.h>
69#include "../../common.h"
70#include "../../discovery/strings.h" // For is_session_string()
71#include "../../ui/mdns.h" // For ui_mdns_server_t
72
73#ifdef __cplusplus
74extern "C" {
75#endif
76
77// ============================================================================
78// Discovery Result
79// ============================================================================
80
86typedef struct {
87 bool success;
88 uint8_t host_pubkey[32];
89 char server_address[256];
91 enum {
92 DISCOVERY_SOURCE_MDNS = 0,
93 DISCOVERY_SOURCE_ACDS = 1,
94 } source;
95
96 // For mDNS results
97 char mdns_service_name[256];
98 char mdns_hostname[256];
99
100 // For ACDS results (if applicable)
103
104 // Error details
106 char error_message[256];
108
112typedef struct {
113 // Verification options
116
117 // Connection details
118 char acds_server[256];
119 uint16_t acds_port;
120
121 // Timeouts
124
125 // Client identity (for SESSION_JOIN)
128 const char *password;
130
143
144// ============================================================================
145// Parallel Discovery
146// ============================================================================
147
185asciichat_error_t discover_session_parallel(const char *session_string, const discovery_config_t *config,
186 discovery_result_t *result);
187
188// ============================================================================
189// mDNS Query API (Core Module)
190// ============================================================================
191
206ui_mdns_server_t *discovery_mdns_query(int timeout_ms, int max_servers, bool quiet, int *out_count);
207
212
213// ============================================================================
214// Utility Functions
215// ============================================================================
216
225void pubkey_to_hex(const uint8_t pubkey[32], char hex_out[65]);
226
236asciichat_error_t hex_to_pubkey(const char *hex_str, uint8_t pubkey_out[32]);
237
238#ifdef __cplusplus
239}
240#endif
void pubkey_to_hex(const uint8_t pubkey[32], char hex_out[65])
Convert Ed25519 public key to hex string.
Definition discovery.c:49
asciichat_error_t hex_to_pubkey(const char *hex_str, uint8_t pubkey_out[32])
Convert hex string to Ed25519 public key.
Definition discovery.c:58
void discovery_mdns_destroy(ui_mdns_server_t *servers)
Free memory from mDNS discovery results.
Definition discovery.c:265
ui_mdns_server_t * discovery_mdns_query(int timeout_ms, int max_servers, bool quiet, int *out_count)
Discover ascii-chat servers on local network via mDNS.
Definition discovery.c:179
void discovery_config_init_defaults(discovery_config_t *config)
Initialize discovery config with defaults.
Definition discovery.c:494
asciichat_error_t discover_session_parallel(const char *session_string, const discovery_config_t *config, discovery_result_t *result)
Look up session in parallel on mDNS and ACDS.
Definition discovery.c:516
unsigned short uint16_t
Definition common.h:57
unsigned int uint32_t
Definition common.h:58
unsigned char uint8_t
Definition common.h:56
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
uint8_t session_id[16]
uint8_t participant_id[16]
ClangTool/LibTooling compatibility shim for stdbool.h.
Configuration for discovery session.
const uint8_t * client_seckey
Client's Ed25519 secret key (can be NULL)
Definition discovery.h:127
uint32_t acds_timeout_ms
ACDS lookup timeout (default: 5000ms)
Definition discovery.h:123
uint32_t mdns_timeout_ms
mDNS search timeout (default: 2000ms)
Definition discovery.h:122
bool insecure_mode
Allow no verification (–acds-insecure flag)
Definition discovery.h:115
const uint8_t * expected_pubkey
Expected server pubkey (NULL = no verification)
Definition discovery.h:114
const uint8_t * client_pubkey
Client's Ed25519 public key (can be NULL)
Definition discovery.h:126
Result from session discovery.
Definition discovery.h:86
uint16_t server_port
Server port (typically 27224)
Definition discovery.h:90
asciichat_error_t error
Error code if !success.
Definition discovery.h:105
bool success
Discovery succeeded.
Definition discovery.h:87
Discovered server information from mDNS.
Definition ui/mdns.h:57
⏱️ High-precision timing utilities using sokol_time.h and uthash