Skip to main content

Service

Struct Service 

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

A native service and the extensions it provides.

Implementations§

Source§

impl Service

Source

pub fn extension<C: Into<String>>( self, name: impl Into<String>, extension: impl Extension, callers: impl IntoIterator<Item = C>, ) -> Self

Provide extension as name to callers: service names, or * for every service of the tenant.

Source

pub fn concurrency(self, calls: usize) -> Self

Run at most calls calls at once (64 unless set); the others wait for a slot until their deadline.

Source

pub fn manifest(&self) -> Result<ServiceManifest>

The mode: native manifest of the service, which the CLI deploys: its name and what it provides, each extension’s callers in order, once each.

Source

pub fn run(self) -> ExitCode

Run the service as its binary’s main: print its manifest under --emit-manifest, else serve the Unix socket CUFFLINK_EXT_SOCKET names, to requests bearing the token CUFFLINK_EXT_TOKEN holds, until SIGTERM or SIGINT. Fails, saying why, when the service or its environment is invalid.

On Linux the process first makes itself undumpable, so other processes of its user (the runner’s other children) cannot read its environment or memory.

Source

pub fn run_nats(self, provider: NatsProvider) -> Result<()>

Serve the extensions from NATS as provider until SIGTERM or SIGINT, undumpable on Linux as run is.

Source

pub async fn bind_socket(self, path: impl AsRef<Path>) -> Result<SocketServer>

Listen on the Unix socket path, replacing a stale one.

Source

pub async fn bind_nats(self, provider: NatsProvider) -> Result<NatsServer>

Connect to provider’s NATS and subscribe to the calls of each extension in the queue group every provider shares.

Source

pub async fn serve_nats( self, provider: NatsProvider, shutdown: impl Future<Output = ()>, ) -> Result<()>

bind_nats, then serve until shutdown, which also ends a bind still waiting for NATS.

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<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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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> 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