1 package requestStrategy
4 "github.com/tidwall/btree"
7 type tidwallBtree struct {
8 tree *btree.BTreeG[pieceRequestOrderItem]
9 PathHint *btree.PathHint
12 func (me *tidwallBtree) Scan(f func(pieceRequestOrderItem) bool) {
16 func NewTidwallBtree() *tidwallBtree {
18 tree: btree.NewBTreeGOptions(
19 func(a, b pieceRequestOrderItem) bool {
22 btree.Options{NoLocks: true, Degree: 64}),
26 func (me *tidwallBtree) Add(item pieceRequestOrderItem) {
27 if _, ok := me.tree.SetHint(item, me.PathHint); ok {
28 panic("shouldn't already have this")
32 type PieceRequestOrderPathHint = btree.PathHint
34 func (me *tidwallBtree) Delete(item pieceRequestOrderItem) {
35 _, deleted := me.tree.DeleteHint(item, me.PathHint)
36 mustValue(deleted, item)