ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
coordinator.h
Go to the documentation of this file.
1
16#pragma once
17
18#include "state.h"
19#include "topology.h"
20#include "metrics.h"
22#include <stdint.h>
23#include <stdbool.h>
24
36
41
57 consensus_coordinator_t **out_coordinator);
58
65
84
96 const consensus_topology_t *new_topology);
97
110 uint64_t deadline_ns);
111
125 const uint8_t sender_id[16],
126 const participant_metrics_t *metrics, uint8_t num_metrics);
127
140 const uint8_t host_id[16], const uint8_t backup_id[16]);
141
155 uint8_t out_host_id[16], uint8_t out_backup_id[16]);
156
164
174
⚠️‼️ Comprehensive thread-local error context system for ascii-chat
asciichat_error_t consensus_coordinator_on_stats_update(consensus_coordinator_t *coordinator, const uint8_t sender_id[16], const participant_metrics_t *metrics, uint8_t num_metrics)
Handle STATS_UPDATE packet (metrics relayed from another participant)
void consensus_coordinator_destroy(consensus_coordinator_t *coordinator)
Destroy coordinator and free resources.
Definition coordinator.c:92
int consensus_coordinator_get_metrics_count(const consensus_coordinator_t *coordinator)
Get count of metrics collected in current round.
asciichat_error_t consensus_coordinator_on_ring_members(consensus_coordinator_t *coordinator, const consensus_topology_t *new_topology)
Update ring topology when participants change.
asciichat_error_t(* consensus_election_func_t)(void *context, consensus_state_t *state)
Election callback function type.
Definition coordinator.h:35
asciichat_error_t consensus_coordinator_process(consensus_coordinator_t *coordinator, uint32_t timeout_ms)
Main orchestration loop - call periodically.
uint64_t consensus_coordinator_time_until_next_round(const consensus_coordinator_t *coordinator)
Get time until next round is due.
consensus_state_machine_t consensus_coordinator_get_state(const consensus_coordinator_t *coordinator)
Get current coordinator state.
asciichat_error_t consensus_coordinator_get_current_host(const consensus_coordinator_t *coordinator, uint8_t out_host_id[16], uint8_t out_backup_id[16])
Get currently elected host.
asciichat_error_t consensus_coordinator_on_collection_start(consensus_coordinator_t *coordinator, uint32_t round_id, uint64_t deadline_ns)
Handle STATS_COLLECTION_START packet.
asciichat_error_t consensus_coordinator_on_election_result(consensus_coordinator_t *coordinator, const uint8_t host_id[16], const uint8_t backup_id[16])
Handle ELECTION_RESULT packet.
asciichat_error_t consensus_coordinator_create(const uint8_t my_id[16], const consensus_topology_t *topology, consensus_election_func_t election_func, void *election_context, consensus_coordinator_t **out_coordinator)
Initialize ring consensus coordinator.
Definition coordinator.c:43
unsigned int uint32_t
Definition common.h:58
unsigned long long uint64_t
Definition common.h:59
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
Ring consensus metrics collection and wire protocol.
Ring consensus state machine.
consensus_state_machine_t
State machine lifecycle states.
Definition state.h:18
ClangTool/LibTooling compatibility shim for stdbool.h.
Internal coordinator structure.
Definition coordinator.c:22
const consensus_topology_t * topology
Definition coordinator.c:24
consensus_election_func_t election_func
Definition coordinator.c:26
State machine instance.
Definition state.c:24
Ring topology for consensus participants.
Definition topology.c:17
Ring topology management.