Commit 9e93a2d3 authored by Janos Guljas's avatar Janos Guljas

adjust peerRegistry overlay address handling

parent 5f727445
...@@ -12,28 +12,28 @@ import ( ...@@ -12,28 +12,28 @@ import (
) )
type peerRegistry struct { type peerRegistry struct {
peers map[string]libp2ppeer.ID peers map[string]libp2ppeer.ID // map overlay address to underlay peer id
overlays map[libp2ppeer.ID]string overlays map[libp2ppeer.ID]swarm.Address // map underlay peer id to overlay address
mu sync.RWMutex mu sync.RWMutex
} }
func newPeerRegistry() *peerRegistry { func newPeerRegistry() *peerRegistry {
return &peerRegistry{ return &peerRegistry{
peers: make(map[string]libp2ppeer.ID), peers: make(map[string]libp2ppeer.ID),
overlays: make(map[libp2ppeer.ID]string), overlays: make(map[libp2ppeer.ID]swarm.Address),
} }
} }
func (r *peerRegistry) add(peerID libp2ppeer.ID, overlay swarm.Address) { func (r *peerRegistry) add(peerID libp2ppeer.ID, overlay swarm.Address) {
r.mu.Lock() r.mu.Lock()
r.peers[string(overlay.Bytes())] = peerID r.peers[encodePeersKey(overlay)] = peerID
r.overlays[peerID] = string(overlay.Bytes()) r.overlays[peerID] = overlay
r.mu.Unlock() r.mu.Unlock()
} }
func (r *peerRegistry) peerID(overlay swarm.Address) (peerID libp2ppeer.ID, found bool) { func (r *peerRegistry) peerID(overlay swarm.Address) (peerID libp2ppeer.ID, found bool) {
r.mu.RLock() r.mu.RLock()
peerID, found = r.peers[string(overlay.Bytes())] peerID, found = r.peers[encodePeersKey(overlay)]
r.mu.RUnlock() r.mu.RUnlock()
return peerID, found return peerID, found
} }
...@@ -42,13 +42,17 @@ func (r *peerRegistry) overlay(peerID libp2ppeer.ID) (swarm.Address, bool) { ...@@ -42,13 +42,17 @@ func (r *peerRegistry) overlay(peerID libp2ppeer.ID) (swarm.Address, bool) {
r.mu.RLock() r.mu.RLock()
overlay, found := r.overlays[peerID] overlay, found := r.overlays[peerID]
r.mu.RUnlock() r.mu.RUnlock()
return swarm.NewAddress([]byte(overlay)), found return overlay, found
} }
func (r *peerRegistry) remove(peerID libp2ppeer.ID) { func (r *peerRegistry) remove(peerID libp2ppeer.ID) {
r.mu.Lock() r.mu.Lock()
overlay := r.overlays[peerID] overlay := r.overlays[peerID]
delete(r.overlays, peerID) delete(r.overlays, peerID)
delete(r.peers, overlay) delete(r.peers, encodePeersKey(overlay))
r.mu.Unlock() r.mu.Unlock()
} }
func encodePeersKey(overlay swarm.Address) string {
return string(overlay.Bytes())
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment