pub struct Throttled<C>{ /* private fields */ }Expand description
A wrapper around RequestResponse which adds request limits per peer.
Implementations§
Source§impl<C> Throttled<C>
impl<C> Throttled<C>
Sourcepub fn new<I>(c: C, protos: I, cfg: RequestResponseConfig) -> Self
pub fn new<I>(c: C, protos: I, cfg: RequestResponseConfig) -> Self
Create a new throttled request-response behaviour.
Sourcepub fn from(behaviour: RequestResponse<Codec<C>>) -> Self
pub fn from(behaviour: RequestResponse<Codec<C>>) -> Self
Wrap an existing RequestResponse behaviour and apply send/recv limits.
Sourcepub fn set_receive_limit(&mut self, limit: NonZeroU16)
pub fn set_receive_limit(&mut self, limit: NonZeroU16)
Set the global default receive limit per peer.
Sourcepub fn override_receive_limit(&mut self, p: &PeerId, limit: NonZeroU16)
pub fn override_receive_limit(&mut self, p: &PeerId, limit: NonZeroU16)
Override the receive limit of a single peer.
Sourcepub fn remove_override(&mut self, p: &PeerId)
pub fn remove_override(&mut self, p: &PeerId)
Remove any limit overrides for the given peer.
Sourcepub fn can_send(&mut self, p: &PeerId) -> bool
pub fn can_send(&mut self, p: &PeerId) -> bool
Has the limit of outbound requests been reached for the given peer?
Sourcepub fn send_request(
&mut self,
p: &PeerId,
req: C::Request,
) -> Result<RequestId, C::Request>
pub fn send_request( &mut self, p: &PeerId, req: C::Request, ) -> Result<RequestId, C::Request>
Send a request to a peer.
If the limit of outbound requests has been reached, the request is
returned. Sending more outbound requests should only be attempted
once Event::ResumeSending has been received from NetworkBehaviour::poll.
Sourcepub fn send_response(
&mut self,
ch: ResponseChannel<C::Response>,
res: C::Response,
) -> Result<(), C::Response>
pub fn send_response( &mut self, ch: ResponseChannel<C::Response>, res: C::Response, ) -> Result<(), C::Response>
Answer an inbound request with a response.
See RequestResponse::send_response for details.
Sourcepub fn add_address(&mut self, p: &PeerId, a: Multiaddr)
pub fn add_address(&mut self, p: &PeerId, a: Multiaddr)
Add a known peer address.
See RequestResponse::add_address for details.
Sourcepub fn remove_address(&mut self, p: &PeerId, a: &Multiaddr)
pub fn remove_address(&mut self, p: &PeerId, a: &Multiaddr)
Remove a previously added peer address.
See RequestResponse::remove_address for details.
Sourcepub fn is_connected(&self, p: &PeerId) -> bool
pub fn is_connected(&self, p: &PeerId) -> bool
Are we connected to the given peer?
See RequestResponse::is_connected for details.
Sourcepub fn is_pending_outbound(&self, p: &PeerId, r: &RequestId) -> bool
pub fn is_pending_outbound(&self, p: &PeerId, r: &RequestId) -> bool
Are we waiting for a response to the given request?
See RequestResponse::is_pending_outbound for details.
Sourcepub fn is_pending_inbound(&self, p: &PeerId, r: &RequestId) -> bool
pub fn is_pending_inbound(&self, p: &PeerId, r: &RequestId) -> bool
Is the remote waiting for the local node to respond to the given request?
See RequestResponse::is_pending_inbound for details.
Trait Implementations§
Source§impl<C> NetworkBehaviour for Throttled<C>
impl<C> NetworkBehaviour for Throttled<C>
Source§type ProtocolsHandler = RequestResponseHandler<Codec<C>>
type ProtocolsHandler = RequestResponseHandler<Codec<C>>
Source§type OutEvent = Event<<C as RequestResponseCodec>::Request, <C as RequestResponseCodec>::Response, Message<<C as RequestResponseCodec>::Response>>
type OutEvent = Event<<C as RequestResponseCodec>::Request, <C as RequestResponseCodec>::Response, Message<<C as RequestResponseCodec>::Response>>
NetworkBehaviour and that the swarm will report back.Source§fn new_handler(&mut self) -> Self::ProtocolsHandler
fn new_handler(&mut self) -> Self::ProtocolsHandler
ProtocolsHandler for a connection with a peer. Read moreSource§fn addresses_of_peer(&mut self, p: &PeerId) -> Vec<Multiaddr>
fn addresses_of_peer(&mut self, p: &PeerId) -> Vec<Multiaddr>
Source§fn inject_connection_established(
&mut self,
p: &PeerId,
id: &ConnectionId,
end: &ConnectedPoint,
)
fn inject_connection_established( &mut self, p: &PeerId, id: &ConnectionId, end: &ConnectedPoint, )
Source§fn inject_connection_closed(
&mut self,
peer: &PeerId,
id: &ConnectionId,
end: &ConnectedPoint,
)
fn inject_connection_closed( &mut self, peer: &PeerId, id: &ConnectionId, end: &ConnectedPoint, )
Source§fn inject_connected(&mut self, p: &PeerId)
fn inject_connected(&mut self, p: &PeerId)
Source§fn inject_disconnected(&mut self, p: &PeerId)
fn inject_disconnected(&mut self, p: &PeerId)
Source§fn inject_dial_failure(&mut self, p: &PeerId)
fn inject_dial_failure(&mut self, p: &PeerId)
Source§fn inject_event(
&mut self,
p: PeerId,
i: ConnectionId,
e: RequestResponseHandlerEvent<Codec<C>>,
)
fn inject_event( &mut self, p: PeerId, i: ConnectionId, e: RequestResponseHandlerEvent<Codec<C>>, )
peer_id.
for the behaviour. Read moreSource§fn poll(
&mut self,
cx: &mut Context<'_>,
params: &mut impl PollParameters,
) -> Poll<NetworkBehaviourAction<RequestProtocol<Codec<C>>, Self::OutEvent>>
fn poll( &mut self, cx: &mut Context<'_>, params: &mut impl PollParameters, ) -> Poll<NetworkBehaviourAction<RequestProtocol<Codec<C>>, Self::OutEvent>>
Source§fn inject_address_change(
&mut self,
_: &PeerId,
_: &ConnectionId,
_old: &ConnectedPoint,
_new: &ConnectedPoint,
)
fn inject_address_change( &mut self, _: &PeerId, _: &ConnectionId, _old: &ConnectedPoint, _new: &ConnectedPoint, )
ConnectedPoint of an existing connection has changed.Source§fn inject_addr_reach_failure(
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error,
)
fn inject_addr_reach_failure( &mut self, _peer_id: Option<&PeerId>, _addr: &Multiaddr, _error: &dyn Error, )
Source§fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
Source§fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
Source§fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
Source§fn inject_listener_error(
&mut self,
_id: ListenerId,
_err: &(dyn Error + 'static),
)
fn inject_listener_error( &mut self, _id: ListenerId, _err: &(dyn Error + 'static), )
Source§fn inject_listener_closed(
&mut self,
_id: ListenerId,
_reason: Result<(), &Error>,
)
fn inject_listener_closed( &mut self, _id: ListenerId, _reason: Result<(), &Error>, )
Auto Trait Implementations§
impl<C> !Freeze for Throttled<C>
impl<C> !RefUnwindSafe for Throttled<C>
impl<C> Send for Throttled<C>
impl<C> Sync for Throttled<C>where
C: Sync,
<C as RequestResponseCodec>::Request: Sync,
<C as RequestResponseCodec>::Response: Sync,
impl<C> Unpin for Throttled<C>where
C: Unpin,
<C as RequestResponseCodec>::Request: Unpin,
<C as RequestResponseCodec>::Response: Unpin,
<C as RequestResponseCodec>::Protocol: Unpin,
impl<C> !UnwindSafe for Throttled<C>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more