mirror of https://github.com/status-im/op-geth.git
geth: admin download status
This commit is contained in:
parent
2c1a6a349b
commit
5dd56bb474
|
@ -34,6 +34,7 @@ func (js *jsre) adminBindings() {
|
||||||
admin.Set("export", js.exportChain)
|
admin.Set("export", js.exportChain)
|
||||||
admin.Set("verbosity", js.verbosity)
|
admin.Set("verbosity", js.verbosity)
|
||||||
admin.Set("backtrace", js.backtrace)
|
admin.Set("backtrace", js.backtrace)
|
||||||
|
admin.Set("progress", js.downloadProgress)
|
||||||
|
|
||||||
admin.Set("miner", struct{}{})
|
admin.Set("miner", struct{}{})
|
||||||
t, _ = admin.Get("miner")
|
t, _ = admin.Get("miner")
|
||||||
|
@ -51,6 +52,12 @@ func (js *jsre) adminBindings() {
|
||||||
debug.Set("getBlockRlp", js.getBlockRlp)
|
debug.Set("getBlockRlp", js.getBlockRlp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (js *jsre) downloadProgress(call otto.FunctionCall) otto.Value {
|
||||||
|
current, max := js.ethereum.Downloader().Stats()
|
||||||
|
|
||||||
|
return js.re.ToVal(fmt.Sprintf("%d/%d", current, max))
|
||||||
|
}
|
||||||
|
|
||||||
func (js *jsre) getBlockRlp(call otto.FunctionCall) otto.Value {
|
func (js *jsre) getBlockRlp(call otto.FunctionCall) otto.Value {
|
||||||
var block *types.Block
|
var block *types.Block
|
||||||
if len(call.ArgumentList) > 0 {
|
if len(call.ArgumentList) > 0 {
|
||||||
|
|
|
@ -41,6 +41,17 @@ type chainInsertFn func(types.Blocks) error
|
||||||
type hashIterFn func() (common.Hash, error)
|
type hashIterFn func() (common.Hash, error)
|
||||||
type currentTdFn func() *big.Int
|
type currentTdFn func() *big.Int
|
||||||
|
|
||||||
|
type blockPack struct {
|
||||||
|
peerId string
|
||||||
|
blocks []*types.Block
|
||||||
|
}
|
||||||
|
|
||||||
|
type syncPack struct {
|
||||||
|
peer *peer
|
||||||
|
hash common.Hash
|
||||||
|
ignoreInitial bool
|
||||||
|
}
|
||||||
|
|
||||||
type Downloader struct {
|
type Downloader struct {
|
||||||
mu sync.RWMutex
|
mu sync.RWMutex
|
||||||
queue *queue
|
queue *queue
|
||||||
|
@ -65,17 +76,6 @@ type Downloader struct {
|
||||||
quit chan struct{}
|
quit chan struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
type blockPack struct {
|
|
||||||
peerId string
|
|
||||||
blocks []*types.Block
|
|
||||||
}
|
|
||||||
|
|
||||||
type syncPack struct {
|
|
||||||
peer *peer
|
|
||||||
hash common.Hash
|
|
||||||
ignoreInitial bool
|
|
||||||
}
|
|
||||||
|
|
||||||
func New(hasBlock hashCheckFn, insertChain chainInsertFn, currentTd currentTdFn) *Downloader {
|
func New(hasBlock hashCheckFn, insertChain chainInsertFn, currentTd currentTdFn) *Downloader {
|
||||||
downloader := &Downloader{
|
downloader := &Downloader{
|
||||||
queue: newqueue(),
|
queue: newqueue(),
|
||||||
|
@ -95,6 +95,10 @@ func New(hasBlock hashCheckFn, insertChain chainInsertFn, currentTd currentTdFn)
|
||||||
return downloader
|
return downloader
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *Downloader) Stats() (current int, max int) {
|
||||||
|
return d.queue.blockHashes.Size(), d.queue.fetchPool.Size() + d.queue.hashPool.Size()
|
||||||
|
}
|
||||||
|
|
||||||
func (d *Downloader) RegisterPeer(id string, td *big.Int, hash common.Hash, getHashes hashFetcherFn, getBlocks blockFetcherFn) error {
|
func (d *Downloader) RegisterPeer(id string, td *big.Int, hash common.Hash, getHashes hashFetcherFn, getBlocks blockFetcherFn) error {
|
||||||
d.mu.Lock()
|
d.mu.Lock()
|
||||||
defer d.mu.Unlock()
|
defer d.mu.Unlock()
|
||||||
|
|
Loading…
Reference in New Issue