Skip to main content

GrpcServerConn

Struct GrpcServerConn 

Source
pub struct GrpcServerConn<C = Prost> { /* private fields */ }
Available on crate feature server only.
Expand description

The control surface for a single gRPC call. Owns the Conn for the duration of one RPC — value in, value out.

Implementations§

Source§

impl<C> GrpcServerConn<C>

Source

pub fn received_headers(&self) -> &Headers

The request’s initial metadata (received headers), including any custom metadata the client attached.

Source

pub fn response_headers_mut(&mut self) -> &mut Headers

The response’s initial metadata, written straight through to the Conn. Committed to the wire when the handler returns, before the first response byte.

Source

pub fn response_trailers_mut(&mut self) -> &mut Headers

The response’s trailing metadata, emitted alongside grpc-status after the response body.

Source

pub fn deadline(&self) -> Option<Instant>

The deadline derived from the request’s grpc-timeout header, if any.

Source

pub fn requests<Req>(&mut self) -> RequestStream<'_, Req>
where C: Codec<Req>, Req: 'static,

A typed stream of decoded request messages.

Borrows the connection for the lifetime of the returned stream; read it to EOF (or drop it) before touching response headers again. The codec’s decode is selected by the GrpcServerConn’s codec parameter, so the only thing you supply is the message type:

let mut reqs = conn.requests::<HelloRequest>();
while let Some(req) = reqs.recv().await? { /* … */ }

Auto Trait Implementations§

§

impl<C = Prost> !RefUnwindSafe for GrpcServerConn<C>

§

impl<C = Prost> !UnwindSafe for GrpcServerConn<C>

§

impl<C> Freeze for GrpcServerConn<C>

§

impl<C> Send for GrpcServerConn<C>

§

impl<C> Sync for GrpcServerConn<C>

§

impl<C> Unpin for GrpcServerConn<C>

§

impl<C> UnsafeUnpin for GrpcServerConn<C>

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, 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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Server for T
where T: 'static,

Source§

async fn unary<Req, Resp>( conn: Conn, f: impl AsyncFnOnce(&mut GrpcServerConn<Self>, Req) -> Result<Resp, Status>, ) -> Conn
where Self: Codec<Req> + Codec<Resp>, Req: Send + 'static, Resp: Send + 'static,

Available on crate feature server only.
Unary RPC: read exactly one request, await the user function, emit one response frame followed by grpc-status trailers.
Source§

async fn client_streaming<Resp>( conn: Conn, f: impl AsyncFnOnce(&mut GrpcServerConn<Self>) -> Result<Resp, Status>, ) -> Conn
where Self: Codec<Resp>, Resp: Send + 'static,

Available on crate feature server only.
Client-streaming RPC: hand the user a GrpcServerConn from which they read the request stream (conn.requests::<Req>()); emit the single response frame and grpc-status trailers.
Source§

async fn server_streaming<Req, Resp, S>( conn: Conn, f: impl AsyncFnOnce(&mut GrpcServerConn<Self>, Req) -> Result<S, Status>, ) -> Conn
where Self: Codec<Req> + Codec<Resp>, Req: Send + 'static, Resp: Send + 'static, S: Stream<Item = Result<Resp, Status>> + Send + 'static,

Available on crate feature server only.
Server-streaming RPC: read one request, await the user function for a response Stream, then frame each item lazily into the response body with grpc-status trailers derived from how the stream ended.
Source§

async fn bidi<Req, Resp, R>( conn: Conn, prologue: impl AsyncFnOnce(&mut GrpcServerConn<Self>) -> Result<R, Status>, ) -> Conn
where Self: Codec<Req> + Codec<Resp>, Req: Send + 'static, Resp: Send + 'static, R: BidiResponder<Req, Resp>,

Available on crate feature server only.
Bidirectional-streaming RPC — the run-phase prologue. Hand the user a GrpcServerConn from which they may read early request messages (to decide response headers) and set initial metadata, then return a BidiResponder that drives the read-while-write loop after the head is flushed. Returning Err(Status) rejects before the flush (trailers-only, no upgrade). See crate::server::bidi for the seam mechanics.
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.