kvbm_engine/leader/
mod.rs1mod accessor;
5mod instance;
6mod onboarding;
7#[doc = include_str!("../../docs/session.md")]
8pub mod session;
9mod state;
10mod types;
11pub mod velo;
12
13pub use accessor::{BlockAccessor, PolicyContext, TieredBlock};
14pub use instance::InstanceLeader;
15pub use onboarding::*;
16pub use session::{
17 ControllableSessionOptions, ControllableSessionResult, InitiatorSession, ResponderSession,
18 ServerSession, ServerSessionHandle, ServerSessionOptions, SessionId,
19};
20pub use state::{LeaderState, RemoteLeaderInfo, route_local_to_remote};
21pub use types::*;
22pub use velo::VeloLeaderService;
23
24use anyhow::Result;
25
26use crate::SequenceHash;
27
28pub trait Leader: Send + Sync {
30 fn find_matches(&self, sequence_hashes: &[SequenceHash]) -> Result<FindMatchesResult> {
32 self.find_matches_with_options(sequence_hashes, FindMatchesOptions::default())
33 }
34
35 fn find_matches_with_options(
37 &self,
38 sequence_hashes: &[SequenceHash],
39 options: FindMatchesOptions,
40 ) -> Result<FindMatchesResult>;
41}