Skip to main content

Server

Struct Server 

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

Owner of a persistent server stream, accepting successive sessions. Closing or dropping the server ends its active session and shuts down the physical stream. Closing an individual Session keeps this owner and its stream available for another handshake.

Implementations§

Source§

impl Server

Source

pub fn new<R, W, A>( stream: Stream<R, W>, signer: SecretKey, attester: A, ) -> Self
where R: Read + Send + 'static, W: Write + Send + 'static, A: Attester + Send + 'static,

Takes ownership of a stream and constructs its transport internally. The attester supplies the current device attestation for each handshake. Starts its persistent reader immediately. Failure to start a required worker or an escaping worker panic aborts the process.

Source

pub fn set_autoreply_timeout(self, timeout: Duration) -> Self

Sets the timeout for automatic UNANSWERED and UNKNOWN replies in the current and future sessions. Defaults to DEFAULT_AUTOREPLY_TIMEOUT. Applies even before accept(). Replies already queued keep their deadlines.

See Session::set_autoreply_timeout for when the timeout starts and expires. Changing a session’s timeout leaves the server’s default unchanged. This method also replaces a timeout set directly on the current session.

Source

pub fn set_inbound_limits(self, requests: usize, bytes: usize) -> Self

Sets both per-session inbound limits, initially DEFAULT_MAX_INBOUND_REQUESTS and DEFAULT_MAX_INBOUND_BYTES. Applies to the current session, even before accept(), and future sessions. Lowering either limit below usage closes that session. The server stays open.

See Session::set_inbound_limits for what each limit counts. Changing a session’s limits leaves the server’s defaults unchanged. This method also replaces limits set directly on the current session.

Source

pub fn accept(&mut self) -> Result<Session, Error>

Blocks until a session is established or the server ends. Recoverable handshake failures leave the stream available for another attempt. A replacement session closes the previous one; old handles still refer to it.

The reader runs before acceptance. A returned session may already have queued requests or be closed, including from exceeding an inbound limit. If several sessions arrive before acceptance, only the newest is returned.

Source

pub fn closer(&self) -> Closer

Returns a clonable handle for closing this server from another thread, including while its owner is blocked in Self::accept.

Source

pub fn close(&self)

Permanently closes this server and its active session, wakes blocked acceptance and receive calls, and fails unresolved operations. Idempotent. Does not join application jobs or guarantee the peer has observed closure.

Trait Implementations§

Source§

impl Debug for Server

Source§

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

Shows whether the server still accepts sessions. A state lock held elsewhere leaves the state out.

Source§

impl Drop for Server

Source§

fn drop(&mut self)

Ends the server and its attached session even when handles remain.

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