|
|
|
@ -80,6 +80,8 @@ type Ethereum struct { |
|
|
|
|
keyManager *ethcrypto.KeyManager |
|
|
|
|
|
|
|
|
|
clientIdentity ethwire.ClientIdentity |
|
|
|
|
|
|
|
|
|
isUpToDate bool |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func New(db ethutil.Database, clientIdentity ethwire.ClientIdentity, keyManager *ethcrypto.KeyManager, caps Caps, usePnp bool) (*Ethereum, error) { |
|
|
|
@ -107,6 +109,7 @@ func New(db ethutil.Database, clientIdentity ethwire.ClientIdentity, keyManager |
|
|
|
|
nat: nat, |
|
|
|
|
keyManager: keyManager, |
|
|
|
|
clientIdentity: clientIdentity, |
|
|
|
|
isUpToDate: true, |
|
|
|
|
} |
|
|
|
|
ethereum.reactor = ethutil.NewReactorEngine() |
|
|
|
|
|
|
|
|
@ -371,6 +374,7 @@ func (s *Ethereum) Start(seed bool) { |
|
|
|
|
|
|
|
|
|
// Start the reaping processes
|
|
|
|
|
go s.ReapDeadPeerHandler() |
|
|
|
|
go s.update() |
|
|
|
|
|
|
|
|
|
if seed { |
|
|
|
|
s.Seed() |
|
|
|
@ -510,3 +514,23 @@ out: |
|
|
|
|
ethlogger.Debugln("succesfully disestablished UPnP port mapping") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (self *Ethereum) update() { |
|
|
|
|
upToDateTimer := time.NewTicker(1 * time.Second) |
|
|
|
|
|
|
|
|
|
out: |
|
|
|
|
for { |
|
|
|
|
select { |
|
|
|
|
case <-upToDateTimer.C: |
|
|
|
|
if self.IsUpToDate() && !self.isUpToDate { |
|
|
|
|
self.reactor.Post("chainSync", false) |
|
|
|
|
self.isUpToDate = true |
|
|
|
|
} else if !self.IsUpToDate() && self.isUpToDate { |
|
|
|
|
self.reactor.Post("chainSync", true) |
|
|
|
|
self.isUpToDate = false |
|
|
|
|
} |
|
|
|
|
case <-self.quit: |
|
|
|
|
break out |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|