erigon-pulse/turbo/snapshotsync/bittorrent/build_infobytes.go
b00ris 6464da7670
Remote snapshot downloader (#1343)
* save state

* save state

* save state

* refactoring

* fix

* save state

* save state

* fmt

* fix lint

* restore torrents for external downloader

* fix lint

* download

* skip debug test

* debug

* remote debug

* small cli fixes

* skip debug test

* external snapshot predownloader

* get rid of remote downloader

* fix lint

* clean makefile

* fix lint

* fix lint

* cleanup

* fix ci

* fmt

* remove proto from interfaces

* Squashed 'interfaces/' content from commit acd02bb94

git-subtree-dir: interfaces
git-subtree-split: acd02bb94c5a421aa8f8d1fd76cd8aad668e9fcb
2020-11-13 16:16:47 +00:00

46 lines
988 B
Go

package bittorrent
import (
"fmt"
"io"
"os"
"path/filepath"
"strings"
"github.com/anacrolix/torrent/metainfo"
)
func BuildInfoBytesForLMDBSnapshot(root string) (metainfo.Info, error) {
path := root + "/" + LmdbFilename
fi, err := os.Stat(path)
if err != nil {
return metainfo.Info{}, err
}
relPath, err := filepath.Rel(root, path)
if err != nil {
return metainfo.Info{}, fmt.Errorf("error getting relative path: %s", err)
}
info := metainfo.Info{
Name: filepath.Base(root),
PieceLength: DefaultChunkSize,
Length: fi.Size(),
Files: []metainfo.FileInfo{
{
Length: fi.Size(),
Path: []string{relPath},
PathUTF8: nil,
},
},
}
err = info.GeneratePieces(func(fi metainfo.FileInfo) (io.ReadCloser, error) {
return os.Open(filepath.Join(root, strings.Join(fi.Path, string(filepath.Separator))))
})
if err != nil {
err = fmt.Errorf("error generating pieces: %s", err)
return metainfo.Info{}, err
}
return info, nil
}