Struct libp2p::request_response::RequestResponse [−][src]
A request/response protocol for some message codec.
Implementations
impl<TCodec> RequestResponse<TCodec> where
TCodec: RequestResponseCodec + Clone,
[src]
TCodec: RequestResponseCodec + Clone,
pub fn new<I>(
codec: TCodec,
protocols: I,
cfg: RequestResponseConfig
) -> RequestResponse<TCodec> where
I: IntoIterator<Item = (<TCodec as RequestResponseCodec>::Protocol, ProtocolSupport)>,
[src]
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 throttled<I>(
c: TCodec,
protos: I,
cfg: RequestResponseConfig
) -> Throttled<TCodec> where
I: IntoIterator<Item = (<TCodec as RequestResponseCodec>::Protocol, ProtocolSupport)>,
TCodec: Send,
<TCodec as RequestResponseCodec>::Protocol: Sync,
[src]
c: TCodec,
protos: I,
cfg: RequestResponseConfig
) -> Throttled<TCodec> where
I: IntoIterator<Item = (<TCodec as RequestResponseCodec>::Protocol, ProtocolSupport)>,
TCodec: Send,
<TCodec as RequestResponseCodec>::Protocol: Sync,
Creates a RequestResponse
which limits requests per peer.
The behaviour is wrapped in Throttled
and detects the limits
per peer at runtime which are then enforced.
pub fn send_request(
&mut self,
peer: &PeerId,
request: <TCodec as RequestResponseCodec>::Request
) -> RequestId
[src]
&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
)
[src]
&mut self,
ch: ResponseChannel<<TCodec as RequestResponseCodec>::Response>,
rs: <TCodec as RequestResponseCodec>::Response
)
Initiates sending a response to an inbound request.
If the ResponseChannel
is already closed due to a timeout,
the response is discarded and eventually RequestResponseEvent::InboundFailure
is emitted by RequestResponse::poll
.
The provided ResponseChannel
is obtained from a
RequestResponseMessage::Request
.
pub fn add_address(&mut self, peer: &PeerId, address: Multiaddr)
[src]
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
.
pub fn remove_address(&mut self, peer: &PeerId, address: &Multiaddr)
[src]
Removes an address of a peer previously added via add_address
.
pub fn is_connected(&self, peer: &PeerId) -> bool
[src]
Checks whether a peer is currently connected.
pub fn is_pending_outbound(&self, req_id: &RequestId) -> bool
[src]
Checks whether an outbound request initiated by
RequestResponse::send_request
is still pending, i.e. waiting
for a response.
Trait Implementations
impl<TCodec> NetworkBehaviour for RequestResponse<TCodec> where
TCodec: RequestResponseCodec + Send + Clone + 'static,
[src]
TCodec: RequestResponseCodec + Send + Clone + 'static,
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>
Event generated by the NetworkBehaviour
and that the swarm will report back.
pub fn new_handler(
&mut self
) -> <RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler
[src]
&mut self
) -> <RequestResponse<TCodec> as NetworkBehaviour>::ProtocolsHandler
pub fn addresses_of_peer(&mut self, peer: &PeerId) -> Vec<Multiaddr, Global>
[src]
pub fn inject_connected(&mut self, peer: &PeerId)
[src]
pub fn inject_connection_established(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint
)
[src]
&mut self,
peer: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint
)
pub fn inject_connection_closed(
&mut self,
peer: &PeerId,
conn: &ConnectionId,
&ConnectedPoint
)
[src]
&mut self,
peer: &PeerId,
conn: &ConnectionId,
&ConnectedPoint
)
pub fn inject_disconnected(&mut self, peer: &PeerId)
[src]
pub fn inject_dial_failure(&mut self, peer: &PeerId)
[src]
pub fn inject_event(
&mut self,
peer: PeerId,
ConnectionId,
event: RequestResponseHandlerEvent<TCodec>
)
[src]
&mut self,
peer: PeerId,
ConnectionId,
event: RequestResponseHandlerEvent<TCodec>
)
pub fn poll(
&mut self,
&mut Context<'_>,
&mut impl PollParameters
) -> Poll<NetworkBehaviourAction<RequestProtocol<TCodec>, RequestResponseEvent<<TCodec as RequestResponseCodec>::Request, <TCodec as RequestResponseCodec>::Response, <TCodec as RequestResponseCodec>::Response>>>
[src]
&mut self,
&mut Context<'_>,
&mut impl PollParameters
) -> Poll<NetworkBehaviourAction<RequestProtocol<TCodec>, RequestResponseEvent<<TCodec as RequestResponseCodec>::Request, <TCodec as RequestResponseCodec>::Response, <TCodec as RequestResponseCodec>::Response>>>
pub fn inject_address_change(
&mut self,
&PeerId,
&ConnectionId,
_old: &ConnectedPoint,
_new: &ConnectedPoint
)
[src]
&mut self,
&PeerId,
&ConnectionId,
_old: &ConnectedPoint,
_new: &ConnectedPoint
)
pub fn inject_addr_reach_failure(
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
[src]
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error
)
pub fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
[src]
pub fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
[src]
pub fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
[src]
pub fn inject_listener_error(
&mut self,
_id: ListenerId,
_err: &(dyn Error + 'static)
)
[src]
&mut self,
_id: ListenerId,
_err: &(dyn Error + 'static)
)
pub fn inject_listener_closed(
&mut self,
_id: ListenerId,
_reason: Result<(), &Error>
)
[src]
&mut self,
_id: ListenerId,
_reason: Result<(), &Error>
)
Auto Trait Implementations
impl<TCodec> !RefUnwindSafe for RequestResponse<TCodec>
impl<TCodec> Send for RequestResponse<TCodec> where
TCodec: Send,
TCodec: Send,
impl<TCodec> Sync for RequestResponse<TCodec> where
TCodec: Sync,
<TCodec as RequestResponseCodec>::Protocol: Sync,
<TCodec as RequestResponseCodec>::Request: Sync,
<TCodec as RequestResponseCodec>::Response: Sync,
TCodec: Sync,
<TCodec as RequestResponseCodec>::Protocol: Sync,
<TCodec as RequestResponseCodec>::Request: Sync,
<TCodec as RequestResponseCodec>::Response: Sync,
impl<TCodec> Unpin for RequestResponse<TCodec> where
TCodec: Unpin,
<TCodec as RequestResponseCodec>::Protocol: Unpin,
<TCodec as RequestResponseCodec>::Request: Unpin,
<TCodec as RequestResponseCodec>::Response: Unpin,
TCodec: Unpin,
<TCodec as RequestResponseCodec>::Protocol: Unpin,
<TCodec as RequestResponseCodec>::Request: Unpin,
<TCodec as RequestResponseCodec>::Response: Unpin,
impl<TCodec> !UnwindSafe for RequestResponse<TCodec>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
[src]
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
[src]
V: MultiLane<T>,