vppn/node/peer.go

31 lines
484 B
Go

package node
import (
"net/netip"
"sync/atomic"
)
type peer struct {
IP byte
Addr *netip.AddrPort // If we have direct connection, otherwise use mediator.
SharedKey []byte
}
type peerRepo [256]*atomic.Pointer[peer]
func newPeerRepo() peerRepo {
pr := peerRepo{}
for i := range pr {
pr[i] = &atomic.Pointer[peer]{}
}
return pr
}
func (pr peerRepo) Get(ip byte) *peer {
return pr[ip].Load()
}
func (pr *peerRepo) Set(ip byte, p *peer) {
pr[ip].Store(p)
}