core, miner: add PendingStateEvent to track non-log updates

pull/2267/head
Péter Szilágyi 9 years ago
parent 85865a51b6
commit b534106cc8
  1. 3
      core/events.go
  2. 11
      miner/worker.go

@ -35,6 +35,9 @@ type PendingLogsEvent struct {
Logs vm.Logs
}
// PendingStateEvent is posted pre mining and notifies of pending state changes.
type PendingStateEvent struct{}
// NewBlockEvent is posted when a block has been imported.
type NewBlockEvent struct{ Block *types.Block }

@ -649,8 +649,15 @@ func (env *Work) commitTransactions(mux *event.TypeMux, transactions types.Trans
coalescedLogs = append(coalescedLogs, logs...)
}
}
if len(coalescedLogs) > 0 {
go mux.Post(core.PendingLogsEvent{Logs: coalescedLogs})
if len(coalescedLogs) > 0 || env.tcount > 0 {
go func(logs vm.Logs, tcount int) {
if len(logs) > 0 {
mux.Post(core.PendingLogsEvent{Logs: logs})
}
if tcount > 0 {
mux.Post(core.PendingStateEvent{})
}
}(coalescedLogs, env.tcount)
}
}

Loading…
Cancel
Save