]> Sergey Matveev's repositories - btrtrc.git/blobdiff - file.go
Skip test failures due to Go uTP implementation
[btrtrc.git] / file.go
diff --git a/file.go b/file.go
index e2720e5a4d0886e0e75c620ac7187a7c8a037479..ed2f5da9ced0e74c87a903d1b160a3793331701d 100644 (file)
--- a/file.go
+++ b/file.go
@@ -44,13 +44,14 @@ func (f *File) Length() int64 {
 
 // Number of bytes of the entire file we have completed. This is the sum of
 // completed pieces, and dirtied chunks of incomplete pieces.
-func (f *File) BytesCompleted() int64 {
+func (f *File) BytesCompleted() (n int64) {
        f.t.cl.rLock()
-       defer f.t.cl.rUnlock()
-       return f.bytesCompleted()
+       n = f.bytesCompletedLocked()
+       f.t.cl.rUnlock()
+       return
 }
 
-func (f *File) bytesCompleted() int64 {
+func (f *File) bytesCompletedLocked() int64 {
        return f.length - f.bytesLeft()
 }
 
@@ -85,7 +86,7 @@ func fileBytesLeft(
 }
 
 func (f *File) bytesLeft() (left int64) {
-       return fileBytesLeft(int64(f.t.usualPieceSize()), f.firstPieceIndex(), f.endPieceIndex(), f.offset, f.length, &f.t._completedPieces)
+       return fileBytesLeft(int64(f.t.usualPieceSize()), f.BeginPieceIndex(), f.EndPieceIndex(), f.offset, f.length, &f.t._completedPieces)
 }
 
 // The relative file path for a multi-file torrent, and the torrent name for a
@@ -148,21 +149,21 @@ func (f *File) SetPriority(prio piecePriority) {
        f.t.cl.lock()
        if prio != f.prio {
                f.prio = prio
-               f.t.updatePiecePriorities(f.firstPieceIndex(), f.endPieceIndex())
+               f.t.updatePiecePriorities(f.BeginPieceIndex(), f.EndPieceIndex(), "File.SetPriority")
        }
        f.t.cl.unlock()
 }
 
 // Returns the priority per File.SetPriority.
 func (f *File) Priority() (prio piecePriority) {
-       f.t.cl.lock()
+       f.t.cl.rLock()
        prio = f.prio
-       f.t.cl.unlock()
+       f.t.cl.rUnlock()
        return
 }
 
 // Returns the index of the first piece containing data for the file.
-func (f *File) firstPieceIndex() pieceIndex {
+func (f *File) BeginPieceIndex() int {
        if f.t.usualPieceSize() == 0 {
                return 0
        }
@@ -170,7 +171,7 @@ func (f *File) firstPieceIndex() pieceIndex {
 }
 
 // Returns the index of the piece after the last one containing data for the file.
-func (f *File) endPieceIndex() pieceIndex {
+func (f *File) EndPieceIndex() int {
        if f.t.usualPieceSize() == 0 {
                return 0
        }