Skip to content

Commit

Permalink
main: add ConnectedPeers() to server
Browse files Browse the repository at this point in the history
ConnectedPeers returns all the currently connected peers.  This is used
to provide the query.WorkManager with all the currently connected peers
from the netsync package.
  • Loading branch information
kcalvinalvin committed Dec 10, 2024
1 parent ec0b90d commit e232ea0
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -1982,6 +1982,34 @@ type removeNodeMsg struct {
reply chan error
}

// ConnectedPeers returns an array consisting of all connected peers.
func (s *server) ConnectedPeers() []*peer.Peer {
replyChan := make(chan []*serverPeer, 1)

// Send a query for a subscription for the connected peers.
select {
case s.query <- getPeersMsg{
reply: replyChan,
}:

case <-s.quit:
return nil
}

// Wait for the result here.
select {
case reply := <-replyChan:
peers := make([]*peer.Peer, 0, len(reply))
for _, sp := range reply {
peers = append(peers, sp.Peer)
}

return peers
case <-s.quit:
return nil
}
}

// handleQuery is the central handler for all queries and commands from other
// goroutines related to peer state.
func (s *server) handleQuery(state *peerState, querymsg interface{}) {
Expand Down

0 comments on commit e232ea0

Please sign in to comment.