From cda88ce31a45af001443c71fb16bdb2bbe1efbc7 Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 13 Mar 2015 14:37:54 +0100 Subject: Implemented a manage state for keeping track of nonces --- core/chain_manager.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'core') diff --git a/core/chain_manager.go b/core/chain_manager.go index df3d6d1c3..7fed7b8b1 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -86,7 +86,7 @@ type ChainManager struct { lastBlockHash []byte transState *state.StateDB - txState *state.StateDB + txState *state.ManagedState quit chan struct{} } @@ -95,7 +95,8 @@ func NewChainManager(blockDb, stateDb ethutil.Database, mux *event.TypeMux) *Cha bc := &ChainManager{blockDb: blockDb, stateDb: stateDb, genesisBlock: GenesisBlock(stateDb), eventMux: mux, quit: make(chan struct{})} bc.setLastBlock() bc.transState = bc.State().Copy() - bc.txState = bc.State().Copy() + // Take ownership of this particular state + bc.txState = state.ManageState(bc.State().Copy()) go bc.update() return bc @@ -144,17 +145,17 @@ func (self *ChainManager) TransState() *state.StateDB { return self.transState } -func (self *ChainManager) TxState() *state.StateDB { +func (self *ChainManager) TxState() *state.ManagedState { self.tsmu.RLock() defer self.tsmu.RUnlock() return self.txState } -func (self *ChainManager) setTxState(state *state.StateDB) { +func (self *ChainManager) setTxState(statedb *state.StateDB) { self.tsmu.Lock() defer self.tsmu.Unlock() - self.txState = state + self.txState = state.ManageState(statedb) } func (self *ChainManager) setTransState(statedb *state.StateDB) { -- cgit