Skip to content
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 protocol to report external address view. #566

Merged
merged 5 commits into from
Oct 28, 2018

Conversation

twittner
Copy link
Contributor

Address part of #443.

@tomaka
Copy link
Member

tomaka commented Oct 17, 2018

Should be rebased over master, sorry!

type Future = Box<dyn Future<Item=(Self::Output, Self::MultiaddrFuture), Error=io::Error> + Send>;

fn protocol_names(&self) -> Self::NamesIter {
iter::once((Bytes::from("/observed-address/0.1.0"), ()))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is "experimental", I think we should have a "non-standard" protocol name.

Suggested change
iter::once((Bytes::from("/observed-address/0.1.0"), ()))
iter::once((Bytes::from("/paritytech/observed-address/0.1.0"), ()))

/// As `Dialer`, we get our own externally observed address.
ObservedAddr(Multiaddr),
/// As `Listener`, we return the underlying resource.
Resource(Framed<C, UviBytes>)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be an object that wraps around the Framed<C, UviBytes> and allows the user to send the multiaddress.


impl<C: AsyncWrite> Sender<C> {
/// Send address `a` to remote as the observed address.
pub fn send_address(self, a: &Multiaddr) -> impl Future<Item=C, Error=io::Error> {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this should have a return value. We want to enforce the protocol's correct behaviour (which is to close the substream afterwards) in the API.

Also, taking ownership of the Multiaddr removes one copy.


#[cfg(test)]
mod tests {
extern crate tokio_current_thread;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since there's already a PR to replace this with tokio (#577), I think you should do it here as well.

@twittner
Copy link
Contributor Author

Test failure is unrelated (kbucket::tests::basic_closest).

@twittner twittner merged commit 585c90a into libp2p:master Oct 28, 2018
@twittner twittner deleted the observed-address branch October 28, 2018 10:02
dvdplm added a commit to dvdplm/rust-libp2p that referenced this pull request Oct 29, 2018
…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)
dvdplm added a commit to dvdplm/rust-libp2p that referenced this pull request Oct 29, 2018
…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)
dvdplm added a commit to dvdplm/rust-libp2p that referenced this pull request Oct 29, 2018
…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)
dvdplm added a commit to dvdplm/rust-libp2p that referenced this pull request Nov 1, 2018
…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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants