pub struct Lifecycle { /* private fields */ }Expand description
The registry, its templates and the processes it started.
Implementations§
Source§impl Lifecycle
impl Lifecycle
Sourcepub fn check_plan_holder(
&self,
record: &ServiceRecord,
holder: &str,
) -> Result<(), SiteError>
pub fn check_plan_holder( &self, record: &ServiceRecord, holder: &str, ) -> Result<(), SiteError>
Only the signed builder with an outright site plan right can reach writes.
§Errors
The named holder is not the currently bound builder.
Source§impl Lifecycle
impl Lifecycle
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 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.
Source§impl Lifecycle
impl Lifecycle
Sourcepub fn keep_held_site(
&self,
id: &str,
request: &DraftRequest,
act: &SiteAct,
pass: &VerifiedPass,
mode: GrantMode,
at_ms: u64,
) -> Result<(), SiteError>
pub fn keep_held_site( &self, id: &str, request: &DraftRequest, act: &SiteAct, pass: &VerifiedPass, mode: GrantMode, at_ms: u64, ) -> Result<(), SiteError>
Records the exact prepared request after Lys durably holds it. Identity is checked again against the original verified pass, never request fields.
§Errors
Any immutable mismatch, invalid boundary or durable capacity failure.
Source§impl Lifecycle
impl Lifecycle
Sourcepub fn open_bounded(
templates: &[ServiceTemplateConfig],
dir: PathBuf,
network: String,
placer: Option<Arc<dyn Placer>>,
limits: &SiteLimits,
) -> Result<Arc<Self>, LifecycleError>
pub fn open_bounded( templates: &[ServiceTemplateConfig], dir: PathBuf, network: String, placer: Option<Arc<dyn Placer>>, limits: &SiteLimits, ) -> Result<Arc<Self>, LifecycleError>
Opens construction with explicit migration bounds before parsing any old file. Ordinary configuration-only registries retain their existing path.
§Errors
Invalid old snapshot, nonregular file, count/byte bound, or migration write.
Sourcepub fn configure_sites(
&self,
limits: SiteLimits,
store: Arc<dyn DurableStore>,
templates: Option<TemplatePolicy>,
effects: Arc<dyn SiteEffects>,
retained: Arc<Retained>,
) -> Result<(), SiteError>
pub fn configure_sites( &self, limits: SiteLimits, store: Arc<dyn DurableStore>, templates: Option<TemplatePolicy>, effects: Arc<dyn SiteEffects>, retained: Arc<Retained>, ) -> Result<(), SiteError>
Installs operator bounds and the grant effect once, before admission. The retained projection shares the existing scheduler and inbox bounds.
§Errors
Repeated installation or invalid restored construction records.
Source§impl Lifecycle
impl Lifecycle
Sourcepub fn network_id(&self) -> &str
pub fn network_id(&self) -> &str
Network placement used for the caller’s exact permission binding.
Sourcepub fn construction_limits(&self) -> Result<SiteLimits, SiteError>
pub fn construction_limits(&self) -> Result<SiteLimits, SiteError>
Returns the explicitly configured positive construction limits.
§Errors
Construction is not configured.
Sourcepub fn subscribe_plan(
&self,
id: u64,
subject: &str,
schemas: &[SchemaId],
install: Option<InboxInstall>,
) -> Result<ConnectionSubscription, SiteError>
pub fn subscribe_plan( &self, id: u64, subject: &str, schemas: &[SchemaId], install: Option<InboxInstall>, ) -> Result<ConnectionSubscription, SiteError>
Subscribes to the current plan before any later changes, under its writer lock.
§Errors
Missing subject, watcher bound, schema or inbox refusal.
Source§impl Lifecycle
impl Lifecycle
Sourcepub fn bind_site_console(
&self,
console: &Arc<ConsoleHub>,
) -> Result<(), SiteError>
pub fn bind_site_console( &self, console: &Arc<ConsoleHub>, ) -> Result<(), SiteError>
Installs the existing hub’s event signal without another publisher or timer.
§Errors
The signal was already bound.
Source§impl Lifecycle
impl Lifecycle
Sourcepub fn prepare_trial(
self: &Arc<Self>,
connection: u64,
session: Option<&dyn LysSession>,
registration: &WorkerRegistration,
process: Option<&ProcessGrant>,
at_ms: u64,
) -> Result<Option<TrialPermit>, SiteError>
pub fn prepare_trial( self: &Arc<Self>, connection: u64, session: Option<&dyn LysSession>, registration: &WorkerRegistration, process: Option<&ProcessGrant>, at_ms: u64, ) -> Result<Option<TrialPermit>, SiteError>
Validates schemas and signed builder identity, then reserves completion’s barrier before the directory stores anything. Both checks precede serving.
§Errors
Foreign holder, schema mismatch, missing serve grant or another trial.
Sourcepub fn trial_closed(&self, connection: u64) -> Result<(), SiteError>
pub fn trial_closed(&self, connection: u64) -> Result<(), SiteError>
Called by the directory owner for close and replacement, under the same registration hold that removes the index entry. No timer infers closure.
§Errors
A poisoned registry prevents an uncertain completion.
Sourcepub fn admit_trial_call(
&self,
session: Option<&dyn LysSession>,
subject: &str,
at_ms: u64,
) -> Result<bool, SiteError>
pub fn admit_trial_call( &self, session: Option<&dyn LysSession>, subject: &str, at_ms: u64, ) -> Result<bool, SiteError>
Fences every Building subject before routing and again before reply release. Identity alone permits no call; the caller still needs its grant.
§Errors
A third party, absent pass or the pass’s own call refusal.
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 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.