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}} }