pub struct SrvSpawnResult {
pub pid: u32,
pub ws_endpoint: String,
pub web_endpoint: String,
pub instance_id: String,
pub auth_key: String,
pub host_reg_secret: String,
pub pending_migrations: usize,
pub started_at: String,
}Expand description
What the launcher learns about srv after it signals ready. Held by the launcher and used to populate env vars the host reads.
Fields§
§pid: u32§ws_endpoint: String§web_endpoint: String§instance_id: String§auth_key: String§host_reg_secret: StringShared secret proving to srv that a host_ipc.Register call really
comes from the paired host, not an agent process (agents share
auth_key too — see crates/srv/src/server/service/host_ipc.rs).
Minted once per spawn_srv call (same lifetime as auth_key) and
given to both host and srv’s spawn env — see host_spawn.rs’s
AGENTMUX_HOST_REG_SECRET env line and this file’s own
AGENTMUX_HOST_REG_SECRET env line below. Survives every host-only
crash-restart automatically, exactly like auth_key does (this
struct is held in the launcher’s own stack frame across restarts —
see SrvSpawnResult’s own doc comment above).
pending_migrations: usizeNumber of data migrations still pending after the in-process startup run.
Counted by srv at ESTART time (count_pending_migrations). Since
SPEC_MIGRATION_SYSTEM_HARDENING Phase 1 a migration failure never
reaches ESTART at all (srv exits 1 with MigrationFailed), so a
non-zero value here means the count and the run disagree — e.g. the
fresh-install ordering case runner.rs documents — and the status-bar
shows its retry message for that.
started_at: StringRFC3339 timestamp captured when ESTART arrived. Carried on the
result for --diag / debug observability; not currently
propagated into env. F.7 cleanup audit: keep with allow + this
note rather than delete — a future --diag srv printer is the
natural reader.
Trait Implementations§
Source§impl Clone for SrvSpawnResult
impl Clone for SrvSpawnResult
Source§fn clone(&self) -> SrvSpawnResult
fn clone(&self) -> SrvSpawnResult
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SrvSpawnResult
impl RefUnwindSafe for SrvSpawnResult
impl Send for SrvSpawnResult
impl Sync for SrvSpawnResult
impl Unpin for SrvSpawnResult
impl UnsafeUnpin for SrvSpawnResult
impl UnwindSafe for SrvSpawnResult
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.