New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a TransportExt trait #533
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some minimal module level docs + an example would be nice. Otherwise lgtm.
src/transport_ext.rs
Outdated
TransportTimeout::with_outgoing_timeout(self, timeout) | ||
} | ||
|
||
/// Adds a timeout to all the ingoing sockets created by the transport. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe s/ingoing/incoming/ ?
Tests are failing because of a compiler ICE. I can't reproduce it locally, so I assume it's been fixed in the nightly version of rustc. |
I commented out the |
src/transport_ext.rs
Outdated
|
||
/// Adds a timeout to all the outgoing sockets created by the transport. | ||
#[inline] | ||
fn with_outgoing_timeout(self, timeout: Duration) -> TransportTimeout<Self> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think outgoing
is an unfortunate choice of words here. How about with_outbound_timeout
? "outgoing" also means "extrovert" which reads a bit funny.
(Same for ingoing
below, not really a word – how about "inbound"?).
src/transport_ext.rs
Outdated
|
||
// TODO: this method causes an ICE in Rust 1.29 but works in Rust 1.30 ; restore it when | ||
// 1.30 is released | ||
/*/// Adds a maximum transfert rate to the sockets created with the transport. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/transfert/transfer/
Does the rate limit apply to both in- and outbound sockets? I'd assume it's only for inbound traffic, but might be good to specify, so maybe: "Sets a maximum transfer rate on inbound sockets created with the transport."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd assume it's only for inbound traffic, but might be good to specify
Why do you assume it's only for inbound traffic?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, it's common to see inbound traffic as a possible cause for trouble and worth controlling/limiting while leaving outbound traffic free. If that is not the case then maybe that's worth mentioning explicitly in the docs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If that is not the case then maybe that's worth mentioning explicitly in the docs?
That's what I did in the latest commit.
src/transport_ext.rs
Outdated
fn with_rate_limit( | ||
self, | ||
max_read_per_sec: usize, | ||
max_write_per_sec: usize, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are the max_read
and max_write
limits referring to the number of payloads (i.e. number of reads/writes of any size) or the number of bytes read/written?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The size of a payload is totally unpredictable, so I don't see how using a number of payloads would be a good idea.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As an example of "per payload" rate limiting, Nginx rate limiting works on the number of requests (of any kind/size). Anyway: these are bytes then.
src/transport_ext.rs
Outdated
/// use std::time::Duration; | ||
/// | ||
/// let _transport = TcpConfig::new() | ||
/// .with_timeout(Duration::from_secs(20)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When does the clock start ticking, on first poll? On first read/write?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's a timeout for when you connect, not when you read/write.
Restored the |
…e-handled_node * upstream/master: Add protocol to report external address view. (libp2p#566) Add a TransportExt trait (libp2p#533) libp2p#399 remove tokio_current_thread tests (libp2p#577)
…e-handled_node_tasks * upstream/master: Add protocol to report external address view. (libp2p#566) Add a TransportExt trait (libp2p#533) libp2p#399 remove tokio_current_thread tests (libp2p#577)
…lection_stream * upstream/master: Add protocol to report external address view. (libp2p#566) Add a TransportExt trait (libp2p#533) libp2p#399 remove tokio_current_thread tests (libp2p#577)
…ref-debug-impl * upstream/master: Use paritytech/rust-secp256k1 (libp2p#598) Use websocket 0.21.0 (libp2p#597) Reexport multihash from the facade (libp2p#587) Add substrate to the list of projects using libp2p (libp2p#595) Remove spaces before semicolons (libp2p#591) Add protocol to report external address view. (libp2p#566) Add a TransportExt trait (libp2p#533) libp2p#399 remove tokio_current_thread tests (libp2p#577) Remove even more unused files (libp2p#581) Fix the polling process in handled node (libp2p#582) Fix panicking when Kad responder is destroyed (libp2p#575) Remove other unused files (libp2p#570) Fix panic in raw swarm (libp2p#571) Remove two unused files (libp2p#567) New core (libp2p#568) Remove the old API (libp2p#565) Change some `nat_traversal`s to consider a prefix. (libp2p#550) Add some documentation to listeners stream (libp2p#547) Add shutdown functionality to `NodeStream`. (libp2p#560)
No description provided.