pub struct GrpcSession<Role> { /* private fields */ }Expand description
Single-threaded session. Closed slots remain readable until explicitly removed.
Implementations§
Source§impl GrpcSession<Client>
impl GrpcSession<Client>
Source§impl GrpcSession<Server>
impl GrpcSession<Server>
Source§impl GrpcSession<Client>
impl GrpcSession<Client>
Sourcepub fn start_request(
&mut self,
authority: &str,
path: &str,
metadata: &Metadata,
timeout: Option<Timeout>,
encoding: CompressionAlgorithm,
end_stream: bool,
) -> Result<i32, Status>
pub fn start_request( &mut self, authority: &str, path: &str, metadata: &Metadata, timeout: Option<Timeout>, encoding: CompressionAlgorithm, end_stream: bool, ) -> Result<i32, Status>
Starts a POST request; false END_STREAM enables incremental message sending.
§Errors
Rejects stream limits, invalid metadata/timeout or protocol submission failure.
Sourcepub fn start_request_with_content_type(
&mut self,
authority: &str,
path: &str,
metadata: &Metadata,
timeout: Option<Timeout>,
encoding: CompressionAlgorithm,
end_stream: bool,
content_type: &str,
) -> Result<i32, Status>
pub fn start_request_with_content_type( &mut self, authority: &str, path: &str, metadata: &Metadata, timeout: Option<Timeout>, encoding: CompressionAlgorithm, end_stream: bool, content_type: &str, ) -> Result<i32, Status>
Starts a request with a codec media type independently of other RPCs.
§Errors
Rejects invalid media types, metadata, stream limits or protocol submission failure.
Source§impl GrpcSession<Server>
impl GrpcSession<Server>
Sourcepub fn reap_closed_undispatched_streams(&mut self) -> Result<usize, Status>
pub fn reap_closed_undispatched_streams(&mut self) -> Result<usize, Status>
Releases safely closed streams that were never handed to a request consumer. Dispatched streams retain their terminal state until explicitly removed.
§Errors
Returns a stream-removal error if its closure state is inconsistent.
Sourcepub fn pop_incoming_request(&mut self) -> Option<IncomingRequest>
pub fn pop_incoming_request(&mut self) -> Option<IncomingRequest>
Transfers the next received request’s routing information.
Sourcepub fn send_initial_metadata(
&mut self,
id: i32,
metadata: &Metadata,
encoding: CompressionAlgorithm,
) -> Result<(), Status>
pub fn send_initial_metadata( &mut self, id: i32, metadata: &Metadata, encoding: CompressionAlgorithm, ) -> Result<(), Status>
Sends response headers and installs an incremental body source.
§Errors
Rejects duplicate headers, ended streams and protocol submission failure.
Sourcepub fn send_initial_metadata_with_content_type(
&mut self,
id: i32,
metadata: &Metadata,
encoding: CompressionAlgorithm,
content_type: &str,
) -> Result<(), Status>
pub fn send_initial_metadata_with_content_type( &mut self, id: i32, metadata: &Metadata, encoding: CompressionAlgorithm, content_type: &str, ) -> Result<(), Status>
Starts a response using the codec selected for this RPC’s route.
§Errors
Rejects invalid media types, duplicate headers, ended streams or protocol failure.
Source§impl<Role> GrpcSession<Role>
impl<Role> GrpcSession<Role>
Sourcepub fn submit_goaway(&mut self, error_code: u32) -> Result<(), Status>
pub fn submit_goaway(&mut self, error_code: u32) -> Result<(), Status>
Queues GOAWAY at the last processed peer stream; existing RPCs may finish.
§Errors
Returns protocol submission or a previous connection failure.
Sourcepub fn want_read(&self) -> bool
pub fn want_read(&self) -> bool
Whether the protocol connection can accept additional inbound bytes.
Sourcepub fn want_write(&self) -> bool
pub fn want_write(&self) -> bool
Whether protocol frames or partially written transport bytes need sending.
Sourcepub fn goaway_received(&self) -> Option<(i32, u32)>
pub fn goaway_received(&self) -> Option<(i32, u32)>
The most restrictive peer GOAWAY boundary and its HTTP/2 error code.
Sourcepub fn stream_outbound_complete(&self, id: i32) -> bool
pub fn stream_outbound_complete(&self, id: i32) -> bool
Whether terminal output was serialized and tracked transport writes/flushes drained.
Sourcepub fn is_draining(&self) -> bool
pub fn is_draining(&self) -> bool
Whether local or peer GOAWAY has stopped admission of new RPCs.
Sourcepub fn send_message(
&mut self,
id: i32,
payload: &[u8],
encoding: CompressionAlgorithm,
) -> Result<(), Status>
pub fn send_message( &mut self, id: i32, payload: &[u8], encoding: CompressionAlgorithm, ) -> Result<(), Status>
Queues one framed message, preserving the stream’s negotiated encoding.
§Errors
Rejects ended streams, mismatched encodings, compression failure or byte excess.
Sourcepub fn cancel_stream(&mut self, id: i32, error_code: u32) -> Result<(), Status>
pub fn cancel_stream(&mut self, id: i32, error_code: u32) -> Result<(), Status>
Resets a stream and releases its queued outbound body. Completed NO_ERROR peer closure needs no additional local upload reset.
§Errors
Rejects unknown streams or protocol reset submission failure.
Sourcepub fn mem_recv(&mut self, bytes: &[u8]) -> Result<usize, Status>
pub fn mem_recv(&mut self, bytes: &[u8]) -> Result<usize, Status>
Feeds received HTTP/2 bytes and dispatches every resulting callback event.
§Errors
Returns protocol connection errors; malformed RPC streams are reset individually.
Sourcepub fn mem_send(&mut self) -> Result<&[u8], Status>
pub fn mem_send(&mut self) -> Result<&[u8], Status>
Produces the next HTTP/2 wire chunk, valid until the next mutable session call.
§Errors
Returns protocol connection or callback-processing errors.
Sourcepub fn flush_to_transport<T: SyncTransport>(
&mut self,
transport: &mut T,
) -> Result<(), Status>
pub fn flush_to_transport<T: SyncTransport>( &mut self, transport: &mut T, ) -> Result<(), Status>
Flushes wire output, retaining partially written chunks across WouldBlock.
§Errors
Returns transport or session failures; WouldBlock means retry later.
Sourcepub fn step_transport<T: SyncTransport>(
&mut self,
transport: &mut T,
buf: &mut [u8],
) -> Result<usize, Status>
pub fn step_transport<T: SyncTransport>( &mut self, transport: &mut T, buf: &mut [u8], ) -> Result<usize, Status>
Flushes outgoing data, reads once and routes inbound bytes.
§Errors
Returns transport EOF/errors or session errors. WouldBlock returns zero.
Sourcepub fn pop_initial_metadata(
&mut self,
id: i32,
) -> Result<Option<Metadata>, Status>
pub fn pop_initial_metadata( &mut self, id: i32, ) -> Result<Option<Metadata>, Status>
Transfers custom initial metadata, preserving stream lifecycle history.
§Errors
Returns unknown/reset stream or metadata decoding errors.
Sourcepub fn pop_message(
&mut self,
id: i32,
) -> Result<Option<AlignedMessageBuf>, Status>
pub fn pop_message( &mut self, id: i32, ) -> Result<Option<AlignedMessageBuf>, Status>
Transfers one decompressed message into eight-byte-aligned storage.
§Errors
Returns unknown/reset stream or allocation errors.