]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Extract common Torrent.newReader
authorMatt Joiner <anacrolix@gmail.com>
Thu, 9 Sep 2021 07:41:12 +0000 (17:41 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 9 Sep 2021 12:19:48 +0000 (22:19 +1000)
file.go
t.go

diff --git a/file.go b/file.go
index 45defe6e87cbdc3714990da10f6d8383a95b6a6f..bd5a6999ff89e685c7a8d44f2ce573d25242c37f 100644 (file)
--- a/file.go
+++ b/file.go
@@ -140,15 +140,7 @@ func (f *File) Cancel() {
 }
 
 func (f *File) NewReader() Reader {
-       tr := reader{
-               mu:        f.t.cl.locker(),
-               t:         f.t,
-               readahead: 5 * 1024 * 1024,
-               offset:    f.Offset(),
-               length:    f.Length(),
-       }
-       f.t.addReader(&tr)
-       return &tr
+       return f.t.newReader(f.Offset(), f.Length())
 }
 
 // Sets the minimum priority for pieces in the File.
diff --git a/t.go b/t.go
index 69cef55410a391ab9e1bbfb546a859ee90fe785e..170827296bd6ffc4154f8c0b92dbc3729ba4163d 100644 (file)
--- a/t.go
+++ b/t.go
@@ -32,11 +32,16 @@ func (t *Torrent) Info() *metainfo.Info {
 // Returns a Reader bound to the torrent's data. All read calls block until the data requested is
 // actually available. Note that you probably want to ensure the Torrent Info is available first.
 func (t *Torrent) NewReader() Reader {
+       return t.newReader(0, *t.length)
+}
+
+func (t *Torrent) newReader(offset, length int64) Reader {
        r := reader{
                mu:        t.cl.locker(),
                t:         t,
                readahead: 5 * 1024 * 1024,
-               length:    *t.length,
+               offset:    offset,
+               length:    length,
        }
        t.addReader(&r)
        return &r