1d9a2022b4
I've needed to do this work in order to do some episub testing. This version of libp2p has not yet been released, so this is left as a draft for when we wish to update. Co-authored-by: Diva M <divma@protonmail.com>
34 lines
1.3 KiB
Rust
34 lines
1.3 KiB
Rust
use crate::discovery::Discovery;
|
|
use crate::peer_manager::PeerManager;
|
|
use crate::rpc::{ReqId, RPC};
|
|
use crate::types::SnappyTransform;
|
|
|
|
use libp2p::gossipsub::subscription_filter::{
|
|
MaxCountSubscriptionFilter, WhitelistSubscriptionFilter,
|
|
};
|
|
use libp2p::gossipsub::Gossipsub as BaseGossipsub;
|
|
use libp2p::identify::Behaviour as Identify;
|
|
use libp2p::swarm::NetworkBehaviour;
|
|
use types::EthSpec;
|
|
|
|
use super::api_types::RequestId;
|
|
|
|
pub type SubscriptionFilter = MaxCountSubscriptionFilter<WhitelistSubscriptionFilter>;
|
|
pub type Gossipsub = BaseGossipsub<SnappyTransform, SubscriptionFilter>;
|
|
|
|
#[derive(NetworkBehaviour)]
|
|
pub(crate) struct Behaviour<AppReqId: ReqId, TSpec: EthSpec> {
|
|
/// The routing pub-sub mechanism for eth2.
|
|
pub gossipsub: Gossipsub,
|
|
/// The Eth2 RPC specified in the wire-0 protocol.
|
|
pub eth2_rpc: RPC<RequestId<AppReqId>, TSpec>,
|
|
/// Discv5 Discovery protocol.
|
|
pub discovery: Discovery<TSpec>,
|
|
/// Keep regular connection to peers and disconnect if absent.
|
|
// NOTE: The id protocol is used for initial interop. This will be removed by mainnet.
|
|
/// Provides IP addresses and peer information.
|
|
pub identify: Identify,
|
|
/// The peer manager that keeps track of peer's reputation and status.
|
|
pub peer_manager: PeerManager<TSpec>,
|
|
}
|