From: Alexander Baranov Date: Mon, 1 Jun 2015 20:11:45 +0000 (+0300) Subject: Only wait for io.Copy; Remove obsolete from client X-Git-Tag: v1.0.0~1163^2^2~1 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=05d597a9f739c2f7b064e35032c3878a2560ed0f;p=btrtrc.git Only wait for io.Copy; Remove obsolete from client --- diff --git a/client.go b/client.go index e43c9f19..f4e6bbb0 100644 --- a/client.go +++ b/client.go @@ -2400,17 +2400,6 @@ func (cl *Client) allTorrentsCompleted() bool { return true } -func (cl *Client) allNeededTorrentsCompleted() bool { - for _, t := range cl.torrents { - if !t.haveInfo() { - return false - } - if ! t.neededPiecesDownloaded() { - return false - } - } - return true -} // Returns true when all torrents are completely downloaded and false if the // client is stopped before that. @@ -2426,19 +2415,6 @@ func (me *Client) WaitAll() bool { return true } -// Returns true when all requested chunks are completely downloaded and false if the -// client is stopped before that. -func (me *Client) WaitNeeded() bool { - me.mu.Lock() - defer me.mu.Unlock() - for !me.allNeededTorrentsCompleted() { - if me.stopped() { - return false - } - me.event.Wait() - } - return true -} func (me *Client) fillRequests(t *torrent, c *connection) { if c.Interested { diff --git a/cmd/torrent-pick/main.go b/cmd/torrent-pick/main.go index 88e3c32b..3b64152a 100644 --- a/cmd/torrent-pick/main.go +++ b/cmd/torrent-pick/main.go @@ -135,7 +135,7 @@ func main() { } dstWriter := bufio.NewWriter(f) - + done := make(chan struct{}) for _, arg := range posArgs { t := func() torrent.Torrent { if strings.HasPrefix(arg, "magnet:") { @@ -171,21 +171,14 @@ func main() { srcReader := io.NewSectionReader(t.NewReader(), file.Offset(), file.Length()) io.Copy(dstWriter, srcReader) + close(done) break } } }() } - done := make(chan struct{}) - go func() { - defer close(done) - if client.WaitNeeded() { - log.Print("downloaded ALL the torrents") - } else { - log.Fatal("y u no complete torrents?!") - } - }() + ticker := time.NewTicker(time.Second) waitDone: for { diff --git a/torrent.go b/torrent.go index d025185b..74e49831 100644 --- a/torrent.go +++ b/torrent.go @@ -515,14 +515,6 @@ func (t *torrent) numPieces() int { return t.Info.NumPieces() } -func (t *torrent) neededPiecesDownloaded() bool { - for i := range iter.N(t.Info.NumPieces()) { - if t.Pieces[i].Priority != piecePriorityNone && !t.pieceComplete(i) { - return false - } - } - return true -} func (t *torrent) numPiecesCompleted() (num int) { for i := range iter.N(t.Info.NumPieces()) {