pub struct OracleCacheRuntimeBuilder { /* private fields */ }Expand description
Cache-native runtime builder with first-class oracle adapter plugins.
Implementations§
Source§impl OracleCacheRuntimeBuilder
impl OracleCacheRuntimeBuilder
Sourcepub fn install_adapter<A>(self, adapter: A) -> Selfwhere
A: OracleAdapterPlugin + 'static,
pub fn install_adapter<A>(self, adapter: A) -> Selfwhere
A: OracleAdapterPlugin + 'static,
Install one oracle adapter plugin.
Sourcepub fn now_timestamp(self, now_timestamp: u64) -> Self
pub fn now_timestamp(self, now_timestamp: u64) -> Self
Set a fixed timestamp for deterministic registration status classification.
Sourcepub fn storage_adapter<A>(self, adapter: A) -> Selfwhere
A: OracleStorageAdapter + 'static,
pub fn storage_adapter<A>(self, adapter: A) -> Selfwhere
A: OracleStorageAdapter + 'static,
Add one storage adapter.
Sourcepub fn storage_sync(self, storage_sync: OracleStorageSync) -> Self
pub fn storage_sync(self, storage_sync: OracleStorageSync) -> Self
Replace the storage-sync registry.
Sourcepub fn storage_warmup(self, enabled: bool) -> Self
pub fn storage_warmup(self, enabled: bool) -> Self
Enable or disable oracle storage warmup during cache-native builds.
Enabled by default. When enabled, the builder asks installed storage adapters which slots must be hot for direct event writes and bulk-loads them through the cache before returning the runtime.
Sourcepub fn storage_warmup_mode(self, mode: OracleStorageWarmupMode) -> Self
pub fn storage_warmup_mode(self, mode: OracleStorageWarmupMode) -> Self
Set the oracle storage warmup mode.
Sourcepub fn storage_cold_start(self) -> Self
pub fn storage_cold_start(self) -> Self
Use EvmCache::run_cold_start for declared oracle storage slots.
Sourcepub fn disable_storage_warmup(self) -> Self
pub fn disable_storage_warmup(self) -> Self
Disable oracle storage warmup.
Sourcepub fn code_registry(self, registry: OracleCodeRegistry) -> Self
pub fn code_registry(self, registry: OracleCodeRegistry) -> Self
Replace the bytecode seed/etch registry.
Sourcepub fn code_warmup_policy(self, policy: OracleCodeWarmupPolicy) -> Self
pub fn code_warmup_policy(self, policy: OracleCodeWarmupPolicy) -> Self
Set the bytecode warmup failure policy.
Sourcepub fn code_seed(self, address: Address, code: Bytes) -> Self
pub fn code_seed(self, address: Address, code: Bytes) -> Self
Add a canonical bytecode seed that must verify against on-chain code hash.
Sourcepub fn code_seeds<I>(self, seeds: I) -> Self
pub fn code_seeds<I>(self, seeds: I) -> Self
Add multiple canonical bytecode seeds that must verify against chain code hash.
Sourcepub fn code_etch(self, address: Address, code: Bytes) -> Self
pub fn code_etch(self, address: Address, code: Bytes) -> Self
Add explicit simulation-only bytecode at address.
Sourcepub fn code_etches<I>(self, etches: I) -> Self
pub fn code_etches<I>(self, etches: I) -> Self
Add multiple explicit simulation-only bytecode etches.
Sourcepub fn on_event<F>(self, callback: F) -> Self
pub fn on_event<F>(self, callback: F) -> Self
Subscribe to every typed oracle event emitted by this runtime.
Sourcepub fn on_price_update<F>(self, callback: F) -> Self
pub fn on_price_update<F>(self, callback: F) -> Self
Subscribe to immediate event-derived price updates.
Sourcepub async fn build(
self,
cache: &mut EvmCache,
) -> Result<OracleRuntime<()>, OracleError>
pub async fn build( self, cache: &mut EvmCache, ) -> Result<OracleRuntime<()>, OracleError>
Register adapter-discovered feeds and construct the runtime.
§Errors
Returns OracleError::FeedSkipped when any adapter reported a
skipped feed (use Self::build_report to receive skips as data),
OracleError::Policy when code warmup fails the configured
OracleCodeWarmupPolicy, OracleError::Provider when adapter
discovery reads fail, OracleError::DuplicateFeedId/
OracleError::DuplicateProxy when discovered feeds collide, and
OracleError::Config when the system clock is before the UNIX epoch
and no now_timestamp was set.
Sourcepub async fn build_report(
self,
cache: &mut EvmCache,
) -> Result<OracleCacheRuntimeBuildReport, OracleError>
pub async fn build_report( self, cache: &mut EvmCache, ) -> Result<OracleCacheRuntimeBuildReport, OracleError>
Register every compatible adapter feed and return skipped feeds instead of failing fast.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for OracleCacheRuntimeBuilder
impl !UnwindSafe for OracleCacheRuntimeBuilder
impl Freeze for OracleCacheRuntimeBuilder
impl Send for OracleCacheRuntimeBuilder
impl Sync for OracleCacheRuntimeBuilder
impl Unpin for OracleCacheRuntimeBuilder
impl UnsafeUnpin for OracleCacheRuntimeBuilder
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> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.