pub struct HostImpl<DB: ZephyrDatabase, L: LedgerStateRead> {
pub id: i64,
pub network_id: [u8; 32],
pub transmitter: RefCell<Option<UnboundedSender<Vec<u8>>>>,
pub result: RefCell<String>,
pub latest_close: RefCell<Option<Vec<u8>>>,
pub database: RefCell<Database<DB>>,
pub ledger: Ledger<L>,
pub budget: RefCell<Budget>,
pub entry_point_info: RefCell<InvokedFunctionInfo>,
pub context: RefCell<VmContext<DB, L>>,
pub stack: RefCell<Stack>,
pub soroban: RefCell<Host>,
}
Expand description
Zephyr Host State Implementation.
Fields§
§id: i64
Host id.
network_id: [u8; 32]
Network id hashed.
transmitter: RefCell<Option<UnboundedSender<Vec<u8>>>>
Transmitter
result: RefCell<String>
Result of the invocation. Currently this can only be a string.
latest_close: RefCell<Option<Vec<u8>>>
Latest ledger close meta. This is set as optional as some Zephyr programs might not need the ledger meta.
NB: naming probably needs to change as this is used to just communicate starting input to a program, which could be both:
- a ledger close meta (state transition) < for ingestors
- a request body < for functions
database: RefCell<Database<DB>>
Database implementation.
ledger: Ledger<L>
Ledger state.
budget: RefCell<Budget>
Budget implementation.
entry_point_info: RefCell<InvokedFunctionInfo>
Entry point info.
context: RefCell<VmContext<DB, L>>
VM context.
stack: RefCell<Stack>
Host pseudo stack implementation.
soroban: RefCell<Host>
Wrapper for the Soroban Host Environment
Trait Implementations§
Auto Trait Implementations§
impl<DB, L> !Freeze for HostImpl<DB, L>
impl<DB, L> !RefUnwindSafe for HostImpl<DB, L>
impl<DB, L> !Send for HostImpl<DB, L>
impl<DB, L> !Sync for HostImpl<DB, L>
impl<DB, L> Unpin for HostImpl<DB, L>
impl<DB, L> !UnwindSafe for HostImpl<DB, L>
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for C
impl<T, U, V, W, E, C> Compare<(T, U, V, W)> for C
type Error = E
fn compare( &self, a: &(T, U, V, W), b: &(T, U, V, W), ) -> Result<Ordering, <C as Compare<(T, U, V, W)>>::Error>
source§impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
impl<T, U, V, W, X, E, C> Compare<(T, U, V, W, X)> for C
type Error = E
fn compare( &self, a: &(T, U, V, W, X), b: &(T, U, V, W, X), ) -> Result<Ordering, <C as Compare<(T, U, V, W, X)>>::Error>
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.