pub struct Process<'gc, C: CustomTypes<S>, S: System<C>> {
    pub global_context: Gc<'gc, RefLock<GlobalContext<'gc, C, S>>>,
    pub state: C::ProcessState,
    /* private fields */
}
Expand description

A ByteCode execution primitive.

A Process is a self-contained thread of execution. It maintains its own state machine for executing instructions step by step.

Fields§

§global_context: Gc<'gc, RefLock<GlobalContext<'gc, C, S>>>§state: C::ProcessState

Implementations§

source§

impl<'gc, C: CustomTypes<S>, S: System<C>> Process<'gc, C, S>

source

pub fn new(context: ProcContext<'gc, C, S>) -> Self

Creates a new Process with the given starting context.

source

pub fn is_running(&self) -> bool

Checks if the process is currently running. Note that the process will not run on its own (see Process::step).

source

pub fn current_entity(&self) -> Gc<'gc, RefLock<Entity<'gc, C, S>>>

Gets the current active entity of this process. Note that this is not necessarily the same entity that was used to construct the process, as blocks such as “tell _ to _” and “ask _ for _” can change the context entity.

source

pub fn step( &mut self, mc: &Mutation<'gc> ) -> Result<ProcessStep<'gc, C, S>, ExecError<C, S>>

Executes a single bytecode instruction. The return value can be used to determine what additional effects the script has requested, as well as to retrieve the return value or execution error in the event that the process terminates.

The process transitions to the idle state (see Process::is_running) upon failing with Err or succeeding with ProcessStep::Terminate.

Trait Implementations§

source§

impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Process<'gc, C, S>where C::ProcessState: 'static, usize: 'static, bool: 'static, Option<Barrier>: 'static, Option<S::InternReplyKey>: 'static, Vec<Handler>: 'static, Option<Defer<C, S>>: 'static,

source§

fn needs_trace() -> bool

As an optimization, if this type can never hold a Gc pointer and trace is unnecessary to call, you may implement this method and return false. The default implementation returns true, signaling that Collect::trace must be called.
source§

fn trace(&self, cc: &Collection)

Must call Collect::trace on all held Gc pointers. If this type holds inner types that implement Collect, a valid implementation would simply call Collect::trace on all the held values to ensure this.

Auto Trait Implementations§

§

impl<'gc, C, S> !RefUnwindSafe for Process<'gc, C, S>

§

impl<'gc, C, S> !Send for Process<'gc, C, S>

§

impl<'gc, C, S> !Sync for Process<'gc, C, S>

§

impl<'gc, C, S> Unpin for Process<'gc, C, S>where <S as System<C>>::CommandKey: Unpin, <S as System<C>>::ExternReplyKey: Unpin, <S as System<C>>::InternReplyKey: Unpin, <C as CustomTypes<S>>::ProcessState: Unpin, <S as System<C>>::RequestKey: Unpin,

§

impl<'gc, C, S> !UnwindSafe for Process<'gc, C, S>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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 Twhere U: TryFrom<T>,

§

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 Twhere 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