1 unstable release
new 0.27.1 | Dec 9, 2024 |
---|
#1 in #behaviour
Used in ant-libp2p-autonat
710KB
14K
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::Behaviour
for CBOR-encoded messagesjson::Behaviour
for 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
~8–15MB
~187K SLoC