pub struct KindTieredHandler<'h> { /* private fields */ }Expand description
A stackable ExternalFnHandler that tiers externals by
PolicyKind before delegating to a real handler.
Queryexternals are always delegated live toinner(including aPendingresult, passed straight through for async resolution).Effectexternals are delegated live only whencontext == EvalContext::Evalandlive_effectsis armed; otherwise they resolve toExternalResult::Fallback(the ink fallback body, or a named-external VM error if none is declared).- A name absent from
kindsis treated asEffect— conservative by default.
No coupling to crate::Speculation — this is a plain composable
handler, usable anywhere an &dyn ExternalFnHandler is accepted.
Implementations§
Source§impl<'h> KindTieredHandler<'h>
impl<'h> KindTieredHandler<'h>
Sourcepub fn new(
inner: &'h dyn ExternalFnHandler,
kinds: HashMap<String, PolicyKind>,
context: EvalContext,
live_effects: bool,
) -> Self
pub fn new( inner: &'h dyn ExternalFnHandler, kinds: HashMap<String, PolicyKind>, context: EvalContext, live_effects: bool, ) -> Self
Build a handler gating calls to inner by kinds.
kinds maps ink-declared external names to their PolicyKind;
a name absent from the map is treated as Effect. context picks
the evaluation regime; live_effects arms Effect externals when
context == EvalContext::Eval (ignored under Watch, where
effects never fire live).
Sourcepub fn report(&self) -> ExternalsReport
pub fn report(&self) -> ExternalsReport
Snapshot of which externals have run live versus fallen back so far. Diagnostic only.
Trait Implementations§
Source§impl ExternalFnHandler for KindTieredHandler<'_>
impl ExternalFnHandler for KindTieredHandler<'_>
Auto Trait Implementations§
impl<'h> !Freeze for KindTieredHandler<'h>
impl<'h> !RefUnwindSafe for KindTieredHandler<'h>
impl<'h> !Send for KindTieredHandler<'h>
impl<'h> !Sync for KindTieredHandler<'h>
impl<'h> !UnwindSafe for KindTieredHandler<'h>
impl<'h> Unpin for KindTieredHandler<'h>
impl<'h> UnsafeUnpin for KindTieredHandler<'h>
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
Mutably borrows from an owned value. Read more