31 lines
484 B
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)
|
|
}
|