From edbe34dbe3dbea6a9c6d10da6e94cad93fb0ba85 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Mon, 23 Jun 2025 15:53:12 +1000 Subject: [PATCH] Move request-strategy into internal --- client-piece-request-order.go | 2 +- .../request-strategy}/NOTES.md | 0 .../request-strategy}/ajwerner-btree.go | 0 .../request-strategy}/order.go | 0 .../request-strategy}/peer.go | 0 .../request-strategy}/piece-request-order.go | 0 .../piece-request-order_test.go | 0 .../request-strategy}/piece.go | 0 .../request-strategy}/tidwall-btree.go | 0 .../request-strategy}/torrent.go | 0 ordered-bitmap.go | 2 +- peer.go | 6 +++--- request-strategy-impls.go | 16 ++++++++-------- request-strategy-impls_test.go | 6 +++--- requesting.go | 2 +- roaring.go | 4 +--- storage/sqlite-piece-completion.go | 2 +- tests/add-webseed-after-priorities/herp_test.go | 7 ++++--- torrent-piece-request-order.go | 6 +++--- torrent.go | 2 +- webseed-requesting.go | 6 +++--- 21 files changed, 30 insertions(+), 31 deletions(-) rename {request-strategy => internal/request-strategy}/NOTES.md (100%) rename {request-strategy => internal/request-strategy}/ajwerner-btree.go (100%) rename {request-strategy => internal/request-strategy}/order.go (100%) rename {request-strategy => internal/request-strategy}/peer.go (100%) rename {request-strategy => internal/request-strategy}/piece-request-order.go (100%) rename {request-strategy => internal/request-strategy}/piece-request-order_test.go (100%) rename {request-strategy => internal/request-strategy}/piece.go (100%) rename {request-strategy => internal/request-strategy}/tidwall-btree.go (100%) rename {request-strategy => internal/request-strategy}/torrent.go (100%) diff --git a/client-piece-request-order.go b/client-piece-request-order.go index b4ad07da..0984b409 100644 --- a/client-piece-request-order.go +++ b/client-piece-request-order.go @@ -1,7 +1,7 @@ package torrent import ( - requestStrategy "github.com/anacrolix/torrent/request-strategy" + requestStrategy "github.com/anacrolix/torrent/internal/request-strategy" "github.com/anacrolix/torrent/storage" ) diff --git a/request-strategy/NOTES.md b/internal/request-strategy/NOTES.md similarity index 100% rename from request-strategy/NOTES.md rename to internal/request-strategy/NOTES.md diff --git a/request-strategy/ajwerner-btree.go b/internal/request-strategy/ajwerner-btree.go similarity index 100% rename from request-strategy/ajwerner-btree.go rename to internal/request-strategy/ajwerner-btree.go diff --git a/request-strategy/order.go b/internal/request-strategy/order.go similarity index 100% rename from request-strategy/order.go rename to internal/request-strategy/order.go diff --git a/request-strategy/peer.go b/internal/request-strategy/peer.go similarity index 100% rename from request-strategy/peer.go rename to internal/request-strategy/peer.go diff --git a/request-strategy/piece-request-order.go b/internal/request-strategy/piece-request-order.go similarity index 100% rename from request-strategy/piece-request-order.go rename to internal/request-strategy/piece-request-order.go diff --git a/request-strategy/piece-request-order_test.go b/internal/request-strategy/piece-request-order_test.go similarity index 100% rename from request-strategy/piece-request-order_test.go rename to internal/request-strategy/piece-request-order_test.go diff --git a/request-strategy/piece.go b/internal/request-strategy/piece.go similarity index 100% rename from request-strategy/piece.go rename to internal/request-strategy/piece.go diff --git a/request-strategy/tidwall-btree.go b/internal/request-strategy/tidwall-btree.go similarity index 100% rename from request-strategy/tidwall-btree.go rename to internal/request-strategy/tidwall-btree.go diff --git a/request-strategy/torrent.go b/internal/request-strategy/torrent.go similarity index 100% rename from request-strategy/torrent.go rename to internal/request-strategy/torrent.go diff --git a/ordered-bitmap.go b/ordered-bitmap.go index 2163a375..340d9c43 100644 --- a/ordered-bitmap.go +++ b/ordered-bitmap.go @@ -6,7 +6,7 @@ import ( g "github.com/anacrolix/generics" list "github.com/bahlo/generic-list-go" - "github.com/anacrolix/torrent/typed-roaring" + typedRoaring "github.com/anacrolix/torrent/typed-roaring" ) type orderedBitmap[T typedRoaring.BitConstraint] struct { diff --git a/peer.go b/peer.go index fb66d631..70459d80 100644 --- a/peer.go +++ b/peer.go @@ -19,9 +19,9 @@ import ( "github.com/anacrolix/multiless" "github.com/anacrolix/torrent/internal/alloclim" + requestStrategy "github.com/anacrolix/torrent/internal/request-strategy" "github.com/anacrolix/torrent/mse" pp "github.com/anacrolix/torrent/peer_protocol" - request_strategy "github.com/anacrolix/torrent/request-strategy" typedRoaring "github.com/anacrolix/torrent/typed-roaring" ) @@ -61,7 +61,7 @@ type ( // Stuff controlled by the local peer. needRequestUpdate updateRequestReason // TODO: How are pending cancels handled for webseed peers? - requestState request_strategy.PeerRequestState + requestState requestStrategy.PeerRequestState updateRequestsTimer *time.Timer lastRequestUpdate time.Time peakRequests maxRequests @@ -287,7 +287,7 @@ func (cn *Peer) iterContiguousPieceRequests(f func(piece pieceIndex, count int)) count = 1 } } - cn.requestState.Requests.Iterate(func(requestIndex request_strategy.RequestIndex) bool { + cn.requestState.Requests.Iterate(func(requestIndex requestStrategy.RequestIndex) bool { next(Some(cn.t.pieceIndexOfRequestIndex(requestIndex))) return true }) diff --git a/request-strategy-impls.go b/request-strategy-impls.go index fd52db64..500110c3 100644 --- a/request-strategy-impls.go +++ b/request-strategy-impls.go @@ -3,8 +3,8 @@ package torrent import ( g "github.com/anacrolix/generics" + requestStrategy "github.com/anacrolix/torrent/internal/request-strategy" "github.com/anacrolix/torrent/metainfo" - request_strategy "github.com/anacrolix/torrent/request-strategy" "github.com/anacrolix/torrent/storage" ) @@ -22,7 +22,7 @@ type requestStrategyInputMultiTorrent struct { capFunc storage.TorrentCapacity } -func (r requestStrategyInputMultiTorrent) Torrent(ih metainfo.Hash) request_strategy.Torrent { +func (r requestStrategyInputMultiTorrent) Torrent(ih metainfo.Hash) requestStrategy.Torrent { return requestStrategyTorrent{g.MapMustGet(r.torrents, ih)} } @@ -38,7 +38,7 @@ type requestStrategyInputSingleTorrent struct { t *Torrent } -func (r requestStrategyInputSingleTorrent) Torrent(_ metainfo.Hash) request_strategy.Torrent { +func (r requestStrategyInputSingleTorrent) Torrent(_ metainfo.Hash) requestStrategy.Torrent { return requestStrategyTorrent{r.t} } @@ -46,14 +46,14 @@ func (r requestStrategyInputSingleTorrent) Capacity() (cap int64, capped bool) { return 0, false } -var _ request_strategy.Input = requestStrategyInputSingleTorrent{} +var _ requestStrategy.Input = requestStrategyInputSingleTorrent{} // getRequestStrategyInputCommon returns request strategy Input implementation common to all inputs. func (cl *Client) getRequestStrategyInputCommon() requestStrategyInputCommon { return requestStrategyInputCommon{cl.config.MaxUnverifiedBytes} } -func (t *Torrent) getRequestStrategyInput() request_strategy.Input { +func (t *Torrent) getRequestStrategyInput() requestStrategy.Input { return t.clientPieceRequestOrderKey().getRequestStrategyInput(t.cl) } @@ -62,7 +62,7 @@ type requestStrategyTorrent struct { t *Torrent } -func (r requestStrategyTorrent) Piece(i int) request_strategy.Piece { +func (r requestStrategyTorrent) Piece(i int) requestStrategy.Piece { return requestStrategyPiece{r.t.piece(i)} } @@ -70,7 +70,7 @@ func (r requestStrategyTorrent) PieceLength() int64 { return r.t.info.PieceLength } -var _ request_strategy.Torrent = requestStrategyTorrent{} +var _ requestStrategy.Torrent = requestStrategyTorrent{} type requestStrategyPiece struct { p *Piece @@ -84,4 +84,4 @@ func (r requestStrategyPiece) Request() bool { return !r.p.ignoreForRequests() && r.p.purePriority() != PiecePriorityNone } -var _ request_strategy.Piece = requestStrategyPiece{} +var _ requestStrategy.Piece = requestStrategyPiece{} diff --git a/request-strategy-impls_test.go b/request-strategy-impls_test.go index 6bcd9981..cd0f85ea 100644 --- a/request-strategy-impls_test.go +++ b/request-strategy-impls_test.go @@ -9,15 +9,15 @@ import ( g "github.com/anacrolix/generics" "github.com/anacrolix/missinggo/v2/iter" "github.com/davecgh/go-spew/spew" - qt "github.com/go-quicktest/qt" + "github.com/go-quicktest/qt" + requestStrategy "github.com/anacrolix/torrent/internal/request-strategy" "github.com/anacrolix/torrent/metainfo" - request_strategy "github.com/anacrolix/torrent/request-strategy" "github.com/anacrolix/torrent/storage" infohash_v2 "github.com/anacrolix/torrent/types/infohash-v2" ) -func makeRequestStrategyPiece(t request_strategy.Torrent) request_strategy.Piece { +func makeRequestStrategyPiece(t requestStrategy.Torrent) requestStrategy.Piece { return t.Piece(0) } diff --git a/requesting.go b/requesting.go index 3eeaeb79..26e56e45 100644 --- a/requesting.go +++ b/requesting.go @@ -15,8 +15,8 @@ import ( "github.com/anacrolix/log" "github.com/anacrolix/multiless" + requestStrategy "github.com/anacrolix/torrent/internal/request-strategy" "github.com/anacrolix/torrent/metainfo" - requestStrategy "github.com/anacrolix/torrent/request-strategy" typedRoaring "github.com/anacrolix/torrent/typed-roaring" ) diff --git a/roaring.go b/roaring.go index 8e39416c..f8e622b1 100644 --- a/roaring.go +++ b/roaring.go @@ -1,8 +1,6 @@ package torrent -import ( - "github.com/anacrolix/torrent/typed-roaring" -) +import typedRoaring "github.com/anacrolix/torrent/typed-roaring" // Return the number of bits set in the range. To do this we need the rank of the item before the // first, and the rank of the last item. An off-by-one minefield. Hopefully I haven't missed diff --git a/storage/sqlite-piece-completion.go b/storage/sqlite-piece-completion.go index 7005dacb..f57730b4 100644 --- a/storage/sqlite-piece-completion.go +++ b/storage/sqlite-piece-completion.go @@ -11,7 +11,7 @@ import ( "path/filepath" "sync" - "github.com/go-llsqlite/adapter" + sqlite "github.com/go-llsqlite/adapter" "github.com/go-llsqlite/adapter/sqlitex" "github.com/anacrolix/torrent/metainfo" diff --git a/tests/add-webseed-after-priorities/herp_test.go b/tests/add-webseed-after-priorities/herp_test.go index 8c4bad2c..29ceb23d 100644 --- a/tests/add-webseed-after-priorities/herp_test.go +++ b/tests/add-webseed-after-priorities/herp_test.go @@ -1,13 +1,14 @@ package webseed_partial_seed import ( - "github.com/anacrolix/torrent" - "github.com/anacrolix/torrent/internal/testutil" - qt "github.com/go-quicktest/qt" "path/filepath" "runtime" "testing" "time" + + "github.com/anacrolix/torrent" + "github.com/anacrolix/torrent/internal/testutil" + qt "github.com/go-quicktest/qt" ) func testSrcDir() string { diff --git a/torrent-piece-request-order.go b/torrent-piece-request-order.go index f23144aa..1e6cde0b 100644 --- a/torrent-piece-request-order.go +++ b/torrent-piece-request-order.go @@ -3,7 +3,7 @@ package torrent import ( g "github.com/anacrolix/generics" - request_strategy "github.com/anacrolix/torrent/request-strategy" + requestStrategy "github.com/anacrolix/torrent/internal/request-strategy" ) // It's probably possible to track whether the piece moves around in the btree to be more efficient @@ -62,7 +62,7 @@ func (t *Torrent) initPieceRequestOrder() { cpro := t.cl.pieceRequestOrder if _, ok := cpro[key]; !ok { value := clientPieceRequestOrderValue{ - pieces: request_strategy.NewPieceOrder(request_strategy.NewAjwernerBtree(), t.numPieces()), + pieces: requestStrategy.NewPieceOrder(requestStrategy.NewAjwernerBtree(), t.numPieces()), } g.MakeMap(&value.torrents) cpro[key] = value @@ -81,7 +81,7 @@ func (t *Torrent) addRequestOrderPiece(i int) { } } -func (t *Torrent) getPieceRequestOrder() *request_strategy.PieceRequestOrder { +func (t *Torrent) getPieceRequestOrder() *requestStrategy.PieceRequestOrder { if t.storage == nil { return nil } diff --git a/torrent.go b/torrent.go index 0b2f01b4..b39ccffd 100644 --- a/torrent.go +++ b/torrent.go @@ -41,11 +41,11 @@ import ( "github.com/anacrolix/torrent/bencode" "github.com/anacrolix/torrent/internal/check" "github.com/anacrolix/torrent/internal/nestedmaps" + request_strategy "github.com/anacrolix/torrent/internal/request-strategy" "github.com/anacrolix/torrent/merkle" "github.com/anacrolix/torrent/metainfo" pp "github.com/anacrolix/torrent/peer_protocol" utHolepunch "github.com/anacrolix/torrent/peer_protocol/ut-holepunch" - request_strategy "github.com/anacrolix/torrent/request-strategy" "github.com/anacrolix/torrent/storage" "github.com/anacrolix/torrent/tracker" typedRoaring "github.com/anacrolix/torrent/typed-roaring" diff --git a/webseed-requesting.go b/webseed-requesting.go index 607cba40..99b8d25f 100644 --- a/webseed-requesting.go +++ b/webseed-requesting.go @@ -3,8 +3,8 @@ package torrent import ( "unique" + requestStrategy2 "github.com/anacrolix/torrent/internal/request-strategy" "github.com/anacrolix/torrent/metainfo" - requestStrategy "github.com/anacrolix/torrent/request-strategy" ) type ( @@ -23,10 +23,10 @@ This was a globally aware webseed requestor algorithm that is probably going to func (cl *Client) abandonedUpdateWebSeedRequests() { for key, value := range cl.pieceRequestOrder { input := key.getRequestStrategyInput(cl) - requestStrategy.GetRequestablePieces( + requestStrategy2.GetRequestablePieces( input, value.pieces, - func(ih metainfo.Hash, pieceIndex int, orderState requestStrategy.PieceRequestOrderState) bool { + func(ih metainfo.Hash, pieceIndex int, orderState requestStrategy2.PieceRequestOrderState) bool { return true }, ) -- 2.51.0