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 26, 2024
1 parent b1b1e95 commit e5bfc5d
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 e5bfc5d

Please sign in to comment.