diff --git a/blockchain/v2/reactor.go b/blockchain/v2/reactor.go index 8cc8ac218..f96b325b0 100644 --- a/blockchain/v2/reactor.go +++ b/blockchain/v2/reactor.go @@ -38,11 +38,9 @@ type Reactor struct { logger log.Logger } -var bufferSize int = 10 - -func NewReactor() *Reactor { +func NewReactor(bufferSize int) *Reactor { return &Reactor{ - events: make(chan Event, bufferSize*2), + events: make(chan Event, bufferSize), stopDemux: make(chan struct{}), scheduler: newRoutine("scheduler", schedulerHandle, bufferSize), processor: newRoutine("processor", processorHandle, bufferSize), @@ -73,7 +71,7 @@ func (r *Reactor) Start() { }() } -// Would it be possible here to provide some kind of type safety for the types +// XXX: Would it be possible here to provide some kind of type safety for the types // of events that each routine can produce and consume? func (r *Reactor) demux() { for { @@ -82,7 +80,7 @@ func (r *Reactor) demux() { // XXX: check for backpressure r.scheduler.send(event) r.processor.send(event) - case _ = <-r.stopDemux: + case <-r.stopDemux: r.logger.Info("demuxing stopped") return case event := <-r.scheduler.next(): @@ -112,6 +110,7 @@ func (r *Reactor) Stop() { func (r *Reactor) Receive(event Event) { // XXX: decode and serialize write events + // TODO: backpressure r.events <- event } diff --git a/blockchain/v2/reactor_test.go b/blockchain/v2/reactor_test.go index 86ac728a9..46a2e60c6 100644 --- a/blockchain/v2/reactor_test.go +++ b/blockchain/v2/reactor_test.go @@ -5,7 +5,11 @@ import ( ) func TestReactor(t *testing.T) { - reactor := NewReactor() + var ( + bufferSize = 10 + reactor = NewReactor(bufferSize) + ) + reactor.Start() script := []Event{ // TODO