|
ascii-chat 0.8.38
Real-time terminal-based video chat with ASCII art conversion
|
Ring consensus coordinator implementation. More...
Go to the source code of this file.
Data Structures | |
| struct | consensus_coordinator |
| Internal coordinator structure. More... | |
Macros | |
| #define | CONSENSUS_ROUND_INTERVAL_NS (5ULL * 60 * NS_PER_SEC_INT) /* 5 minutes */ |
| #define | CONSENSUS_COLLECTION_DEADLINE_NS (30ULL * NS_PER_SEC_INT) /* 30 seconds */ |
Typedefs | |
| typedef struct consensus_coordinator | consensus_coordinator_t |
| Internal coordinator structure. | |
Functions | |
| 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 coordinator with given parameters. | |
| void | consensus_coordinator_destroy (consensus_coordinator_t *coordinator) |
| Clean up coordinator resources. | |
| asciichat_error_t | consensus_coordinator_process (consensus_coordinator_t *coordinator, uint32_t timeout_ms) |
| Main orchestration loop. | |
| 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_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_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. | |
| 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_get_current_host (const consensus_coordinator_t *coordinator, uint8_t out_host_id[16], uint8_t out_backup_id[16]) |
| Get currently elected host. | |
| consensus_state_machine_t | consensus_coordinator_get_state (const consensus_coordinator_t *coordinator) |
| Get current coordinator state. | |
| uint64_t | consensus_coordinator_time_until_next_round (const consensus_coordinator_t *coordinator) |
| Get time until next round. | |
| int | consensus_coordinator_get_metrics_count (const consensus_coordinator_t *coordinator) |
| Get count of metrics in current round. | |
Ring consensus coordinator implementation.
Definition in file coordinator.c.
| #define CONSENSUS_COLLECTION_DEADLINE_NS (30ULL * NS_PER_SEC_INT) /* 30 seconds */ |
Definition at line 16 of file coordinator.c.
| #define CONSENSUS_ROUND_INTERVAL_NS (5ULL * 60 * NS_PER_SEC_INT) /* 5 minutes */ |
Definition at line 15 of file coordinator.c.
| typedef struct consensus_coordinator consensus_coordinator_t |
Internal coordinator structure.
| 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 coordinator with given parameters.
Definition at line 42 of file coordinator.c.
References consensus_state_create(), consensus_coordinator::election_context, consensus_coordinator::election_func, consensus_coordinator::has_stored_result, consensus_coordinator::last_round_start_ns, consensus_coordinator::my_id, consensus_coordinator::next_round_id, consensus_coordinator::state, time_get_ns(), and consensus_coordinator::topology.
Referenced by session_consensus_create().
| void consensus_coordinator_destroy | ( | consensus_coordinator_t * | coordinator | ) |
Clean up coordinator resources.
Definition at line 83 of file coordinator.c.
References consensus_state_destroy(), and consensus_coordinator::state.
Referenced by session_consensus_destroy().
| 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.
Definition at line 370 of file coordinator.c.
References consensus_state_get_current_state(), consensus_state_get_elected_backup(), consensus_state_get_elected_host(), consensus_coordinator::has_stored_result, consensus_coordinator::state, consensus_coordinator::stored_backup_id, and consensus_coordinator::stored_host_id.
Referenced by session_consensus_get_elected_host(), and session_consensus_is_ready().
| int consensus_coordinator_get_metrics_count | ( | const consensus_coordinator_t * | coordinator | ) |
Get count of metrics in current round.
Definition at line 429 of file coordinator.c.
References consensus_state_get_metrics_count(), and consensus_coordinator::state.
Referenced by session_consensus_get_metrics_count().
| consensus_state_machine_t consensus_coordinator_get_state | ( | const consensus_coordinator_t * | coordinator | ) |
Get current coordinator state.
Definition at line 401 of file coordinator.c.
References consensus_state_get_current_state(), and consensus_coordinator::state.
Referenced by session_consensus_get_state().
| 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.
Definition at line 279 of file coordinator.c.
References consensus_coordinator::collection_deadline_ns, consensus_state_get_current_state(), consensus_state_start_collection(), consensus_coordinator::next_round_id, consensus_coordinator::state, and time_get_ns().
Referenced by session_consensus_on_collection_start().
| 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.
Definition at line 342 of file coordinator.c.
References consensus_state_get_current_state(), consensus_state_reset_to_idle(), consensus_coordinator::has_stored_result, consensus_coordinator::state, consensus_coordinator::stored_backup_id, and consensus_coordinator::stored_host_id.
Referenced by session_consensus_on_election_result().
| asciichat_error_t consensus_coordinator_on_ring_members | ( | consensus_coordinator_t * | coordinator, |
| const consensus_topology_t * | new_topology | ||
| ) |
Update ring topology when participants change.
Definition at line 250 of file coordinator.c.
References consensus_state_create(), consensus_state_destroy(), consensus_state_get_current_state(), consensus_coordinator::my_id, consensus_coordinator::state, and consensus_coordinator::topology.
Referenced by session_consensus_set_topology().
| 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.
Definition at line 314 of file coordinator.c.
References consensus_state_add_metrics(), consensus_state_get_current_state(), and consensus_coordinator::state.
Referenced by session_consensus_on_stats_update().
| asciichat_error_t consensus_coordinator_process | ( | consensus_coordinator_t * | coordinator, |
| uint32_t | timeout_ms | ||
| ) |
Main orchestration loop.
Definition at line 212 of file coordinator.c.
References consensus_state_get_current_state(), consensus_topology_am_leader(), consensus_coordinator::state, time_get_ns(), and consensus_coordinator::topology.
Referenced by session_consensus_process().
| uint64_t consensus_coordinator_time_until_next_round | ( | const consensus_coordinator_t * | coordinator | ) |
Get time until next round.
Definition at line 411 of file coordinator.c.
References CONSENSUS_ROUND_INTERVAL_NS, consensus_coordinator::last_round_start_ns, and time_get_ns().
Referenced by session_consensus_time_until_next_round().