Struct AddLyquid
pub struct AddLyquid {
pub id: LyquidID,
pub high_mark: usize,
pub low_mark: usize,
pub consumer: Recipient<SequenceItem>,
pub oracle: Option<OracleEndpoints>,
}Expand description
Start sequencing slots for the given lyquid.
To keep outbound execution fully local, add this lyquid’s dependencies before adding the lyquid itself. If some dependencies are still unhosted, outbound calls may still make progress through side-effect fallback/prefill, but liveness then depends on that external side-effect path rather than on the local hosted closure alone.
When a lyquid sequence is added, there are two kinds of possible slots that matter since it was last removed:
- Inbound Calls: Any other lyquids’ execution that directly or indirectly calls this lyquid.
- Outbound Calls: Any execution for this lyquid that can direclty or indirectly call others.
For inbound calls, these lyquids must have been removed before this lyquid was removed and added back after this lyquid is added back, so no slots are missed.
For outbound calls, hosted dependencies should ideally be added before this lyquid is added. Otherwise their results may need to be recovered from the archival/side-effect provider until those dependencies are hosted too. Once both sides are hosted, the calls are directly injected locally.
TODO: We should perhaps allow adding a “bulk” of lyquids that includes all dependencies, before starting the their backend slots retrieval and execution, so there is no need to consult the archival node in the middle of adding the entire dependencies.
Fields§
§id: LyquidID§high_mark: usize§low_mark: usize§consumer: Recipient<SequenceItem>§oracle: Option<OracleEndpoints>Oracle sync endpoints for this lyquid.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for AddLyquid
impl !RefUnwindSafe for AddLyquid
impl Send for AddLyquid
impl Sync for AddLyquid
impl Unpin for AddLyquid
impl !UnwindSafe for AddLyquid
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<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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