|
|
|
@ -27,6 +27,7 @@ import ( |
|
|
|
|
var ( |
|
|
|
|
defaultGasPrice = big.NewInt(10000000000000) |
|
|
|
|
defaultGas = big.NewInt(10000) |
|
|
|
|
filterTickerTime = 15 * time.Second |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type EthereumApi struct { |
|
|
|
@ -62,6 +63,39 @@ func NewEthereumApi(eth *xeth.XEth) *EthereumApi { |
|
|
|
|
return api |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (self *EthereumApi) start() { |
|
|
|
|
timer := time.NewTicker(filterTickerTime) |
|
|
|
|
done: |
|
|
|
|
for { |
|
|
|
|
select { |
|
|
|
|
case <-timer.C: |
|
|
|
|
self.logMut.Lock() |
|
|
|
|
self.messagesMut.Lock() |
|
|
|
|
for id, filter := range self.logs { |
|
|
|
|
if time.Since(filter.timeout) > 20*time.Second { |
|
|
|
|
self.filterManager.UninstallFilter(id) |
|
|
|
|
delete(self.logs, id) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for id, filter := range self.messages { |
|
|
|
|
if time.Since(filter.timeout) > 20*time.Second { |
|
|
|
|
self.xeth.Whisper().Unwatch(id) |
|
|
|
|
delete(self.messages, id) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
self.logMut.Unlock() |
|
|
|
|
self.messagesMut.Unlock() |
|
|
|
|
case <-self.quit: |
|
|
|
|
break done |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (self *EthereumApi) stop() { |
|
|
|
|
close(self.quit) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (self *EthereumApi) Register(args string, reply *interface{}) error { |
|
|
|
|
self.regmut.Lock() |
|
|
|
|
defer self.regmut.Unlock() |
|
|
|
@ -600,38 +634,3 @@ func (p *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) error |
|
|
|
|
rpclogger.DebugDetailf("Reply: %T %s", reply, reply) |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var filterTickerTime = 15 * time.Second |
|
|
|
|
|
|
|
|
|
func (self *EthereumApi) start() { |
|
|
|
|
timer := time.NewTicker(filterTickerTime) |
|
|
|
|
done: |
|
|
|
|
for { |
|
|
|
|
select { |
|
|
|
|
case <-timer.C: |
|
|
|
|
self.logMut.Lock() |
|
|
|
|
self.messagesMut.Lock() |
|
|
|
|
for id, filter := range self.logs { |
|
|
|
|
if time.Since(filter.timeout) > 20*time.Second { |
|
|
|
|
self.filterManager.UninstallFilter(id) |
|
|
|
|
delete(self.logs, id) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for id, filter := range self.messages { |
|
|
|
|
if time.Since(filter.timeout) > 20*time.Second { |
|
|
|
|
self.xeth.Whisper().Unwatch(id) |
|
|
|
|
delete(self.messages, id) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
self.logMut.Unlock() |
|
|
|
|
self.messagesMut.Unlock() |
|
|
|
|
case <-self.quit: |
|
|
|
|
break done |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (self *EthereumApi) stop() { |
|
|
|
|
close(self.quit) |
|
|
|
|
} |
|
|
|
|