mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 01:11:10 +00:00
Get rid of Peerset compatibility layer (#14337)
* Move bootnodes from individual `SetConfig`s to `PeersetConfig` * Move `SetId` & `SetConfig` from `peerset` to `protocol_controller` * Remove unused `DropReason` * Move `Message` & `IncomingIndex` from `peerset` to `protocol_controller` * Restore running fuzz test * Get rid of `Peerset` in `fuzz` test * Spawn runners instead of manual polling in `fuzz` test * Migrate `Protocol` from `Peerset` to `PeerStore` & `ProtocolController` * Migrate `NetworkService` from `Peerset` to `PeerStore` & `ProtocolController` * Migrate `Notifications` from `Peerset` to `ProtocolController`s * Migrate `Notifications` tests from `Peerset` to `ProtocolController` * Fix compilation of `NetworkService` & `Protocol` * Fix borrowing issues in `Notifications` * Migrate `RequestResponse`from `Peerset` to `PeerStore` * rustfmt * Migrate request-response tests from `Peerset` to `PeerStore` * Migrate `reconnect_after_disconnect` test to `PeerStore` & `ProtocolController` * Fix `Notifications` tests * Remove `Peerset` completely * Fix bug with counting sync peers in `Protocol` * Eliminate indirect calls to `PeerStore` via `Protocol` * Eliminate indirect calls to `ProtocolController` via `Protocol` * Handle `Err` outcome from `remove_peers_from_reserved_set` * Add note about disconnecting sync peers in `Protocol` * minor: remove unneeded `clone()` * minor: extra comma removed * minor: use `Stream` API of `from_protocol_controllers` channel * minor: remove TODO * minor: replace `.map().flatten()` with `.flat_map()` * minor: update `ProtocolController` docs * rustfmt * Apply suggestions from code review Co-authored-by: Aaro Altonen <48052676+altonen@users.noreply.github.com> * Extract `MockPeerStore` to `mock.rs` * Move `PeerStore` initialization to `build_network` * minor: remove unused import * minor: clarify error message * Convert `syncs_header_only_forks` test into single-threaded --------- Co-authored-by: Aaro Altonen <48052676+altonen@users.noreply.github.com>
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
//! [`PeerStore`] manages peer reputations and provides connection candidates to
|
||||
//! [`crate::protocol_controller::ProtocolController`].
|
||||
|
||||
use libp2p::PeerId;
|
||||
use log::trace;
|
||||
use parking_lot::Mutex;
|
||||
@@ -49,6 +52,7 @@ const INVERSE_DECREMENT: i32 = 50;
|
||||
/// remove it, once the reputation value reaches 0.
|
||||
const FORGET_AFTER: Duration = Duration::from_secs(3600);
|
||||
|
||||
/// Trait providing peer reputation management and connection candidates.
|
||||
pub trait PeerStoreProvider: Debug + Send {
|
||||
/// Check whether the peer is banned.
|
||||
fn is_banned(&self, peer_id: &PeerId) -> bool;
|
||||
@@ -69,6 +73,7 @@ pub trait PeerStoreProvider: Debug + Send {
|
||||
fn outgoing_candidates(&self, count: usize, ignored: HashSet<&PeerId>) -> Vec<PeerId>;
|
||||
}
|
||||
|
||||
/// Actual implementation of peer reputations and connection candidates provider.
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct PeerStoreHandle {
|
||||
inner: Arc<Mutex<PeerStoreInner>>,
|
||||
@@ -289,6 +294,7 @@ impl PeerStoreInner {
|
||||
}
|
||||
}
|
||||
|
||||
/// Worker part of [`PeerStoreHandle`]
|
||||
#[derive(Debug)]
|
||||
pub struct PeerStore {
|
||||
inner: Arc<Mutex<PeerStoreInner>>,
|
||||
|
||||
Reference in New Issue
Block a user