Struct libp2p::request_response::RequestResponse [−][src]
pub struct RequestResponse<TCodec> where
TCodec: 'static + RequestResponseCodec + Clone + Send, { /* fields omitted */ }
Expand description
A request/response protocol for some message codec.
Implementations
impl<TCodec> RequestResponse<TCodec> where
TCodec: 'static + RequestResponseCodec + Clone + Send,
impl<TCodec> RequestResponse<TCodec> where
TCodec: 'static + RequestResponseCodec + Clone + Send,
pub fn new<I>(
codec: TCodec,
protocols: I,
cfg: RequestResponseConfig
) -> RequestResponse<TCodec> where
I: IntoIterator<Item = (<TCodec as RequestResponseCodec>::Protocol, ProtocolSupport)>,
pub fn new<I>(
codec: TCodec,
protocols: I,
cfg: RequestResponseConfig
) -> RequestResponse<TCodec> where
I: IntoIterator<Item = (<TCodec as RequestResponseCodec>::Protocol, ProtocolSupport)>,
Creates a new RequestResponse
behaviour for the given
protocols, codec and configuration.
pub fn send_request(
&mut self,
peer: &PeerId,
request: <TCodec as RequestResponseCodec>::Request
) -> RequestId
pub fn send_request(
&mut self,
peer: &PeerId,
request: <TCodec as RequestResponseCodec>::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
.
pub fn send_response(
&mut self,
ch: ResponseChannel<<TCodec as RequestResponseCodec>::Response>,
rs: <TCodec as RequestResponseCodec>::Response
) -> Result<(), <TCodec as RequestResponseCodec>::Response>
pub fn send_response(
&mut self,
ch: ResponseChannel<<TCodec as RequestResponseCodec>::Response>,
rs: <TCodec as RequestResponseCodec>::Response
) -> Result<(), <TCodec as RequestResponseCodec>::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: 'static + RequestResponseCodec + Send + Clone,
impl<TCodec> NetworkBehaviour for RequestResponse<TCodec> where
TCodec: 'static + RequestResponseCodec + Send + Clone,
type ProtocolsHandler = RequestResponseHandler<TCodec>
type ProtocolsHandler = RequestResponseHandler<TCodec>
Handler for all the protocols the network behaviour supports.
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>
Event generated by the NetworkBehaviour
and that the swarm will report back.
pub fn new_handler(
&mut self
) -> <RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler
pub fn new_handler(
&mut self
) -> <RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler
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
Indicate to the behaviour that we connected to the node with the given peer id. Read more
pub fn inject_connection_established(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint,
_errors: Option<&Vec<Multiaddr, Global>>
)
pub fn inject_connection_established(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint,
_errors: Option<&Vec<Multiaddr, Global>>
)
Informs the behaviour about a newly established connection to a peer.
pub fn inject_connection_closed(
&mut self,
peer_id: &PeerId,
conn: &ConnectionId,
&ConnectedPoint,
<<RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler as IntoProtocolsHandler>::Handler
)
pub fn inject_connection_closed(
&mut self,
peer_id: &PeerId,
conn: &ConnectionId,
&ConnectedPoint,
<<RequestResponse<TCodec> as NetworkBehaviour>::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
pub fn inject_dial_failure(
&mut self,
peer: Option<PeerId>,
<RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler,
&DialError
)
pub fn inject_dial_failure(
&mut self,
peer: Option<PeerId>,
<RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler,
&DialError
)
Indicates to the behaviour that the dial to a known or unknown node failed.
pub fn inject_event(
&mut self,
peer: PeerId,
connection: ConnectionId,
event: RequestResponseHandlerEvent<TCodec>
)
pub 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
pub fn poll(
&mut self,
&mut Context<'_>,
&mut impl PollParameters
) -> Poll<NetworkBehaviourAction<<RequestResponse<TCodec> as NetworkBehaviour>::OutEvent, <RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler, <<<RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent>>
pub fn poll(
&mut self,
&mut Context<'_>,
&mut impl PollParameters
) -> Poll<NetworkBehaviourAction<<RequestResponse<TCodec> as NetworkBehaviour>::OutEvent, <RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler, <<<RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent>>
Polls for things that swarm should do. Read more
fn inject_address_change(
&mut self,
&PeerId,
&ConnectionId,
_old: &ConnectedPoint,
_new: &ConnectedPoint
)
fn inject_address_change(
&mut self,
&PeerId,
&ConnectionId,
_old: &ConnectedPoint,
_new: &ConnectedPoint
)
Informs the behaviour that the ConnectedPoint
of an existing connection has changed.
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.