|
|
- package consensus
-
- import (
- "github.com/tendermint/tendermint/types"
- )
-
- // XXX: WARNING: these functions can halt the consensus as firing events is synchronous.
- // Make sure to read off the channels, and in the case of subscribeToEventRespond, to write back on it
-
- // NOTE: if chanCap=0, this blocks on the event being consumed
- func subscribeToEvent(evsw types.EventSwitch, receiver, eventID string, chanCap int) chan interface{} {
- // listen for event
- ch := make(chan interface{}, chanCap)
- types.AddListenerForEvent(evsw, receiver, eventID, func(data types.TMEventData) {
- ch <- data
- })
- return ch
- }
-
- // NOTE: this blocks on receiving a response after the event is consumed
- func subscribeToEventRespond(evsw types.EventSwitch, receiver, eventID string) chan interface{} {
- // listen for event
- ch := make(chan interface{})
- types.AddListenerForEvent(evsw, receiver, eventID, func(data types.TMEventData) {
- ch <- data
- <-ch
- })
- return ch
- }
-
- func discardFromChan(ch chan interface{}, n int) {
- for i := 0; i < n; i++ {
- <-ch
- }
- }
|