Skip to content
Snippets Groups Projects
node.rs 34.3 KiB
Newer Older
pub fn global() -> traft::Result<&'static Node> {
Yaroslav Dynnikov's avatar
Yaroslav Dynnikov committed
    // Uninitialized raft node is a regular case. This case may take
    // place while the instance is executing `start_discover()` function.
    // It has already started listening, but the node is only initialized
    // in `postjoin()`.
    unsafe { RAFT_NODE.as_deref() }.ok_or(Error::Uninitialized)
crate::collect_proc!(proc_raft_interact);
#[proc(packed_args)]
fn proc_raft_interact(pbs: Vec<traft::MessagePb>) -> traft::Result<()> {
    crate::tarantool::fiber_name("proc_raft_interact");

Yaroslav Dynnikov's avatar
Yaroslav Dynnikov committed
    let node = global()?;
    for pb in pbs {
        node.step_and_yield(raft::Message::try_from(pb).map_err(Error::other)?);