40 releases (breaking)
| 0.29.0 | Jun 27, 2025 |
|---|---|
| 0.28.0 | Jan 14, 2025 |
| 0.27.0 | Aug 9, 2024 |
| 0.26.3 | Jun 4, 2024 |
| 0.1.1 | Jul 13, 2020 |
#2268 in Network programming
578,602 downloads per month
Used in 501 crates
(9 directly)
1MB
16K
SLoC
Generic request/response protocols.
General Usage
The Behaviour struct 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. Behaviour is generic
over the actual messages being sent, which are defined in terms of a
Codec. Creating a request/response protocol thus amounts
to providing an implementation of this trait which can then be
given to Behaviour::with_codec. Further configuration options are
available via the Config.
Requests are sent using Behaviour::send_request and the
responses received as Message::Response via
Event::Message.
Responses are sent using Behaviour::send_response upon
receiving a Message::Request via
Event::Message.
Predefined codecs
In case your message types implement serde::Serialize and serde::Deserialize,
you can use two predefined behaviours:
cbor::Behaviourfor CBOR-encoded messagesjson::Behaviourfor JSON-encoded messages
Protocol Families
A single Behaviour instance can be used with an entire
protocol family that share the same request and response types.
For that purpose, Codec::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 Behaviour
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.
Dependencies
~12–18MB
~240K SLoC