4 cmn "github.com/tendermint/tmlibs/common"
7 type Reactor interface {
8 cmn.Service // Start, Stop
10 // SetSwitch allows setting a switch.
13 // GetChannels returns the list of channel descriptors.
14 GetChannels() []*ChannelDescriptor
16 // AddPeer is called by the switch when a new peer is added.
17 AddPeer(peer *Peer) error
19 // RemovePeer is called by the switch when the peer is stopped (due to error
21 RemovePeer(peer *Peer, reason interface{})
23 // Receive is called when msgBytes is received from peer.
25 // NOTE reactor can not keep msgBytes around after Receive completes without
28 // CONTRACT: msgBytes are not nil.
29 Receive(chID byte, peer *Peer, msgBytes []byte)
32 //--------------------------------------
34 type BaseReactor struct {
35 cmn.BaseService // Provides Start, Stop, .Quit
39 func NewBaseReactor(name string, impl Reactor) *BaseReactor {
41 BaseService: *cmn.NewBaseService(nil, name, impl),
46 func (br *BaseReactor) SetSwitch(sw *Switch) {
49 func (*BaseReactor) GetChannels() []*ChannelDescriptor { return nil }
50 func (*BaseReactor) AddPeer(peer *Peer) {}
51 func (*BaseReactor) RemovePeer(peer *Peer, reason interface{}) {}
52 func (*BaseReactor) Receive(chID byte, peer *Peer, msgBytes []byte) {}