pub struct ChildLaunchRequest {
pub parent_records_root: WorkdirRoot,
pub capsule_name: String,
pub capsule_version: String,
pub grant: SpawnApproval,
pub child_env_allow: Vec<String>,
pub roost_url: String,
pub spawner: Option<Spawner>,
pub completion_deadline: Option<Duration>,
pub formation_id: Option<FormationId>,
pub deadline: Option<SessionDeadline>,
}Expand description
What the parent’s runtime needs in order to start one approved child.
Carries no manifest and no capability declaration: what the child holds is decided by the
daemon from the child’s own registry manifest, both at the POST /spawn that granted grant
and again at the POST /register the child performs for itself.
Fields§
§parent_records_root: WorkdirRootThe parent’s own records directory. The child’s work folder is created in its
[CHILDREN_DIR], with no link followed, outside the parent’s work folder.
capsule_name: String§capsule_version: String§grant: SpawnApprovalThe approval POST /spawn returned, spent by the child’s own registration.
child_env_allow: Vec<String>The child’s capabilities.env.allow. Names listed here are copied from the parent’s
process environment into the child’s; every other host variable the parent holds is
absent from the child, because the child’s environment is built from a cleared one.
roost_url: StringBase URL of the daemon the child registers with.
spawner: Option<Spawner>The session this child belongs to, or None for a launch that is not a delegation.
Some is what turns the launch into a delegation: the launcher mints a delegation id and
injects a SpawnerHandle as SPAWNER_ENV, which is where the child reads the lineage
it records in its own session_start. The watcher that reports for a child which could
not report for itself starts only when that spawner also names a
CompletionAddress — a parent waiting on its own connection wants no completion.
None injects nothing and starts nothing.
completion_deadline: Option<Duration>How long the completion watcher observes this child before ending it, or None to observe
it for as long as it runs.
Meaningful only alongside a CompletionAddress, because the watcher that enforces it
starts only for a spawner that names one. On expiry the watcher stops the process and
posts a DelegationStatus::Terminated outcome naming the bound, which is the only thing
that tells a parent about a child that never ends.
formation_id: Option<FormationId>The parent session’s formation, which the child joins: injected as FORMATION_ID_ENV
when Some, whether or not Self::spawner is. Inherited from the parent and never
minted here; None — a parent in no formation — injects nothing.
deadline: Option<SessionDeadline>The parent session’s deadline, handed to the child as
crate::session_status::INHERITED_DEADLINE_FLAG and its moment, so the child’s own runtime
ends it there. None bounds nothing. A script-capsule child takes no session deadline from
it, and ends with its parent through its spawner lifeline.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ChildLaunchRequest
impl RefUnwindSafe for ChildLaunchRequest
impl Send for ChildLaunchRequest
impl Sync for ChildLaunchRequest
impl Unpin for ChildLaunchRequest
impl UnsafeUnpin for ChildLaunchRequest
impl UnwindSafe for ChildLaunchRequest
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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