diff options
author | obscuren <geffobscura@gmail.com> | 2015-02-17 23:12:55 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-02-17 23:12:55 +0800 |
commit | 567428fb3489d639cd7fdcd50e4362be52745ec4 (patch) | |
tree | 99e4353cc44bb392ef6583bb82a4e386ead6587c /core/chain_manager.go | |
parent | 815ead71078d63c6d07cdee8b91679e307bedcb2 (diff) | |
download | go-tangerine-567428fb3489d639cd7fdcd50e4362be52745ec4.tar.gz go-tangerine-567428fb3489d639cd7fdcd50e4362be52745ec4.tar.zst go-tangerine-567428fb3489d639cd7fdcd50e4362be52745ec4.zip |
Filter and mutex locks added
Diffstat (limited to 'core/chain_manager.go')
-rw-r--r-- | core/chain_manager.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/core/chain_manager.go b/core/chain_manager.go index c28e901c6..025615676 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -79,6 +79,7 @@ type ChainManager struct { genesisBlock *types.Block // Last known total difficulty mu sync.RWMutex + tsmu sync.RWMutex td *big.Int currentBlock *types.Block lastBlockHash []byte @@ -131,9 +132,19 @@ func (self *ChainManager) State() *state.StateDB { } func (self *ChainManager) TransState() *state.StateDB { + self.tsmu.RLock() + defer self.tsmu.RUnlock() + //tmp := self.transState + return self.transState } +func (self *ChainManager) setTransState(statedb *state.StateDB) { + self.tsmu.Lock() + defer self.tsmu.Unlock() + self.transState = statedb +} + func (bc *ChainManager) setLastBlock() { data, _ := bc.db.Get([]byte("LastBlock")) if len(data) != 0 { @@ -376,7 +387,7 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error { self.setTotalDifficulty(td) self.insert(block) - self.transState = state.New(cblock.Root(), self.db) + self.setTransState(state.New(cblock.Root(), self.db)) self.eventMux.Post(ChainEvent{block, td}) } |