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§
source§impl<TCodec> RequestResponse<TCodec>where
TCodec: RequestResponseCodec + Clone + Send + 'static,
impl<TCodec> RequestResponse<TCodec>where
TCodec: RequestResponseCodec + Clone + Send + 'static,
sourcepub fn new<I>(codec: TCodec, protocols: I, cfg: RequestResponseConfig) -> Selfwhere
I: IntoIterator<Item = (TCodec::Protocol, ProtocolSupport)>,
pub fn new<I>(codec: TCodec, protocols: I, cfg: RequestResponseConfig) -> Selfwhere
I: IntoIterator<Item = (TCodec::Protocol, ProtocolSupport)>,
Creates a new RequestResponse
behaviour for the given
protocols, codec and configuration.
sourcepub fn send_request(
&mut self,
peer: &PeerId,
request: TCodec::Request
) -> RequestId
pub fn send_request(
&mut self,
peer: &PeerId,
request: TCodec::Request
) -> RequestId
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
.
sourcepub 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
.
sourcepub fn add_address(&mut self, peer: &PeerId, address: Multiaddr)
pub fn add_address(&mut self, peer: &PeerId, address: Multiaddr)
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
.
sourcepub fn remove_address(&mut self, peer: &PeerId, address: &Multiaddr)
pub fn remove_address(&mut self, peer: &PeerId, address: &Multiaddr)
Removes an address of a peer previously added via add_address
.
sourcepub fn is_connected(&self, peer: &PeerId) -> bool
pub fn is_connected(&self, peer: &PeerId) -> bool
Checks whether a peer is currently connected.
sourcepub fn is_pending_outbound(&self, peer: &PeerId, request_id: &RequestId) -> bool
pub fn is_pending_outbound(&self, peer: &PeerId, request_id: &RequestId) -> bool
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.
sourcepub fn is_pending_inbound(&self, peer: &PeerId, request_id: &RequestId) -> bool
pub fn is_pending_inbound(&self, peer: &PeerId, request_id: &RequestId) -> bool
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§
source§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 ConnectionHandler = RequestResponseHandler<TCodec>
type ConnectionHandler = RequestResponseHandler<TCodec>
§type OutEvent = RequestResponseEvent<<TCodec as RequestResponseCodec>::Request, <TCodec as RequestResponseCodec>::Response, <TCodec as RequestResponseCodec>::Response>
type OutEvent = RequestResponseEvent<<TCodec as RequestResponseCodec>::Request, <TCodec as RequestResponseCodec>::Response, <TCodec as RequestResponseCodec>::Response>
NetworkBehaviour
and that the swarm will report back.source§fn new_handler(&mut self) -> Self::ConnectionHandler
fn new_handler(&mut self) -> Self::ConnectionHandler
ConnectionHandler
for a connection with a peer. Read moresource§fn addresses_of_peer(&mut self, peer: &PeerId) -> Vec<Multiaddr>
fn addresses_of_peer(&mut self, peer: &PeerId) -> Vec<Multiaddr>
source§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
)
ConnectedPoint
of an existing connection has changed.source§fn inject_connection_established(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint,
_errors: Option<&Vec<Multiaddr>>,
other_established: usize
)
fn inject_connection_established(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint,
_errors: Option<&Vec<Multiaddr>>,
other_established: usize
)
source§fn inject_connection_closed(
&mut self,
peer_id: &PeerId,
conn: &ConnectionId,
_: &ConnectedPoint,
_: <Self::ConnectionHandler as IntoConnectionHandler>::Handler,
remaining_established: usize
)
fn inject_connection_closed(
&mut self,
peer_id: &PeerId,
conn: &ConnectionId,
_: &ConnectedPoint,
_: <Self::ConnectionHandler as IntoConnectionHandler>::Handler,
remaining_established: usize
)
source§fn inject_dial_failure(
&mut self,
peer: Option<PeerId>,
_: Self::ConnectionHandler,
_: &DialError
)
fn inject_dial_failure(
&mut self,
peer: Option<PeerId>,
_: Self::ConnectionHandler,
_: &DialError
)
source§fn inject_event(
&mut self,
peer: PeerId,
connection: ConnectionId,
event: RequestResponseHandlerEvent<TCodec>
)
fn inject_event(
&mut self,
peer: PeerId,
connection: ConnectionId,
event: RequestResponseHandlerEvent<TCodec>
)
peer_id
.
for the behaviour. Read more