Files
tendermint/p2p
Erik Grinaker 670e9b427b p2p: improve PeerManager prototype (#5936)
This improves the prototype peer manager by:

* Exporting `PeerManager`, making it accessible by e.g. reactors.
* Replacing `Router.SubscribePeerUpdates()` with `PeerManager.Subscribe()`.
* Tracking address/peer connection statistics, and retrying dial failures with exponential backoff.
* Prioritizing peers, with persistent peers configuration.
* Limiting simultaneous connections.
* Evicting peers and upgrading to higher-priority peers.
* Tracking peer heights, as a workaround for legacy shared peer state APIs.

This is getting to a point where we need to determine precise semantics and implement tests, so we should figure out whether it's a reasonable abstraction that we want to use. The main questions are around the API model (i.e. synchronous method calls with the router polling the manager, vs. an event-driven model using channels, vs. the peer manager calling methods on the router to connect/disconnect peers), and who should have the responsibility of managing actual connections (currently the router, while the manager only tracks peer state).
2021-01-21 18:07:54 +00:00
..
2021-01-04 11:25:20 +01:00
2021-01-04 11:25:20 +01:00
2020-10-13 10:22:53 +02:00
2021-01-08 15:32:11 +00:00
2021-01-04 11:25:20 +01:00
2021-01-06 11:53:18 -05:00
2021-01-06 11:53:18 -05:00
2021-01-06 11:53:18 -05:00
2021-01-04 11:25:20 +01:00
2021-01-04 11:25:20 +01:00
2021-01-08 15:32:11 +00:00
2020-02-07 12:53:28 +01:00
2021-01-06 11:53:18 -05:00
2021-01-21 14:18:27 +00:00
2021-01-04 11:25:20 +01:00
2021-01-08 15:32:11 +00:00

p2p

The p2p package provides an abstraction around peer-to-peer communication.

Docs:

  • Connection for details on how connections and multiplexing work
  • Peer for details on peer ID, handshakes, and peer exchange
  • Node for details about different types of nodes and how they should work
  • Pex for details on peer discovery and exchange
  • Config for details on some config option