Crate request_response

Source
Expand description

Generic request/response protocols.

§General Usage

RequestResponse is a NetworkBehaviour that implements a generic request/response protocol or protocol family, whereby each request is sent over a new substream on a connection. RequestResponse is generic over the actual messages being sent, which are defined in terms of a RequestResponseCodec. Creating a request/response protocol thus amounts to providing an implementation of this trait which can then be given to RequestResponse::new. Further configuration options are available via the RequestResponseConfig.

Requests are sent using RequestResponse::send_request and the responses received as RequestResponseMessage::Response via RequestResponseEvent::Message.

Responses are sent using RequestResponse::send_response upon receiving a RequestResponseMessage::Request via RequestResponseEvent::Message.

§Protocol Families

A single RequestResponse instance can be used with an entire protocol family that share the same request and response types. For that purpose, RequestResponseCodec::Protocol is typically instantiated with a sum type.

§Limited Protocol Support

It is possible to only support inbound or outbound requests for a particular protocol. This is achieved by instantiating RequestResponse with protocols using ProtocolSupport::Inbound or ProtocolSupport::Outbound. Any subset of protocols of a protocol family can be configured in this way. Such protocols will not be advertised during inbound respectively outbound protocol negotiation on the substreams.

Re-exports§

pub use codec::RequestResponseCodec;
pub use handler::ProtocolSupport;
pub use throttled::Throttled;

Modules§

codec
handler
throttled
Limit the number of requests peers can send to each other.

Structs§

RequestId
The ID of an inbound or outbound request.
RequestResponse
A request/response protocol for some message codec.
RequestResponseConfig
The configuration for a RequestResponse protocol.
ResponseChannel
A channel for sending a response to an inbound request.

Enums§

InboundFailure
Possible failures occurring in the context of receiving an inbound request and sending a response.
OutboundFailure
Possible failures occurring in the context of sending an outbound request and receiving the response.
RequestResponseEvent
The events emitted by a RequestResponse protocol.
RequestResponseMessage
An inbound request or response.

Traits§

ProtocolName
Types serving as protocol names.