royalcat
bd75492b02
Some checks failed
docker / build-docker (linux/386) (push) Failing after 18s
docker / build-docker (linux/amd64) (push) Failing after 17s
docker / build-docker (linux/arm/v7) (push) Failing after 17s
docker / build-docker (linux/arm64) (push) Failing after 17s
docker / build-docker (linux/arm64/v8) (push) Failing after 15s
50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package torrent
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"git.kmsign.ru/royalcat/tstor/src/config"
|
|
"github.com/anacrolix/torrent/storage"
|
|
)
|
|
|
|
func setupStorage(cfg config.TorrentClient) (*fileStorage, storage.PieceCompletion, error) {
|
|
pcp := filepath.Join(cfg.MetadataFolder, "piece-completion")
|
|
if err := os.MkdirAll(pcp, 0744); err != nil {
|
|
return nil, nil, fmt.Errorf("error creating piece completion folder: %w", err)
|
|
}
|
|
pc, err := newPieceCompletion(pcp)
|
|
if err != nil {
|
|
return nil, nil, fmt.Errorf("error creating servers piece completion: %w", err)
|
|
}
|
|
|
|
// TODO implement cache/storage switching
|
|
// cacheDir := filepath.Join(tcfg.DataFolder, "cache")
|
|
// if err := os.MkdirAll(cacheDir, 0744); err != nil {
|
|
// return nil, nil, fmt.Errorf("error creating piece completion folder: %w", err)
|
|
// }
|
|
// fc, err := filecache.NewCache(cacheDir)
|
|
// if err != nil {
|
|
// return nil, nil, fmt.Errorf("error creating cache: %w", err)
|
|
// }
|
|
// log.Info().Msg(fmt.Sprintf("setting cache size to %d MB", 1024))
|
|
// fc.SetCapacity(1024 * 1024 * 1024)
|
|
|
|
// rp := storage.NewResourcePieces(fc.AsResourceProvider())
|
|
// st := &stc{rp}
|
|
|
|
filesDir := cfg.DataFolder
|
|
if err := os.MkdirAll(filesDir, 0744); err != nil {
|
|
return nil, nil, fmt.Errorf("error creating piece completion folder: %w", err)
|
|
}
|
|
st := NewFileStorage(filesDir, pc)
|
|
|
|
// piecesDir := filepath.Join(cfg.DataFolder, ".pieces")
|
|
// if err := os.MkdirAll(piecesDir, 0744); err != nil {
|
|
// return nil, nil, fmt.Errorf("error creating piece completion folder: %w", err)
|
|
// }
|
|
// st := storage.NewMMapWithCompletion(piecesDir, pc)
|
|
|
|
return st, pc, nil
|
|
}
|