upverted_files.go 597 B

123456789101112131415161718192021222324252627
  1. package common
  2. import (
  3. "github.com/anacrolix/torrent/metainfo"
  4. "github.com/anacrolix/torrent/segments"
  5. )
  6. func LengthIterFromUpvertedFiles(fis []metainfo.FileInfo) segments.LengthIter {
  7. i := 0
  8. return func() (segments.Length, bool) {
  9. if i == len(fis) {
  10. return -1, false
  11. }
  12. l := fis[i].Length
  13. i++
  14. return l, true
  15. }
  16. }
  17. // Returns file segments, BitTorrent v2 aware.
  18. func TorrentOffsetFileSegments(info *metainfo.Info) (ret []segments.Extent) {
  19. files := info.UpvertedFiles()
  20. for _, fi := range files {
  21. ret = append(ret, segments.Extent{fi.TorrentOffset, fi.Length})
  22. }
  23. return
  24. }