package behavior
|
|
|
|
import (
|
|
"github.com/tendermint/tendermint/p2p"
|
|
)
|
|
|
|
// PeerBehavior is a struct describing a behavior a peer performed.
|
|
// `peerID` identifies the peer and reason characterizes the specific
|
|
// behavior performed by the peer.
|
|
type PeerBehavior struct {
|
|
peerID p2p.NodeID
|
|
reason interface{}
|
|
}
|
|
|
|
type badMessage struct {
|
|
explanation string
|
|
}
|
|
|
|
// BadMessage returns a badMessage PeerBehavior.
|
|
func BadMessage(peerID p2p.NodeID, explanation string) PeerBehavior {
|
|
return PeerBehavior{peerID: peerID, reason: badMessage{explanation}}
|
|
}
|
|
|
|
type messageOutOfOrder struct {
|
|
explanation string
|
|
}
|
|
|
|
// MessageOutOfOrder returns a messagOutOfOrder PeerBehavior.
|
|
func MessageOutOfOrder(peerID p2p.NodeID, explanation string) PeerBehavior {
|
|
return PeerBehavior{peerID: peerID, reason: messageOutOfOrder{explanation}}
|
|
}
|
|
|
|
type consensusVote struct {
|
|
explanation string
|
|
}
|
|
|
|
// ConsensusVote returns a consensusVote PeerBehavior.
|
|
func ConsensusVote(peerID p2p.NodeID, explanation string) PeerBehavior {
|
|
return PeerBehavior{peerID: peerID, reason: consensusVote{explanation}}
|
|
}
|
|
|
|
type blockPart struct {
|
|
explanation string
|
|
}
|
|
|
|
// BlockPart returns blockPart PeerBehavior.
|
|
func BlockPart(peerID p2p.NodeID, explanation string) PeerBehavior {
|
|
return PeerBehavior{peerID: peerID, reason: blockPart{explanation}}
|
|
}
|