mirror of
https://github.com/sigcn/pg.git
synced 2025-09-27 04:30:13 +08:00
p2p: add cache for func PacketConn.relayPeer
This commit is contained in:
2
cache/cache.go
vendored
2
cache/cache.go
vendored
@@ -33,7 +33,7 @@ var (
|
||||
)
|
||||
|
||||
func init() {
|
||||
defaultCache = lru.New[string, *CacheValue[any]](1024)
|
||||
defaultCache = lru.New[string, *CacheValue[any]](2048)
|
||||
}
|
||||
|
||||
// LoadTTL load value by key from default cache pool
|
||||
|
@@ -13,6 +13,7 @@ import (
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/sigcn/pg/cache"
|
||||
"github.com/sigcn/pg/cache/lru"
|
||||
"github.com/sigcn/pg/disco"
|
||||
"github.com/sigcn/pg/disco/udp"
|
||||
@@ -265,6 +266,7 @@ func (c *PacketConn) PeerMeta(peerID disco.PeerID) url.Values {
|
||||
|
||||
// relayPeer find the suitable relay peer
|
||||
func (c *PacketConn) relayPeer(peerID disco.PeerID) disco.PeerID {
|
||||
selectRelayPeer := func(_ string) disco.PeerID {
|
||||
peers := c.PeerStore().Peers()
|
||||
for range len(peers) {
|
||||
index := c.relayPeerIndex.Add(1) % uint64(len(peers))
|
||||
@@ -286,6 +288,8 @@ func (c *PacketConn) relayPeer(peerID disco.PeerID) disco.PeerID {
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
return cache.LoadTTL(peerID.String(), time.Millisecond, selectRelayPeer)
|
||||
}
|
||||
|
||||
// networkChangeDetect listen network change and restart udp and websocket listener
|
||||
|
Reference in New Issue
Block a user