aboutsummaryrefslogtreecommitdiffstats
path: root/core/chain_manager.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-02-17 23:12:55 +0800
committerobscuren <geffobscura@gmail.com>2015-02-17 23:12:55 +0800
commit567428fb3489d639cd7fdcd50e4362be52745ec4 (patch)
tree99e4353cc44bb392ef6583bb82a4e386ead6587c /core/chain_manager.go
parent815ead71078d63c6d07cdee8b91679e307bedcb2 (diff)
downloadgo-tangerine-567428fb3489d639cd7fdcd50e4362be52745ec4.tar
go-tangerine-567428fb3489d639cd7fdcd50e4362be52745ec4.tar.gz
go-tangerine-567428fb3489d639cd7fdcd50e4362be52745ec4.tar.bz2
go-tangerine-567428fb3489d639cd7fdcd50e4362be52745ec4.tar.lz
go-tangerine-567428fb3489d639cd7fdcd50e4362be52745ec4.tar.xz
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.go13
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})
}