From 2af1752a000e33962731b8cc7058419bce06cf2a Mon Sep 17 00:00:00 2001 From: YouROK <8yourok8@mail.ru> Date: Thu, 27 May 2021 08:34:19 +0300 Subject: [PATCH] add reader stat to torrent stat --- server/torr/state/state.go | 6 ++++++ server/torr/storage/reader/state.go | 7 +++++++ server/torr/storage/state/state.go | 9 ++------- server/torr/storage/torrstor/cache.go | 5 +++-- server/torr/torrent.go | 5 +++++ 5 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 server/torr/storage/reader/state.go diff --git a/server/torr/state/state.go b/server/torr/state/state.go index 7e79ccf..be9fd02 100644 --- a/server/torr/state/state.go +++ b/server/torr/state/state.go @@ -1,5 +1,9 @@ package state +import ( + "server/torr/storage/reader" +) + type TorrentStat int func (t TorrentStat) String() string { @@ -62,6 +66,8 @@ type TorrentStatus struct { PiecesDirtiedGood int64 `json:"pieces_dirtied_good,omitempty"` PiecesDirtiedBad int64 `json:"pieces_dirtied_bad,omitempty"` + Readers []*reader.ReaderState `json:"readers,omitempty"` + FileStats []*TorrentFileStat `json:"file_stats,omitempty"` } diff --git a/server/torr/storage/reader/state.go b/server/torr/storage/reader/state.go new file mode 100644 index 0000000..c38bbbe --- /dev/null +++ b/server/torr/storage/reader/state.go @@ -0,0 +1,7 @@ +package reader + +type ReaderState struct { + Start int + End int + Reader int +} diff --git a/server/torr/storage/state/state.go b/server/torr/storage/state/state.go index 306c9b0..0daa755 100644 --- a/server/torr/storage/state/state.go +++ b/server/torr/storage/state/state.go @@ -2,6 +2,7 @@ package state import ( "server/torr/state" + "server/torr/storage/reader" ) type CacheState struct { @@ -12,7 +13,7 @@ type CacheState struct { PiecesCount int Torrent *state.TorrentStatus Pieces map[int]ItemState - Readers []*ReaderState + Readers []*reader.ReaderState } type ItemState struct { @@ -21,9 +22,3 @@ type ItemState struct { Size int64 Completed bool } - -type ReaderState struct { - Start int - End int - Reader int -} diff --git a/server/torr/storage/torrstor/cache.go b/server/torr/storage/torrstor/cache.go index 3a38bc2..206a9a9 100644 --- a/server/torr/storage/torrstor/cache.go +++ b/server/torr/storage/torrstor/cache.go @@ -13,6 +13,7 @@ import ( "server/log" "server/settings" + "server/torr/storage/reader" "server/torr/storage/state" "server/torr/utils" @@ -149,12 +150,12 @@ func (c *Cache) GetState() *state.CacheState { } } - readersState := make([]*state.ReaderState, 0) + readersState := make([]*reader.ReaderState, 0) c.muReaders.Lock() for r, _ := range c.readers { rng := r.getPiecesRange() pc := r.getReaderPiece() - readersState = append(readersState, &state.ReaderState{ + readersState = append(readersState, &reader.ReaderState{ Start: rng.Start, End: rng.End, Reader: pc, diff --git a/server/torr/torrent.go b/server/torr/torrent.go index 59494fd..f0858a1 100644 --- a/server/torr/torrent.go +++ b/server/torr/torrent.go @@ -427,6 +427,11 @@ func (t *Torrent) Status() *state.TorrentStatus { } } } + + if t.cache != nil { + st.Readers = t.cache.GetState().Readers + } + return st }