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
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>
impl<'gc, C: CustomTypes<S>, S: System<C>> Process<'gc, C, S>
Sourcepub fn new(context: ProcContext<'gc, C, S>) -> Self
pub fn new(context: ProcContext<'gc, C, S>) -> Self
Creates a new Process
with the given starting context.
Sourcepub fn is_running(&self) -> bool
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
).
Sourcepub fn get_call_stack(&self) -> &[CallFrame<'gc, C, S>]
pub fn get_call_stack(&self) -> &[CallFrame<'gc, C, S>]
Gets a reference to the current call stack. This is a sequence of every call frame, including the current context entity, local variables in scope, and other hidden state information. Due to the delicate state involved, a mutable option is not supported.
Sourcepub fn step(
&mut self,
mc: &Mutation<'gc>,
) -> Result<ProcessStep<'gc, C, S>, ExecError<C, S>>
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
.
This function is not re-entrant, so recursively calling it from the mutable handle of, e.g., Config
will likely lead to panics.
Trait Implementations§
Source§impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Process<'gc, C, S>where
C::ProcessState: 'static,
usize: 'static,
Option<Barrier>: 'static,
Option<InternReplyKey>: 'static,
Vec<Handler<C, S>>: 'static,
Option<Defer<C, S>>: 'static,
impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Process<'gc, C, S>where
C::ProcessState: 'static,
usize: 'static,
Option<Barrier>: 'static,
Option<InternReplyKey>: 'static,
Vec<Handler<C, S>>: 'static,
Option<Defer<C, S>>: 'static,
Source§fn needs_trace() -> bool
fn needs_trace() -> bool
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)
fn trace(&self, cc: &Collection)
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.