diff --git a/galaxycache.go b/galaxycache.go index 0b0912a9..b51965ba 100644 --- a/galaxycache.go +++ b/galaxycache.go @@ -232,6 +232,11 @@ func (universe *Universe) RemovePeers(ids ...string) error { return universe.peerPicker.remove(ids...) } +// ListPeers returns Universe's remote fetchers map keyed by peer IDs +func (universe *Universe) ListPeers() map[string]RemoteFetcher { + return universe.peerPicker.listPeers() +} + // Shutdown closes all open fetcher connections func (universe *Universe) Shutdown() error { return universe.peerPicker.shutdown() diff --git a/peers.go b/peers.go index 782f0b6e..60c315ae 100644 --- a/peers.go +++ b/peers.go @@ -395,6 +395,13 @@ func (pp *PeerPicker) remove(ids ...string) error { return eg.Wait() } +func (pp *PeerPicker) listPeers() map[string]RemoteFetcher { + pp.mu.Lock() + defer pp.mu.Unlock() + fetchers := pp.fetchers + return fetchers +} + func (pp *PeerPicker) shutdown() error { pp.setIncludeSelf(false) // Clear out all the existing peers