ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
discovery.h
Go to the documentation of this file.
1
63
64#pragma once
65
66/* Storage capacities in elements; text buffers include the terminating NUL. */
67#define NETWORK_MDNS_DISCOVERY_ERROR_MESSAGE_BUFFER_SIZE 256
68
71
72#include <stdint.h>
73#include <stdbool.h>
74#include <time.h>
75#include "../../common.h"
76#include "../../discovery/strings.h" // For is_session_string()
77#include "../../tui/mdns.h" // For ui_mdns_server_t
78
79#ifdef __cplusplus
80extern "C" {
81#endif
82
83// ============================================================================
84// Discovery Result
85// ============================================================================
86
116
121typedef struct {
122 // Verification options
125
126 // Connection details
129
130 // Timeouts
133
134 // Client identity (for SESSION_JOIN)
137 const char *password;
139
152
153// ============================================================================
154// Parallel Discovery
155// ============================================================================
156
194asciichat_error_t discover_session_parallel(const char *session_string, const discovery_config_t *config,
195 discovery_result_t *result);
196
197// ============================================================================
198// mDNS Query API (Core Module)
199// ============================================================================
200
215ui_mdns_server_t *discovery_mdns_query(int timeout_ms, int max_servers, bool quiet, int *out_count);
216
221
222// ============================================================================
223// Utility Functions
224// ============================================================================
225
234void pubkey_to_hex(const uint8_t pubkey[ED25519_PUBLIC_KEY_SIZE], char hex_out[HEX_STRING_SIZE_32]);
235
245asciichat_error_t hex_to_pubkey(const char *hex_str, uint8_t pubkey_out[ED25519_PUBLIC_KEY_SIZE]);
246
247#ifdef __cplusplus
248}
249#endif
Application limits and constraints.
⚙️ Common definitions, error codes, macros, and types shared throughout the application
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:67
void discovery_mdns_destroy(ui_mdns_server_t *servers)
Free memory from mDNS discovery results.
Definition discovery.c:288
void pubkey_to_hex(const uint8_t pubkey[32], char hex_out[(32 *2+1)])
Convert Ed25519 public key to hex string.
Definition discovery.c:58
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:192
void discovery_config_init_defaults(discovery_config_t *config)
Initialize discovery config with defaults.
Definition discovery.c:519
#define NETWORK_MDNS_DISCOVERY_ERROR_MESSAGE_BUFFER_SIZE
Definition discovery.h:67
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:541
audio_visualization_source_t source
Definition fft.c:24
unsigned short uint16_t
Definition common.h:61
unsigned int uint32_t
Definition common.h:62
unsigned char uint8_t
Definition common.h:60
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
#define SESSION_ID_SIZE
#define HOSTNAME_BUFFER_SIZE
#define ED25519_PUBLIC_KEY_SIZE
Ed25519 public key size in bytes.
Definition sizes.h:33
#define HEX_STRING_SIZE_32
Hex string size for 32-byte values (64 hex chars + null terminator).
Definition sizes.h:154
Configuration for discovery session.
const uint8_t * client_seckey
Client's Ed25519 secret key (can be NULL).
Definition discovery.h:136
uint32_t acds_timeout_ms
ACDS lookup timeout (default: 5000ms).
Definition discovery.h:132
uint32_t mdns_timeout_ms
mDNS search timeout (default: 2000ms)
Definition discovery.h:131
uint16_t acds_port
ACDS port (default: 27225).
const char * password
Session password (optional).
char acds_server[256]
ACDS server address (e.g., "localhost" or "discovery.ascii-chat.com").
Definition discovery.h:127
bool insecure_mode
Allow no verification (–acds-insecure flag).
Definition discovery.h:124
const uint8_t * expected_pubkey
Expected server pubkey (NULL = no verification).
Definition discovery.h:123
const uint8_t * client_pubkey
Client's Ed25519 public key (can be NULL).
Definition discovery.h:135
Result from session discovery.
Definition discovery.h:92
char mdns_service_name[256]
mDNS service instance name (e.g., "swift-river-mountain")
Definition discovery.h:103
uint16_t server_port
Server port (typically 27224).
Definition discovery.h:96
uint8_t host_pubkey[32]
Ed25519 public key of discovered server.
Definition discovery.h:94
asciichat_error_t error
Error code if !success.
Definition discovery.h:111
uint8_t participant_id[16]
Assigned participant ID (from SESSION_JOIN).
Definition discovery.h:108
uint8_t session_id[16]
ACDS session UUID.
Definition discovery.h:107
char mdns_hostname[256]
mDNS hostname (e.g., "mycomputer.local")
Definition discovery.h:104
char server_address[256]
Server IP or hostname.
Definition discovery.h:95
bool success
Discovery succeeded.
Definition discovery.h:93
@ DISCOVERY_SOURCE_ACDS
Found via ACDS (internet).
Definition discovery.h:99
@ DISCOVERY_SOURCE_MDNS
Found via mDNS (local LAN).
Definition discovery.h:98
char error_message[256]
Human-readable error (if !success).
Definition discovery.h:112
Discovered server information from mDNS.
Definition tui/mdns.h:66
⏱️ High-precision timing utilities using sokol_time.h and uthash
mDNS service discovery UI with terminal_screen rendering