Skip to main content

Lifecycle

Struct Lifecycle 

Source
pub struct Lifecycle { /* private fields */ }
Expand description

The registry, its templates and the processes it started.

Implementations§

Source§

impl Lifecycle

Source

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.

Source

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.

Source

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.

Source

pub fn record(&self, id: &str) -> Result<ServiceRecord, LifecycleError>

The record of id.

§Errors

No such service, or the lock is poisoned.

Source

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.

Source

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.

Source

pub fn wake( self: &Arc<Self>, id: &str, holder: &str, ) -> Result<ServiceRecord, LifecycleError>

Starts a held service’s template again for holder.

§Errors

As Self::deploy.

Source

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.

Source

pub fn retire( &self, id: &str, holder: &str, now_ms: u64, ) -> Result<ServiceRecord, LifecycleError>

Stops a service if it runs and records it retired, for good.

§Errors

As Self::hold.

Source

pub fn admit_process(&self, token: &[u8]) -> Option<ProcessGrant>

What token admits, when it is a running service process’s own.

Source

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.

Source

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.

Source

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.

Source

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

pub fn shutdown(&self)

Stops every running process at server shutdown without changing a state, so a live service is started again by the next start.

Trait Implementations§

Source§

impl Debug for Lifecycle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more