mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-25 12:57:18 +00:00
3a677ef342
* add params * add changes * bug fixes * fix method * get new assignments * add test and comments * change to slice of uint64 * add test * lint * Update beacon-chain/rpc/validator/assignments_test.go * Update beacon-chain/cache/committee_ids.go * Update beacon-chain/rpc/validator/assignments.go * add comment Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> Co-authored-by: terence tsao <terence@prysmaticlabs.com> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
78 lines
2.2 KiB
Go
78 lines
2.2 KiB
Go
package p2p
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gogo/protobuf/proto"
|
|
"github.com/libp2p/go-libp2p-core/network"
|
|
"github.com/libp2p/go-libp2p-core/peer"
|
|
pubsub "github.com/libp2p/go-libp2p-pubsub"
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/p2p/encoder"
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/p2p/peers"
|
|
pb "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1"
|
|
)
|
|
|
|
// P2P represents the full p2p interface composed of all of the sub-interfaces.
|
|
type P2P interface {
|
|
Broadcaster
|
|
SetStreamHandler
|
|
EncodingProvider
|
|
PubSubProvider
|
|
PeerManager
|
|
Sender
|
|
ConnectionHandler
|
|
PeersProvider
|
|
MetadataProvider
|
|
}
|
|
|
|
// Broadcaster broadcasts messages to peers over the p2p pubsub protocol.
|
|
type Broadcaster interface {
|
|
Broadcast(context.Context, proto.Message) error
|
|
}
|
|
|
|
// SetStreamHandler configures p2p to handle streams of a certain topic ID.
|
|
type SetStreamHandler interface {
|
|
SetStreamHandler(topic string, handler network.StreamHandler)
|
|
}
|
|
|
|
// ConnectionHandler configures p2p to handle connections with a peer.
|
|
type ConnectionHandler interface {
|
|
AddConnectionHandler(f func(ctx context.Context, id peer.ID) error, g func(context.Context, peer.ID) error)
|
|
AddDisconnectionHandler(f func(ctx context.Context, id peer.ID) error)
|
|
}
|
|
|
|
// EncodingProvider provides p2p network encoding.
|
|
type EncodingProvider interface {
|
|
Encoding() encoder.NetworkEncoding
|
|
}
|
|
|
|
// PubSubProvider provides the p2p pubsub protocol.
|
|
type PubSubProvider interface {
|
|
PubSub() *pubsub.PubSub
|
|
}
|
|
|
|
// PeerManager abstracts some peer management methods from libp2p.
|
|
type PeerManager interface {
|
|
Disconnect(peer.ID) error
|
|
PeerID() peer.ID
|
|
RefreshENR()
|
|
FindPeersWithSubnet(index uint64) (bool, error)
|
|
AddPingMethod(reqFunc func(ctx context.Context, id peer.ID) error)
|
|
}
|
|
|
|
// Sender abstracts the sending functionality from libp2p.
|
|
type Sender interface {
|
|
Send(context.Context, interface{}, string, peer.ID) (network.Stream, error)
|
|
}
|
|
|
|
// PeersProvider abstracts obtaining our current list of known peers status.
|
|
type PeersProvider interface {
|
|
Peers() *peers.Status
|
|
}
|
|
|
|
// MetadataProvider returns the metadata related information for the local peer.
|
|
type MetadataProvider interface {
|
|
Metadata() *pb.MetaData
|
|
MetadataSeq() uint64
|
|
}
|