ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
negotiate.h
Go to the documentation of this file.
1
10#pragma once
11
14#include "nat.h"
16#include <stdbool.h>
17#include <stdint.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
36
61
70 bool is_initiator);
71
79asciichat_error_t negotiate_start_detection(negotiate_ctx_t *ctx, const char *stun_server, uint16_t local_port);
80
88
99
106
113
120
140 const uint8_t participant_ids[][16], size_t num_participants,
141 uint8_t out_future_host_id[16]);
142
143#ifdef __cplusplus
144}
145#endif
⚠️‼️ Comprehensive thread-local error context system for ascii-chat
acip_nat_quality_t
Definition acds.h:891
unsigned short uint16_t
Definition common.h:57
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
NAT quality detection for discovery mode host selection.
asciichat_error_t negotiate_start_detection(negotiate_ctx_t *ctx, const char *stun_server, uint16_t local_port)
Start NAT detection phase.
Definition negotiate.c:40
asciichat_error_t negotiate_receive_peer_quality(negotiate_ctx_t *ctx, const acip_nat_quality_t *peer_quality)
Process received peer NAT quality.
Definition negotiate.c:67
void negotiate_init(negotiate_ctx_t *ctx, const uint8_t session_id[16], const uint8_t participant_id[16], bool is_initiator)
Initialize negotiation context.
Definition negotiate.c:17
asciichat_error_t negotiate_determine_result(negotiate_ctx_t *ctx)
Determine negotiation result.
Definition negotiate.c:111
negotiate_state_t
Negotiation state.
Definition negotiate.h:26
@ NEGOTIATE_STATE_INIT
Initial state.
Definition negotiate.h:27
@ NEGOTIATE_STATE_WE_HOST
We won, becoming host.
Definition negotiate.h:31
@ NEGOTIATE_STATE_THEY_HOST
They won, connecting as client.
Definition negotiate.h:32
@ NEGOTIATE_STATE_WAITING_PEER
Waiting for peer's NAT quality.
Definition negotiate.h:29
@ NEGOTIATE_STATE_FAILED
Negotiation failed.
Definition negotiate.h:33
@ NEGOTIATE_STATE_COMPARING
Comparing qualities.
Definition negotiate.h:30
@ NEGOTIATE_STATE_COMPLETE
Negotiation complete.
Definition negotiate.h:34
@ NEGOTIATE_STATE_DETECTING_NAT
Running NAT detection.
Definition negotiate.h:28
bool negotiate_is_complete(const negotiate_ctx_t *ctx)
Check if negotiation is complete.
Definition negotiate.c:170
asciichat_error_t negotiate_get_error(const negotiate_ctx_t *ctx)
Get negotiation error (if failed)
Definition negotiate.c:176
asciichat_error_t negotiate_elect_future_host(const acip_nat_quality_t collected_quality[], const uint8_t participant_ids[][16], size_t num_participants, uint8_t out_future_host_id[16])
Elect future host from multiple participants (NEW P2P design)
Definition negotiate.c:182
negotiate_state_t negotiate_get_state(const negotiate_ctx_t *ctx)
Get current negotiation state.
Definition negotiate.c:164
Cross-platform socket interface for ascii-chat.
uint8_t session_id[16]
uint8_t participant_id[16]
ClangTool/LibTooling compatibility shim for stdbool.h.
NAT quality assessment result.
Definition nat.h:27
Host negotiation context.
Definition negotiate.h:40
bool we_are_host
True if we should become host.
Definition negotiate.h:56
uint8_t connection_type
acip_connection_type_t
Definition negotiate.h:59
asciichat_error_t error
Definition negotiate.h:53
nat_quality_t our_quality
Our NAT quality.
Definition negotiate.h:47
bool peer_quality_received
Have we received peer's quality?
Definition negotiate.h:49
nat_quality_t peer_quality
Peer's NAT quality (when received)
Definition negotiate.h:48
bool is_initiator
Did we create this session?
Definition negotiate.h:44
negotiate_state_t state
Definition negotiate.h:52
uint16_t host_port
Host's port.
Definition negotiate.h:58