pub struct Server { /* private fields */ }Expand description
A bound listener that has not started accepting yet.
Binding is separated from serving so the caller can learn the address —
which matters when binding port 0 — without racing the accept loop.
Implementations§
Source§impl Server
impl Server
Sourcepub async fn bind(addr: impl ToSocketAddrs) -> Result<Self>
pub async fn bind(addr: impl ToSocketAddrs) -> Result<Self>
Binds a listener without accepting anything yet.
§Errors
Returns std::io::Error if the address cannot be bound.
Sourcepub const fn with_config(self, config: ServeConfig) -> Self
pub const fn with_config(self, config: ServeConfig) -> Self
Applies limits to this server.
Sourcepub fn local_addr(&self) -> Result<SocketAddr>
pub fn local_addr(&self) -> Result<SocketAddr>
The address actually bound, which is the only way to learn the port when
binding to 0.
§Errors
Returns std::io::Error if the socket cannot report its address.
Sourcepub async fn serve_with_shutdown(
self,
dispatcher: impl Dispatcher,
shutdown: impl Future<Output = ()> + Send,
) -> ServeReport
pub async fn serve_with_shutdown( self, dispatcher: impl Dispatcher, shutdown: impl Future<Output = ()> + Send, ) -> ServeReport
Accepts until shutdown resolves, then drains.
Returns once every connection has finished or drain_timeout expires,
whichever comes first — never before one of the two, which is the whole
point of it existing.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Server
impl RefUnwindSafe for Server
impl Send for Server
impl Sync for Server
impl Unpin for Server
impl UnsafeUnpin for Server
impl UnwindSafe for Server
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request