bitxhub/pkg/peermgr/peermgr.go

64 lines
1.5 KiB
Go

package peermgr
import (
"github.com/ethereum/go-ethereum/event"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/meshplus/bitxhub-model/pb"
"github.com/meshplus/bitxhub/internal/model/events"
network "github.com/meshplus/go-lightp2p"
)
//go:generate mockgen -destination mock_peermgr/mock_peermgr.go -package mock_peermgr -source peermgr.go
type PeerManager interface {
// Start
Start() error
// Stop
Stop() error
// AsyncSend sends message to peer with peer info.
AsyncSend(uint64, *pb.Message) error
// SendWithStream sends message using existed stream
SendWithStream(network.Stream, *pb.Message) error
// Send sends message waiting response
Send(uint64, *pb.Message) (*pb.Message, error)
// Broadcast message to all node
Broadcast(*pb.Message) error
// CountConnectedPeers counts connected peer numbers
CountConnectedPeers() uint64
// Peers
Peers() map[uint64]*pb.VpInfo
// OtherPeers
OtherPeers() map[uint64]*peer.AddrInfo
// SubscribeOrderMessage
SubscribeOrderMessage(ch chan<- events.OrderMessageEvent) event.Subscription
// AddNode adds a vp peer.
AddNode(newNodeID uint64, vpInfo *pb.VpInfo)
// DelNode deletes a vp peer.
DelNode(delID uint64)
// UpdateRouter update the local router to quorum router.
UpdateRouter(vpInfos map[uint64]*pb.VpInfo, isNew bool) bool
// Disconnect disconnect with all vp peers.
Disconnect(vpInfos map[uint64]*pb.VpInfo)
// PierManager
PierManager() PierManager
}
type PierManager interface {
Piers() *Piers
AskPierMaster(string) (bool, error)
}