pub struct Lifecycle { /* private fields */ }Expand description
The registry, its templates and the processes it started.
Implementations§
Source§impl Lifecycle
impl Lifecycle
Sourcepub fn open(
templates: &[ServiceTemplateConfig],
dir: PathBuf,
network: String,
placer: Option<Arc<dyn Placer>>,
) -> Result<Arc<Self>, LifecycleError>
pub fn open( templates: &[ServiceTemplateConfig], dir: PathBuf, network: String, placer: Option<Arc<dyn Placer>>, ) -> Result<Arc<Self>, LifecycleError>
Opens the registry in dir, reading every record once.
network is the Lys network services are placed under; the address a
started process connects to is given by Self::listening.
§Errors
The directory cannot be made or read, or a record in it is not one.
Sourcepub fn listening(&self, address: String)
pub fn listening(&self, address: String)
Records the address the server listens on; a process is started only after it is known. A second call changes nothing.
Sourcepub fn list(
&self,
visible: impl Fn(&ServiceRecord) -> bool,
) -> Result<Value, LifecycleError>
pub fn list( &self, visible: impl Fn(&ServiceRecord) -> bool, ) -> Result<Value, LifecycleError>
The templates and every service visible keeps, with whether a
process is running for it, as the services.list answer.
§Errors
The registry lock is poisoned.
Sourcepub fn record(&self, id: &str) -> Result<ServiceRecord, LifecycleError>
pub fn record(&self, id: &str) -> Result<ServiceRecord, LifecycleError>
Sourcepub fn create(
&self,
template: &str,
name: &str,
holder: &str,
operation: &str,
now_ms: u64,
) -> Result<ServiceRecord, LifecycleError>
pub fn create( &self, template: &str, name: &str, holder: &str, operation: &str, now_ms: u64, ) -> Result<ServiceRecord, LifecycleError>
Creates a service named name from template for holder, asleep,
after placing it and its subjects in Lys. The same operation from
the same holder answers the same service and places nothing twice.
§Errors
By name: the template, the name, the placement or the store.
Sourcepub fn deploy(
self: &Arc<Self>,
id: &str,
holder: &str,
) -> Result<ServiceRecord, LifecycleError>
pub fn deploy( self: &Arc<Self>, id: &str, holder: &str, ) -> Result<ServiceRecord, LifecycleError>
Starts an asleep service’s template for holder; it is recorded
live when its worker registers.
§Errors
By name: the service, its state, or the start.
Sourcepub fn wake(
self: &Arc<Self>,
id: &str,
holder: &str,
) -> Result<ServiceRecord, LifecycleError>
pub fn wake( self: &Arc<Self>, id: &str, holder: &str, ) -> Result<ServiceRecord, LifecycleError>
Sourcepub fn hold(
&self,
id: &str,
holder: &str,
now_ms: u64,
) -> Result<ServiceRecord, LifecycleError>
pub fn hold( &self, id: &str, holder: &str, now_ms: u64, ) -> Result<ServiceRecord, LifecycleError>
Stops a running or live service for holder and records it held.
§Errors
By name: the service, its state, the stop or the store.
Sourcepub fn retire(
&self,
id: &str,
holder: &str,
now_ms: u64,
) -> Result<ServiceRecord, LifecycleError>
pub fn retire( &self, id: &str, holder: &str, now_ms: u64, ) -> Result<ServiceRecord, LifecycleError>
Sourcepub fn admit_process(&self, token: &[u8]) -> Option<ProcessGrant>
pub fn admit_process(&self, token: &[u8]) -> Option<ProcessGrant>
What token admits, when it is a running service process’s own.
Sourcepub fn mark_live(&self, id: &str, now_ms: u64) -> Result<(), LifecycleError>
pub fn mark_live(&self, id: &str, now_ms: u64) -> Result<(), LifecycleError>
Records id live when its worker registered, for the holder that
started it; nothing when it already is.
§Errors
The service is unknown or the store failed.
Sourcepub fn restart_live(
self: &Arc<Self>,
now_ms: u64,
) -> Vec<(String, LifecycleError)>
pub fn restart_live( self: &Arc<Self>, now_ms: u64, ) -> Vec<(String, LifecycleError)>
Starts every service last recorded live, as the holder that last made it so, after a restart. A start that fails is recorded on the service and the rest still start.
Sourcepub fn placed_since(&self, subject: &str, since_ms: u64) -> bool
pub fn placed_since(&self, subject: &str, since_ms: u64) -> bool
Whether a service serving subject, not retired, was placed in Lys at
or after since_ms: a pass issued before then cannot carry its
rights, so its offline refusal says nothing and Lys is asked live.
Sourcepub fn shutdown_begun(&self)
pub fn shutdown_begun(&self)
The server’s shutdown has begun: from here no service starts, and a process that exits (a worker leaves when its connection closes) keeps its service’s recorded state, so a live service is live at the next start. Called when the stop is asked, before any connection drains.