pub struct Config<DB, S>{
pub context: DB::Context,
pub source: S,
pub target: Target<DB::Family, DB::Digest>,
pub max_outstanding_requests: usize,
pub fetch_batch_size: NonZeroU64,
pub apply_batch_size: NonZeroU64,
pub db_config: DB::Config,
pub update_rx: Option<Receiver<Target<DB::Family, DB::Digest>>>,
pub finish_rx: Option<Receiver<()>>,
pub reached_target_tx: Option<Sender<Target<DB::Family, DB::Digest>>>,
pub max_retained_roots: usize,
}Expand description
Configuration for creating a new Engine
Fields§
§context: DB::ContextRuntime context for creating database components
source: SSource of operations and proofs
target: Target<DB::Family, DB::Digest>Trusted sync target (root digest and operation bounds).
The engine only verifies source data against this commitment and does not select or authenticate the target.
max_outstanding_requests: usizeMaximum number of outstanding requests for operation batches
fetch_batch_size: NonZeroU64Maximum operations to fetch per batch
apply_batch_size: NonZeroU64Number of operations to apply in a single batch
db_config: DB::ConfigDatabase-specific configuration
update_rx: Option<Receiver<Target<DB::Family, DB::Digest>>>Channel for receiving sync target updates.
The caller selects targets before sending updates. The engine adopts only strictly advancing targets and discards the rest.
finish_rx: Option<Receiver<()>>Channel that requests sync completion once the current target is reached.
When None, sync completes as soon as the target is reached.
reached_target_tx: Option<Sender<Target<DB::Family, DB::Digest>>>Channel used to notify an observer once the current target is reached. The engine sends at most one notification for each target.
When reached_target_tx is Some(...), this receiver must be actively
drained by the observer. The engine awaits send capacity on this channel before
proceeding, so backpressure can pause progress at target.
max_retained_roots: usizeMaximum number of previous roots to retain for verifying in-flight requests after target updates. Set to 0 to disable (all retained requests will be re-fetched).
Auto Trait Implementations§
impl<DB, S> Freeze for Config<DB, S>where
<DB as Database>::Context: Freeze,
S: Freeze,
Target<<DB as Database>::Family, <DB as Database>::Digest>: Freeze,
<DB as Database>::Config: Freeze,
Option<Receiver<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: Freeze,
Option<Sender<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: Freeze,
impl<DB, S> RefUnwindSafe for Config<DB, S>where
<DB as Database>::Context: RefUnwindSafe,
S: RefUnwindSafe,
Target<<DB as Database>::Family, <DB as Database>::Digest>: RefUnwindSafe,
<DB as Database>::Config: RefUnwindSafe,
Option<Receiver<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: RefUnwindSafe,
Option<Sender<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: RefUnwindSafe,
impl<DB, S> Send for Config<DB, S>where
<DB as Database>::Context: Send,
Target<<DB as Database>::Family, <DB as Database>::Digest>: Send,
<DB as Database>::Config: Send,
Option<Receiver<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: Send,
Option<Sender<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: Send,
impl<DB, S> Sync for Config<DB, S>where
<DB as Database>::Context: Sync,
Target<<DB as Database>::Family, <DB as Database>::Digest>: Sync,
<DB as Database>::Config: Sync,
Option<Receiver<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: Sync,
Option<Sender<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: Sync,
impl<DB, S> Unpin for Config<DB, S>where
<DB as Database>::Context: Unpin,
S: Unpin,
Target<<DB as Database>::Family, <DB as Database>::Digest>: Unpin,
<DB as Database>::Config: Unpin,
Option<Receiver<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: Unpin,
Option<Sender<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: Unpin,
impl<DB, S> UnsafeUnpin for Config<DB, S>where
<DB as Database>::Context: UnsafeUnpin,
S: UnsafeUnpin,
Target<<DB as Database>::Family, <DB as Database>::Digest>: UnsafeUnpin,
<DB as Database>::Config: UnsafeUnpin,
Option<Receiver<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: UnsafeUnpin,
Option<Sender<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: UnsafeUnpin,
impl<DB, S> UnwindSafe for Config<DB, S>where
<DB as Database>::Context: UnwindSafe,
S: UnwindSafe,
Target<<DB as Database>::Family, <DB as Database>::Digest>: UnwindSafe,
<DB as Database>::Config: UnwindSafe,
Option<Receiver<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: UnwindSafe,
Option<Sender<Target<<DB as Database>::Family, <DB as Database>::Digest>>>: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more