Skip to content

Commit 3b7d580

Browse files
pullmergegammazero
andauthored
refactor: use a more efficient querying method (#921)
Signed-off-by: pullmerge <[email protected]> Co-authored-by: Andrew Gillis <[email protected]>
1 parent 4c89fad commit 3b7d580

File tree

5 files changed

+20
-16
lines changed

5 files changed

+20
-16
lines changed

bitswap/server/internal/decision/engine.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ type PeerLedger interface {
156156

157157
// PeerDisconnected informs the ledger that [peer.ID] is no longer connected.
158158
PeerDisconnected(p peer.ID)
159+
160+
// HasPeer checks if the ledger has an active session with the given peer.
161+
HasPeer(p peer.ID) bool
159162
}
160163

161164
// Engine manages sending requested blocks to peers.
@@ -671,6 +674,12 @@ func (e *Engine) Peers() []peer.ID {
671674
return e.peerLedger.CollectPeerIDs()
672675
}
673676

677+
func (e *Engine) HasPeer(p peer.ID) bool {
678+
e.lock.RLock()
679+
defer e.lock.RUnlock()
680+
return e.peerLedger.HasPeer(p)
681+
}
682+
674683
// MessageReceived is called when a message is received from a remote peer.
675684
// For each item in the wantlist, add a want-have or want-block entry to the
676685
// request queue (this is later popped off by the workerTasks). Returns true

bitswap/server/internal/decision/engine_test.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,12 +172,7 @@ func TestPeerIsAddedToPeersWhenMessageSent(t *testing.T) {
172172
}
173173

174174
func peerIsPartner(p peer.ID, e *Engine) bool {
175-
for _, partner := range e.Peers() {
176-
if partner == p {
177-
return true
178-
}
179-
}
180-
return false
175+
return e.HasPeer(p)
181176
}
182177

183178
func newEngineForTesting(

bitswap/server/internal/decision/peer_ledger.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,3 +164,8 @@ func (l *DefaultPeerLedger) PeerDisconnected(p peer.ID) {
164164
l.ClearPeerWantlist(p)
165165
delete(l.peers, p)
166166
}
167+
168+
func (l *DefaultPeerLedger) HasPeer(p peer.ID) bool {
169+
_, ok := l.peers[p]
170+
return ok
171+
}

bitswap/testnet/peernet.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package bitswap
22

33
import (
44
"context"
5+
"slices"
56

67
iface "github.com/ipfs/boxo/bitswap/network"
78
bsnet "github.com/ipfs/boxo/bitswap/network/bsnet"
@@ -29,12 +30,7 @@ func (pn *peernet) Adapter(p tnet.Identity, opts ...bsnet.NetOpt) iface.BitSwapN
2930
}
3031

3132
func (pn *peernet) HasPeer(p peer.ID) bool {
32-
for _, member := range pn.Mocknet.Peers() {
33-
if p == member {
34-
return true
35-
}
36-
}
37-
return false
33+
return slices.Contains(pn.Mocknet.Peers(), p)
3834
}
3935

4036
var _ Network = (*peernet)(nil)

gateway/handler_codec.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"io"
88
"net/http"
99
"net/url"
10+
"slices"
1011
"strings"
1112
"time"
1213

@@ -136,10 +137,8 @@ func (i *handler) renderCodec(ctx context.Context, w http.ResponseWriter, r *htt
136137
// return raw block as-is, without conversion
137138
skipCodecs, ok := contentTypeToRaw[rq.responseFormat]
138139
if ok {
139-
for _, skipCodec := range skipCodecs {
140-
if skipCodec == cidCodec {
141-
return i.serveCodecRaw(ctx, w, r, blockSize, blockData, rq.contentPath, modtime, rq.begin)
142-
}
140+
if slices.Contains(skipCodecs, cidCodec) {
141+
return i.serveCodecRaw(ctx, w, r, blockSize, blockData, rq.contentPath, modtime, rq.begin)
143142
}
144143
}
145144

0 commit comments

Comments
 (0)