Skip to main content

kvbm_engine/leader/
mod.rs

1// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2// SPDX-License-Identifier: Apache-2.0
3
4mod 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
28/// Leader trait for distributed block onboarding operations.
29pub trait Leader: Send + Sync {
30    /// Find matching blocks with default options.
31    fn find_matches(&self, sequence_hashes: &[SequenceHash]) -> Result<FindMatchesResult> {
32        self.find_matches_with_options(sequence_hashes, FindMatchesOptions::default())
33    }
34
35    /// Find matching blocks with custom options.
36    fn find_matches_with_options(
37        &self,
38        sequence_hashes: &[SequenceHash],
39        options: FindMatchesOptions,
40    ) -> Result<FindMatchesResult>;
41}