mocra 0.3.0

A distributed, event-driven crawling and data collection framework
pub mod backend;
pub mod distributed;
pub mod leader;
pub mod raft;

use std::sync::Arc;

pub use backend::CoordinationBackend;
pub use distributed::{DistributedSync, SyncAble, SyncService};
pub use leader::{LeaderElector, LeadershipGate, LocalLeadershipGate};
pub use raft::{RaftLeaderView, RaftLeadershipGate, RaftRuntime, RaftRuntimeConfig};

pub fn build_leadership_gate(
    raft_runtime: Option<Arc<RaftRuntime>>,
    _redis_pool: Option<()>,
    namespace: &str,
    ttl_ms: u64,
) -> Arc<dyn LeadershipGate> {
    if let Some(runtime) = raft_runtime {
        return Arc::new(RaftLeadershipGate::new(runtime));
    }

    let _ = (namespace, ttl_ms);
    Arc::new(LocalLeadershipGate)
}

#[cfg(test)]
mod tests;