4 cmn "github.com/tendermint/tmlibs/common"
7 //Reactor is responsible for handling incoming messages of one or more `Channels`
8 type Reactor interface {
9 cmn.Service // Start, Stop
11 // SetSwitch allows setting a switch.
14 // GetChannels returns the list of channel descriptors.
15 GetChannels() []*ChannelDescriptor
17 // AddPeer is called by the switch when a new peer is added.
18 AddPeer(peer *Peer) error
20 // RemovePeer is called by the switch when the peer is stopped (due to error
22 RemovePeer(peer *Peer, reason interface{})
24 // Receive is called when msgBytes is received from peer.
26 // NOTE reactor can not keep msgBytes around after Receive completes without
29 // CONTRACT: msgBytes are not nil.
30 Receive(chID byte, peer *Peer, msgBytes []byte)
33 //BaseReactor base service of a reactor
34 type BaseReactor struct {
35 cmn.BaseService // Provides Start, Stop, .Quit
39 //NewBaseReactor create new base Reactor
40 func NewBaseReactor(name string, impl Reactor) *BaseReactor {
42 BaseService: *cmn.NewBaseService(nil, name, impl),
47 //SetSwitch setting a switch for reactor
48 func (br *BaseReactor) SetSwitch(sw *Switch) {
52 //GetChannels returns the list of channel descriptors
53 func (*BaseReactor) GetChannels() []*ChannelDescriptor { return nil }
55 //AddPeer is called by the switch when a new peer is added
56 func (*BaseReactor) AddPeer(peer *Peer) {}
58 //RemovePeer is called by the switch when the peer is stopped (due to error or other reason)
59 func (*BaseReactor) RemovePeer(peer *Peer, reason interface{}) {}
61 //Receive is called when msgBytes is received from peer
62 func (*BaseReactor) Receive(chID byte, peer *Peer, msgBytes []byte) {}