mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-10-06 08:19:07 +00:00
refactor: remove legacy peer discovery and connectivity code
This commit is contained in:
parent
6301ed9182
commit
2daa86bd3c
@ -1,121 +0,0 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// ensureAnchatPeerConnectivity ensures Anchat clients can discover each other through bootstrap
|
||||
func (c *Client) ensureAnchatPeerConnectivity() {
|
||||
ticker := time.NewTicker(2 * time.Second)
|
||||
defer ticker.Stop()
|
||||
|
||||
for i := 0; i < 30; i++ { // Run for ~1 minute
|
||||
<-ticker.C
|
||||
|
||||
if !c.isConnected() {
|
||||
return
|
||||
}
|
||||
|
||||
connectedPeers := c.host.Network().Peers()
|
||||
|
||||
if c.dht != nil {
|
||||
// Try to find peers through DHT routing table
|
||||
routingPeers := c.dht.RoutingTable().ListPeers()
|
||||
|
||||
for _, peerID := range routingPeers {
|
||||
if peerID == c.host.ID() {
|
||||
continue
|
||||
}
|
||||
|
||||
// Check already connected
|
||||
alreadyConnected := false
|
||||
for _, p := range connectedPeers {
|
||||
if p == peerID {
|
||||
alreadyConnected = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !alreadyConnected {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
peerInfo := c.host.Peerstore().PeerInfo(peerID)
|
||||
|
||||
if len(peerInfo.Addrs) == 0 {
|
||||
if found, err := c.dht.FindPeer(ctx, peerID); err == nil {
|
||||
peerInfo = found
|
||||
c.host.Peerstore().AddAddrs(peerInfo.ID, peerInfo.Addrs, time.Hour*24)
|
||||
}
|
||||
}
|
||||
|
||||
if len(peerInfo.Addrs) > 0 {
|
||||
if err := c.host.Connect(ctx, peerInfo); err == nil {
|
||||
c.logger.Info("Anchat discovered and connected to peer",
|
||||
zap.String("peer", peerID.String()[:8]+"..."))
|
||||
|
||||
if added, err := c.dht.RoutingTable().TryAddPeer(peerID, true, true); err == nil && added {
|
||||
c.logger.Debug("Added new peer to DHT routing table",
|
||||
zap.String("peer", peerID.String()[:8]+"..."))
|
||||
}
|
||||
|
||||
if c.libp2pPS != nil {
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
_ = c.libp2pPS.ListPeers("")
|
||||
}
|
||||
} else {
|
||||
c.logger.Debug("Failed to connect to discovered peer",
|
||||
zap.String("peer", peerID.String()[:8]+"..."),
|
||||
zap.Error(err))
|
||||
}
|
||||
}
|
||||
cancel()
|
||||
}
|
||||
}
|
||||
|
||||
if len(routingPeers) == 0 {
|
||||
for _, id := range connectedPeers {
|
||||
if id != c.host.ID() {
|
||||
if added, err := c.dht.RoutingTable().TryAddPeer(id, true, true); err == nil && added {
|
||||
c.logger.Info("Force-added connected peer to DHT routing table",
|
||||
zap.String("peer", id.String()[:8]+"..."))
|
||||
}
|
||||
}
|
||||
}
|
||||
c.dht.RefreshRoutingTable()
|
||||
}
|
||||
}
|
||||
|
||||
// Reconnect to known peers not currently connected
|
||||
allKnownPeers := c.host.Peerstore().Peers()
|
||||
for _, id := range allKnownPeers {
|
||||
if id == c.host.ID() {
|
||||
continue
|
||||
}
|
||||
already := false
|
||||
for _, p := range connectedPeers {
|
||||
if p == id { already = true; break }
|
||||
}
|
||||
if !already {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||
pi := c.host.Peerstore().PeerInfo(id)
|
||||
if len(pi.Addrs) > 0 {
|
||||
if err := c.host.Connect(ctx, pi); err == nil {
|
||||
c.logger.Info("Anchat reconnected to known peer",
|
||||
zap.String("peer", id.String()[:8]+"..."))
|
||||
if c.libp2pPS != nil { time.Sleep(100 * time.Millisecond); _ = c.libp2pPS.ListPeers("") }
|
||||
}
|
||||
}
|
||||
cancel()
|
||||
}
|
||||
}
|
||||
|
||||
if i%5 == 0 && len(connectedPeers) > 0 {
|
||||
c.logger.Info("Anchat peer discovery progress",
|
||||
zap.Int("iteration", i+1),
|
||||
zap.Int("connected_peers", len(connectedPeers)),
|
||||
zap.Int("known_peers", len(allKnownPeers)))
|
||||
}
|
||||
}
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
"github.com/libp2p/go-libp2p/p2p/discovery/mdns"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// startMDNSDiscovery enables mDNS peer discovery for local network
|
||||
func (c *Client) startMDNSDiscovery() {
|
||||
mdnsService := mdns.NewMdnsService(c.host, "anchat-p2p", &discoveryNotifee{ client: c, logger: c.logger })
|
||||
if err := mdnsService.Start(); err != nil {
|
||||
c.logger.Warn("Failed to start mDNS discovery", zap.Error(err))
|
||||
return
|
||||
}
|
||||
c.logger.Info("Started mDNS discovery for Anchat")
|
||||
}
|
||||
|
||||
// discoveryNotifee handles mDNS peer discovery notifications
|
||||
type discoveryNotifee struct {
|
||||
client *Client
|
||||
logger *zap.Logger
|
||||
}
|
||||
|
||||
func (n *discoveryNotifee) HandlePeerFound(pi peer.AddrInfo) {
|
||||
n.logger.Info("mDNS discovered Anchat peer", zap.String("peer", pi.ID.String()[:8]+"..."), zap.Int("addrs", len(pi.Addrs)))
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
defer cancel()
|
||||
if err := n.client.host.Connect(ctx, pi); err != nil {
|
||||
n.logger.Debug("Failed to connect to mDNS discovered peer", zap.String("peer", pi.ID.String()[:8]+"..."), zap.Error(err))
|
||||
} else {
|
||||
n.logger.Info("Successfully connected to mDNS discovered peer", zap.String("peer", pi.ID.String()[:8]+"..."))
|
||||
if n.client.libp2pPS != nil { _ = n.client.libp2pPS.ListPeers("") }
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user