Skip to main content

ServerHandle

Struct ServerHandle 

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

The handle to a server being served, which is what owns it on behalf of its caller.

A server ends by being stopped, see Server::stop, by its owner or by a client through the Kill command of its admin device, and by its handle being waited for, see Self::wait, which is what deletes its devices. A handle is always waited for: dropping one drops the server as it stands, with no side effect, see Drop.

Implementations§

Source§

impl ServerHandle

Source

pub fn server(&self) -> &Server

Source

pub fn wait(&self) -> Result<()>

Wait for the server to be stopped, see Server::stop, and its devices deleted, which is what the thread running a server spends its life in. The first error met deleting a model is given back.

This blocks, see Self::wait_async for what does not, and Self::wait_timeout for a wait that gives up.

Source

pub fn wait_timeout(&self, timeout: Duration) -> Result<()>

Wait for the server to be stopped and its devices deleted, see Self::wait, giving up with ErrorKind::TimedOut if the backend is still answering requests once the timeout has run out, which a request that never ends makes it.

The timeout only bounds the backend: once it holds nothing of the devices anymore, their models are all deleted, however long that takes. A wait that gave up deletes nothing, a request still running being one that may still use its model, and the handle is then waited for again, or dropped, which ends everything at once, see Drop.

Source

pub async fn wait_async(&self) -> Result<()>

Wait for the server to be stopped and its devices deleted, see Self::wait.

The backend is waited for first, after which no request is in flight and it holds nothing of the devices anymore, see BackendServer::wait, then the model of every device is deleted, in the reverse order of their classes, the admin device last. This never runs on the executor of the backend, which it would wait for.

Trait Implementations§

Source§

impl Debug for ServerHandle

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Drop for ServerHandle

Source§

fn drop(&mut self)

Break the ownership cycles of the server, see Server::clear, and drop its backend, with no side effect: a server that was not waited for, see Self::wait, is not unexported, the requests in flight are not answered, and the models are not deleted, see BackendServer.

Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. 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<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<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> Model for T
where T: Send + Sync + 'static,

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