}
var allTorrentsUnverifiedBytes int64
pro.tree.Ascend(func(i btree.Item) bool {
- _i := i.(pieceRequestOrderItem)
+ _i := i.(*pieceRequestOrderItem)
ih := _i.key.InfoHash
var t Torrent = input.Torrent(ih)
var piece Piece = t.Piece(_i.key.Index)
state PieceRequestOrderState
}
-func (me pieceRequestOrderItem) Less(other btree.Item) bool {
- otherConcrete := other.(pieceRequestOrderItem)
+func (me *pieceRequestOrderItem) Less(other btree.Item) bool {
+ otherConcrete := other.(*pieceRequestOrderItem)
return pieceOrderLess(
pieceOrderInput{
PieceRequestOrderState: me.state,
if _, ok := me.keys[key]; ok {
panic(key)
}
- if me.tree.ReplaceOrInsert(pieceRequestOrderItem{
+ if me.tree.ReplaceOrInsert(&pieceRequestOrderItem{
key: key,
state: state,
}) != nil {
}
func (me *PieceRequestOrder) Update(key PieceRequestOrderKey, state PieceRequestOrderState) {
- if me.tree.Delete(me.existingItemForKey(key)) == nil {
+ item := me.existingItemForKey(key)
+ if item.state == state {
+ return
+ }
+ if me.tree.Delete(&item) == nil {
panic(fmt.Sprintf("%#v", key))
}
- if me.tree.ReplaceOrInsert(pieceRequestOrderItem{
- key: key,
- state: state,
- }) != nil {
+ item.state = state
+ if me.tree.ReplaceOrInsert(&item) != nil {
panic(key)
}
me.keys[key] = state
}
func (me *PieceRequestOrder) Delete(key PieceRequestOrderKey) {
- if me.tree.Delete(me.existingItemForKey(key)) == nil {
+ item := me.existingItemForKey(key)
+ if me.tree.Delete(&item) == nil {
panic(key)
}
delete(me.keys, key)