34 lines
472 B
Go
34 lines
472 B
Go
package node
|
|
|
|
import (
|
|
"net/netip"
|
|
"sync/atomic"
|
|
)
|
|
|
|
type peer struct {
|
|
IP byte
|
|
// TODO: Version
|
|
Addr *netip.AddrPort
|
|
// TODO: ViaIP
|
|
// TODO: EncPubKey
|
|
// TODO: SignPrivKey
|
|
}
|
|
|
|
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)
|
|
}
|