AddLyquid

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:

  1. Inbound Calls: Any other lyquids’ execution that directly or indirectly calls this lyquid.
  2. 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§

§

impl Debug for AddLyquid

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
§

impl Handler<AddLyquid> for FCO

§

type Result = Result<Option<u64>, Error>

The type of value that this handler will return. Read more
§

fn handle(&mut self, msg: AddLyquid, ctx: &mut Context<Self>) -> Self::Result

This method is called for every message received by this actor.
§

impl Message for AddLyquid

§

type Result = Result<Option<u64>, Error>

The type of value that this message will resolved with if it is successful.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> MaybeSend for T
where T: Send,