Documentation ¶
Overview ¶
Package Behaviour provides a mechanism for reactors to report behaviour of peers.
Instead of a reactor calling the switch directly it will call the behaviour module which will handle the stoping and marking peer as good on behalf of the reactor.
There are four different behaviours a reactor can report.
1. bad message
type badMessage struct { explanation string }
This message will request the peer be stopped for an error ¶
2. message out of order
type messageOutOfOrder struct { explanation string }
This message will request the peer be stopped for an error ¶
3. consesnsus Vote
type consensusVote struct { explanation string }
This message will request the peer be marked as good ¶
4. block part
type blockPart struct { explanation string }
This message will request the peer be marked as good
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type MockReporter ¶
type MockReporter struct {
// contains filtered or unexported fields
}
MockReporter is a concrete implementation of the Reporter interface used in reactor tests to ensure reactors report the correct behaviour in manufactured scenarios.
func NewMockReporter ¶
func NewMockReporter() *MockReporter
NewMockReporter returns a Reporter which records all reported behaviours in memory.
func (*MockReporter) GetBehaviours ¶
func (mpbr *MockReporter) GetBehaviours(peerID p2p.ID) []PeerBehaviour
GetBehaviours returns all behaviours reported on the peer identified by peerID.
func (*MockReporter) Report ¶
func (mpbr *MockReporter) Report(behaviour PeerBehaviour) error
Report stores the PeerBehaviour produced by the peer identified by peerID.
type PeerBehaviour ¶
type PeerBehaviour struct {
// contains filtered or unexported fields
}
PeerBehaviour is a struct describing a behaviour a peer performed. `peerID` identifies the peer and reason characterizes the specific behaviour performed by the peer.
func BadMessage ¶
func BadMessage(peerID p2p.ID, explanation string) PeerBehaviour
BadMessage returns a badMessage PeerBehaviour.
func BlockPart ¶
func BlockPart(peerID p2p.ID, explanation string) PeerBehaviour
BlockPart returns blockPart PeerBehaviour.
func ConsensusVote ¶
func ConsensusVote(peerID p2p.ID, explanation string) PeerBehaviour
ConsensusVote returns a consensusVote PeerBehaviour.
func MessageOutOfOrder ¶
func MessageOutOfOrder(peerID p2p.ID, explanation string) PeerBehaviour
MessageOutOfOrder returns a messagOutOfOrder PeerBehaviour.
type Reporter ¶
type Reporter interface {
Report(behaviour PeerBehaviour) error
}
Reporter provides an interface for reactors to report the behaviour of peers synchronously to other components.
type SwitchReporter ¶
type SwitchReporter struct {
// contains filtered or unexported fields
}
SwitchReporter reports peer behaviour to an internal Switch.
func NewSwitchReporter ¶ added in v0.33.2
func NewSwitchReporter(sw *p2p.Switch) *SwitchReporter
NewSwitchReporter return a new SwitchReporter instance which wraps the Switch.
func (*SwitchReporter) Report ¶
func (spbr *SwitchReporter) Report(behaviour PeerBehaviour) error
Report reports the behaviour of a peer to the Switch.