ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
coordinator.h
Go to the documentation of this file.
1
15
16#pragma once
17
19#include "state.h"
20#include "topology.h"
21#include "metrics.h"
23#include <stdint.h>
24#include <stdbool.h>
25
37
42
59 consensus_coordinator_t **out_coordinator);
60
67
86
98 const consensus_topology_t *new_topology);
99
112 uint64_t deadline_ns);
113
127 const uint8_t sender_id[SESSION_ID_SIZE],
128 const participant_metrics_t *metrics, uint8_t num_metrics);
129
142 const uint8_t host_id[SESSION_ID_SIZE],
143 const uint8_t backup_id[SESSION_ID_SIZE]);
144
158 uint8_t out_host_id[SESSION_ID_SIZE],
159 uint8_t out_backup_id[SESSION_ID_SIZE]);
160
168
178
189
191typedef asciichat_error_t (*consensus_metrics_provider_fn)(void *, const uint8_t[16], participant_metrics_t *);
Synchronized per-thread pending error stacks and value snapshots. SET_ERRNO pushes,...
struct consensus_coordinator consensus_coordinator_t
Coordinates consensus work for a session: it tracks the participant topology, election state,...
void consensus_coordinator_set_metrics_provider(consensus_coordinator_t *, consensus_metrics_provider_fn, void *)
void consensus_coordinator_destroy(consensus_coordinator_t *coordinator)
Destroy coordinator and free resources.
asciichat_error_t consensus_coordinator_get_current_host(const consensus_coordinator_t *coordinator, uint8_t out_host_id[SESSION_ID_SIZE], uint8_t out_backup_id[SESSION_ID_SIZE])
Get currently elected host.
asciichat_error_t consensus_coordinator_create(const uint8_t my_id[SESSION_ID_SIZE], 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:56
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:36
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_on_election_result(consensus_coordinator_t *coordinator, const uint8_t host_id[SESSION_ID_SIZE], const uint8_t backup_id[SESSION_ID_SIZE])
Handle ELECTION_RESULT packet.
asciichat_error_t consensus_coordinator_on_stats_update(consensus_coordinator_t *coordinator, const uint8_t sender_id[SESSION_ID_SIZE], const participant_metrics_t *metrics, uint8_t num_metrics)
Handle STATS_UPDATE packet (metrics relayed from another participant).
asciichat_error_t(* consensus_metrics_provider_fn)(void *, const uint8_t[16], participant_metrics_t *)
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.
unsigned int uint32_t
Definition common.h:62
unsigned long long uint64_t
Definition common.h:63
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
Ring consensus metrics collection and wire protocol.
struct consensus_state consensus_state_t
State machine instance.
Ring consensus state machine.
consensus_state_machine_t
State machine lifecycle states.
Definition state.h:19
Coordinates consensus work for a session: it tracks the participant topology, election state,...
Definition coordinator.c:33
const consensus_topology_t * topology
Definition coordinator.c:35
uint8_t my_id[SESSION_ID_SIZE]
Definition coordinator.c:34
consensus_election_func_t election_func
Definition coordinator.c:37
struct consensus_topology consensus_topology_t
Ring topology for consensus participants.
Ring topology management.