ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
state.h
Go to the documentation of this file.
1
6
7#pragma once
8
10#include "metrics.h"
11#include "topology.h"
13#include <stdint.h>
14#include <stdbool.h>
15
29
34
47 consensus_state_t **out_state);
48
55
66
77asciichat_error_t consensus_state_add_metrics(consensus_state_t *state, const participant_metrics_t *metrics);
78
89
103
114
122
133 uint8_t out_host_id[SESSION_ID_SIZE]);
134
145 uint8_t out_backup_id[SESSION_ID_SIZE]);
146
154
162
174 participant_metrics_t *out_metrics);
175
Synchronized per-thread pending error stacks and value snapshots. SET_ERRNO pushes,...
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.
static bool size_t index
Definition queries.h:8
struct consensus_state consensus_state_t
State machine instance.
asciichat_error_t consensus_state_start_collection(consensus_state_t *state)
Transition to COLLECTION_START state.
Definition state.c:76
asciichat_error_t consensus_state_store_election(consensus_state_t *state, int best, int backup)
Definition state.c:154
asciichat_error_t consensus_state_compute_election(consensus_state_t *state)
Run election algorithm and transition to ELECTION_COMPLETE.
Definition state.c:137
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:230
asciichat_error_t consensus_state_create(const uint8_t my_id[SESSION_ID_SIZE], const consensus_topology_t *topology, consensus_state_t **out_state)
Initialize state machine with topology.
Definition state.c:43
bool consensus_state_is_leader(const consensus_state_t *state)
Check if we are the elected leader for this round.
Definition state.c:216
void consensus_state_destroy(consensus_state_t *state)
Destroy state machine and free resources.
Definition state.c:67
consensus_state_machine_t
State machine lifecycle states.
Definition state.h:19
@ CONSENSUS_STATE_COLLECTION_COMPLETE
Definition state.h:23
@ CONSENSUS_STATE_COLLECTION_START
Definition state.h:21
@ CONSENSUS_STATE_ELECTION_COMPLETE
Definition state.h:26
@ CONSENSUS_STATE_FAILED
Definition state.h:27
@ CONSENSUS_STATE_ELECTING
Definition state.h:25
@ CONSENSUS_STATE_ELECTION_START
Definition state.h:24
@ CONSENSUS_STATE_IDLE
Definition state.h:20
@ CONSENSUS_STATE_COLLECTING
Definition state.h:22
asciichat_error_t consensus_state_get_elected_backup(const consensus_state_t *state, uint8_t out_backup_id[SESSION_ID_SIZE])
Get elected backup host ID from last election.
Definition state.c:202
asciichat_error_t consensus_state_get_elected_host(const consensus_state_t *state, uint8_t out_host_id[SESSION_ID_SIZE])
Get elected host ID from last election.
Definition state.c:188
asciichat_error_t consensus_state_reset_to_idle(consensus_state_t *state)
Transition back to IDLE from ELECTION_COMPLETE.
Definition state.c:168
asciichat_error_t consensus_state_collection_complete(consensus_state_t *state)
Transition to COLLECTION_COMPLETE state.
Definition state.c:118
int consensus_state_get_metrics_count(const consensus_state_t *state)
Get count of metrics collected in current round.
Definition state.c:223
consensus_state_machine_t consensus_state_get_current_state(const consensus_state_t *state)
Get current state machine state.
Definition state.c:181
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:93
State machine instance.
Definition state.c:29
uint8_t my_id[SESSION_ID_SIZE]
Definition state.c:32
consensus_topology_t * topology
Definition state.c:31
struct consensus_topology consensus_topology_t
Ring topology for consensus participants.
Ring topology management.