cmd/mist, ethchain, ethminer: split TxEvent (#165)

poc8
Felix Lange 10 years ago
parent 5920aa7be6
commit 6b3f5fb82b
  1. 13
      cmd/mist/gui.go
  2. 14
      ethchain/events.go
  3. 2
      ethchain/state_manager.go
  4. 9
      ethchain/transaction_pool.go
  5. 6
      ethminer/miner.go

@ -408,7 +408,8 @@ func (gui *Gui) update() {
eth.ChainSyncEvent{},
eth.PeerListEvent{},
ethchain.NewBlockEvent{},
ethchain.TxEvent{},
ethchain.TxPreEvent{},
ethchain.TxPostEvent{},
ethminer.Event{},
)
@ -430,9 +431,8 @@ func (gui *Gui) update() {
gui.setWalletValue(gui.eth.StateManager().CurrentState().GetAccount(gui.address()).Balance(), nil)
}
case ethchain.TxEvent:
case ethchain.TxPreEvent:
tx := ev.Tx
if ev.Type == ethchain.TxPre {
object := state.GetAccount(gui.address())
if bytes.Compare(tx.Sender(), gui.address()) == 0 {
@ -442,11 +442,12 @@ func (gui *Gui) update() {
}
gui.setWalletValue(object.Balance(), unconfirmedFunds)
gui.insertTransaction("pre", tx)
} else if ev.Type == ethchain.TxPost {
case ethchain.TxPostEvent:
tx := ev.Tx
object := state.GetAccount(gui.address())
if bytes.Compare(tx.Sender(), gui.address()) == 0 {
object.SubAmount(tx.Value)
@ -460,9 +461,7 @@ func (gui *Gui) update() {
}
gui.setWalletValue(object.Balance(), nil)
state.UpdateStateObject(object)
}
// case object:
// gui.loadAddressBook()

@ -1,10 +1,10 @@
package ethchain
type TxEvent struct {
Type int // TxPre || TxPost
Tx *Transaction
}
// TxPreEvent is posted when a transaction enters the transaction pool.
type TxPreEvent struct{ Tx *Transaction }
type NewBlockEvent struct {
Block *Block
}
// TxPostEvent is posted when a transaction has been processed.
type TxPostEvent struct{ Tx *Transaction }
// NewBlockEvent is posted when a block has been imported.
type NewBlockEvent struct{ Block *Block }

@ -190,7 +190,7 @@ done:
}
// Notify all subscribers
self.eth.EventMux().Post(TxEvent{TxPost, tx})
self.eth.EventMux().Post(TxPostEvent{tx})
receipts = append(receipts, receipt)
handled = append(handled, tx)

@ -14,17 +14,12 @@ import (
var txplogger = ethlog.NewLogger("TXP")
const (
txPoolQueueSize = 50
)
const txPoolQueueSize = 50
type TxPoolHook chan *Transaction
type TxMsgTy byte
const (
TxPre = iota
TxPost
minGasPrice = 1000000
)
@ -169,7 +164,7 @@ out:
txplogger.Debugf("(t) %x => %x (%v) %x\n", tx.Sender()[:4], tmp, tx.Value, tx.Hash())
// Notify the subscribers
pool.Ethereum.EventMux().Post(TxEvent{TxPre, tx})
pool.Ethereum.EventMux().Post(TxPreEvent{tx})
}
case <-pool.quit:
break out

@ -64,7 +64,7 @@ func (miner *Miner) Start() {
miner.block = miner.ethereum.ChainManager().NewBlock(miner.coinbase)
mux := miner.ethereum.EventMux()
miner.events = mux.Subscribe(ethchain.NewBlockEvent{}, ethchain.TxEvent{})
miner.events = mux.Subscribe(ethchain.NewBlockEvent{}, ethchain.TxPreEvent{})
// Prepare inital block
//miner.ethereum.StateManager().Prepare(miner.block.State(), miner.block.State())
@ -125,8 +125,7 @@ func (miner *Miner) listener() {
}
}
case ethchain.TxEvent:
if event.Type == ethchain.TxPre {
case ethchain.TxPreEvent:
miner.stopMining()
found := false
@ -142,7 +141,6 @@ func (miner *Miner) listener() {
miner.txs = append(miner.txs, event.Tx)
}
}
}
case <-miner.powDone:
miner.startMining()

Loading…
Cancel
Save