Struct libp2p_request_response::RequestResponse
source · [−]pub struct RequestResponse<TCodec> where
TCodec: RequestResponseCodec + Clone + Send + 'static, { /* private fields */ }
Expand description
A request/response protocol for some message codec.
Implementations
impl<TCodec> RequestResponse<TCodec> where
TCodec: RequestResponseCodec + Clone + Send + 'static,
impl<TCodec> RequestResponse<TCodec> where
TCodec: RequestResponseCodec + Clone + Send + 'static,
pub fn new<I>(codec: TCodec, protocols: I, cfg: RequestResponseConfig) -> Self where
I: IntoIterator<Item = (TCodec::Protocol, ProtocolSupport)>,
pub fn new<I>(codec: TCodec, protocols: I, cfg: RequestResponseConfig) -> Self where
I: IntoIterator<Item = (TCodec::Protocol, ProtocolSupport)>,
Creates a new RequestResponse
behaviour for the given
protocols, codec and configuration.
Initiates sending a request.
If the targeted peer is currently not connected, a dialing attempt is initiated and the request is sent as soon as a connection is established.
Note: In order for such a dialing attempt to succeed, the
RequestResonse
protocol must either be embedded in anotherNetworkBehaviour
that provides peer and address discovery, or known addresses of peers must be managed viaRequestResponse::add_address
andRequestResponse::remove_address
.
pub fn send_response(
&mut self,
ch: ResponseChannel<TCodec::Response>,
rs: TCodec::Response
) -> Result<(), TCodec::Response>
pub fn send_response(
&mut self,
ch: ResponseChannel<TCodec::Response>,
rs: TCodec::Response
) -> Result<(), TCodec::Response>
Initiates sending a response to an inbound request.
If the ResponseChannel
is already closed due to a timeout or the
connection being closed, the response is returned as an Err
for
further handling. Once the response has been successfully sent on the
corresponding connection, RequestResponseEvent::ResponseSent
is
emitted. In all other cases RequestResponseEvent::InboundFailure
will be or has been emitted.
The provided ResponseChannel
is obtained from an inbound
RequestResponseMessage::Request
.
Adds a known address for a peer that can be used for
dialing attempts by the Swarm
, i.e. is returned
by NetworkBehaviour::addresses_of_peer
.
Addresses added in this way are only removed by remove_address
.
Removes an address of a peer previously added via add_address
.
Checks whether a peer is currently connected.
Checks whether an outbound request to the peer with the provided
PeerId
initiated by RequestResponse::send_request
is still
pending, i.e. waiting for a response.
Checks whether an inbound request from the peer with the provided
PeerId
is still pending, i.e. waiting for a response by the local
node through RequestResponse::send_response
.
Trait Implementations
impl<TCodec> NetworkBehaviour for RequestResponse<TCodec> where
TCodec: RequestResponseCodec + Send + Clone + 'static,
impl<TCodec> NetworkBehaviour for RequestResponse<TCodec> where
TCodec: RequestResponseCodec + Send + Clone + 'static,
type ProtocolsHandler = RequestResponseHandler<TCodec>
type ProtocolsHandler = RequestResponseHandler<TCodec>
Handler for all the protocols the network behaviour supports.
type OutEvent = RequestResponseEvent<TCodec::Request, TCodec::Response>
type OutEvent = RequestResponseEvent<TCodec::Request, TCodec::Response>
Event generated by the NetworkBehaviour
and that the swarm will report back.
Creates a new ProtocolsHandler
for a connection with a peer. Read more
Addresses that this behaviour is aware of for this specific peer, and that may allow reaching the peer. Read more
fn inject_address_change(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
_old: &ConnectedPoint,
new: &ConnectedPoint
)
fn inject_address_change(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
_old: &ConnectedPoint,
new: &ConnectedPoint
)
Informs the behaviour that the ConnectedPoint
of an existing connection has changed.
Indicate to the behaviour that we connected to the node with the given peer id. Read more
fn inject_connection_established(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint,
_errors: Option<&Vec<Multiaddr>>
)
fn inject_connection_established(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint,
_errors: Option<&Vec<Multiaddr>>
)
Informs the behaviour about a newly established connection to a peer.
fn inject_connection_closed(
&mut self,
peer_id: &PeerId,
conn: &ConnectionId,
_: &ConnectedPoint,
_: <Self::ProtocolsHandler as IntoProtocolsHandler>::Handler
)
fn inject_connection_closed(
&mut self,
peer_id: &PeerId,
conn: &ConnectionId,
_: &ConnectedPoint,
_: <Self::ProtocolsHandler as IntoProtocolsHandler>::Handler
)
Informs the behaviour about a closed connection to a peer. Read more
Indicates to the behaviour that we disconnected from the node with the given peer id. Read more
fn inject_dial_failure(
&mut self,
peer: Option<PeerId>,
_: Self::ProtocolsHandler,
_: &DialError
)
fn inject_dial_failure(
&mut self,
peer: Option<PeerId>,
_: Self::ProtocolsHandler,
_: &DialError
)
Indicates to the behaviour that the dial to a known or unknown node failed.
fn inject_event(
&mut self,
peer: PeerId,
connection: ConnectionId,
event: RequestResponseHandlerEvent<TCodec>
)
fn inject_event(
&mut self,
peer: PeerId,
connection: ConnectionId,
event: RequestResponseHandlerEvent<TCodec>
)
Informs the behaviour about an event generated by the handler dedicated to the peer identified by peer_id
.
for the behaviour. Read more
fn poll(
&mut self,
_: &mut Context<'_>,
_: &mut impl PollParameters
) -> Poll<NetworkBehaviourAction<Self::OutEvent, Self::ProtocolsHandler>>
fn poll(
&mut self,
_: &mut Context<'_>,
_: &mut impl PollParameters
) -> Poll<NetworkBehaviourAction<Self::OutEvent, Self::ProtocolsHandler>>
Polls for things that swarm should do. Read more
fn inject_listen_failure(
&mut self,
_local_addr: &Multiaddr,
_send_back_addr: &Multiaddr,
_handler: Self::ProtocolsHandler
)
fn inject_listen_failure(
&mut self,
_local_addr: &Multiaddr,
_send_back_addr: &Multiaddr,
_handler: Self::ProtocolsHandler
)
Indicates to the behaviour that an error happened on an incoming connection during its initial handshake. Read more
Indicates to the behaviour that a new listener was created.
Indicates to the behaviour that we have started listening on a new multiaddr.
Indicates to the behaviour that a multiaddr we were listening on has expired, which means that we are no longer listening in it. Read more
A listener experienced an error.
A listener closed.
Indicates to the behaviour that we have discovered a new external address for us.
Indicates to the behaviour that an external address was removed.