ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
state.h
Go to the documentation of this file.
1
7#pragma once
8
9#include "metrics.h"
10#include "topology.h"
12#include <stdint.h>
13#include <stdbool.h>
14
28
33
46 consensus_state_t **out_state);
47
54
65
77
88
102
113
121
132
143
151
159
171 participant_metrics_t *out_metrics);
⚠️‼️ Comprehensive thread-local error context system for ascii-chat
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.
asciichat_error_t consensus_state_start_collection(consensus_state_t *state)
Transition to COLLECTION_START state.
Definition state.c:83
asciichat_error_t consensus_state_compute_election(consensus_state_t *state)
Run election algorithm and transition to ELECTION_COMPLETE.
Definition state.c:144
asciichat_error_t consensus_state_get_metric_at(const consensus_state_t *state, int index, participant_metrics_t *out_metrics)
Get collected metrics at index.
Definition state.c:257
bool consensus_state_is_leader(const consensus_state_t *state)
Check if we are the elected leader for this round.
Definition state.c:243
asciichat_error_t consensus_state_get_elected_backup(const consensus_state_t *state, uint8_t out_backup_id[16])
Get elected backup host ID from last election.
Definition state.c:230
void consensus_state_destroy(consensus_state_t *state)
Destroy state machine and free resources.
Definition state.c:74
consensus_state_machine_t
State machine lifecycle states.
Definition state.h:18
@ CONSENSUS_STATE_COLLECTION_COMPLETE
Definition state.h:22
@ CONSENSUS_STATE_COLLECTION_START
Definition state.h:20
@ CONSENSUS_STATE_ELECTION_COMPLETE
Definition state.h:25
@ CONSENSUS_STATE_FAILED
Definition state.h:26
@ CONSENSUS_STATE_ELECTING
Definition state.h:24
@ CONSENSUS_STATE_ELECTION_START
Definition state.h:23
@ CONSENSUS_STATE_IDLE
Definition state.h:19
@ CONSENSUS_STATE_COLLECTING
Definition state.h:21
asciichat_error_t consensus_state_get_elected_host(const consensus_state_t *state, uint8_t out_host_id[16])
Get elected host ID from last election.
Definition state.c:217
asciichat_error_t consensus_state_reset_to_idle(consensus_state_t *state)
Transition back to IDLE from ELECTION_COMPLETE.
Definition state.c:197
asciichat_error_t consensus_state_collection_complete(consensus_state_t *state)
Transition to COLLECTION_COMPLETE state.
Definition state.c:125
int consensus_state_get_metrics_count(const consensus_state_t *state)
Get count of metrics collected in current round.
Definition state.c:250
asciichat_error_t consensus_state_create(const uint8_t my_id[16], const consensus_topology_t *topology, consensus_state_t **out_state)
Initialize state machine with topology.
Definition state.c:50
consensus_state_machine_t consensus_state_get_current_state(const consensus_state_t *state)
Get current state machine state.
Definition state.c:210
asciichat_error_t consensus_state_add_metrics(consensus_state_t *state, const participant_metrics_t *metrics)
Add collected metrics from a participant.
Definition state.c:100
ClangTool/LibTooling compatibility shim for stdbool.h.
State machine instance.
Definition state.c:24
uint8_t my_id[16]
Definition state.c:27
participant_metrics_t * metrics
Definition state.c:30
consensus_topology_t * topology
Definition state.c:26
Ring topology for consensus participants.
Definition topology.c:17
Ring topology management.