erigon-pulse/turbo/torrent/snapshot_mode.go
ledgerwatch cd706d5081
Download/seed block bodies and block headers via BitTorrent (#1218)
* save state

* torrent experiments

* torrent experiment passed

* fixes after merge

* snapshot headers processing passed

* save state

* save state

* download headers works after snapshot processing

* save state

* save state

* save state

* save state

* add lazy load tx to snapshots, increase number of trackers

* save state

* speedup getting info

* change logging

* move to turbo package

* save state

* save state

* save state

* cleanup

* save state

* add test test

* save state

* lmdb debugging

* fix readonly mode

* save state

* fix build

* sync works

* save state

* save state

* save state

* allow cmd stages stageSenders use snapshots

* debugging failed hashing

* remove experimental tests

* remove torrent experimental tests

* fix lint

* extract snapshot wrapper

* metainfo checker

* add remote seeder

* add logs

* update gomod

* remove useless code

* fix lint&remove useless code

* extract verify snapshot to separated command

* skip debug test

* fix test

* change type of seedSnapshot flag

* add eth logger to torrent lib

* skip debug test

* add Close method

* review fixes

* fix lint

* tidy mods

* Fix compile

* Fix lint

* Fix rpcdaemon running in the docker

Co-authored-by: b00ris <b00ris@mail.ru>
Co-authored-by: alex.sharov <AskAlexSharov@gmail.com>
2020-10-13 13:56:16 +01:00

49 lines
742 B
Go

package torrent
import "fmt"
var DefaultSnapshotMode = SnapshotMode{}
type SnapshotMode struct {
Headers bool
Bodies bool
State bool
Receipts bool
}
func (m SnapshotMode) ToString() string {
var mode string
if m.Headers {
mode += "h"
}
if m.Bodies {
mode += "b"
}
if m.State {
mode += "s"
}
if m.Receipts {
mode += "r"
}
return mode
}
func SnapshotModeFromString(flags string) (SnapshotMode, error) {
mode := SnapshotMode{}
for _, flag := range flags {
switch flag {
case 'h':
mode.Headers = true
case 'b':
mode.Bodies = true
case 's':
mode.State = true
case 'r':
mode.Receipts = true
default:
return mode, fmt.Errorf("unexpected flag found: %c", flag)
}
}
return mode, nil
}