package pstoremem
import (
"sync"
"github.com/libp2p/go-libp2p/core/peer"
pstore "github.com/libp2p/go-libp2p/core/peerstore"
)
type memoryPeerMetadata struct {
ds map [peer .ID ]map [string ]interface {}
dslock sync .RWMutex
}
var _ pstore .PeerMetadata = (*memoryPeerMetadata )(nil )
func NewPeerMetadata () *memoryPeerMetadata {
return &memoryPeerMetadata {
ds : make (map [peer .ID ]map [string ]interface {}),
}
}
func (ps *memoryPeerMetadata ) Put (p peer .ID , key string , val interface {}) error {
ps .dslock .Lock ()
defer ps .dslock .Unlock ()
m , ok := ps .ds [p ]
if !ok {
m = make (map [string ]interface {})
ps .ds [p ] = m
}
m [key ] = val
return nil
}
func (ps *memoryPeerMetadata ) Get (p peer .ID , key string ) (interface {}, error ) {
ps .dslock .RLock ()
defer ps .dslock .RUnlock ()
m , ok := ps .ds [p ]
if !ok {
return nil , pstore .ErrNotFound
}
val , ok := m [key ]
if !ok {
return nil , pstore .ErrNotFound
}
return val , nil
}
func (ps *memoryPeerMetadata ) RemovePeer (p peer .ID ) {
ps .dslock .Lock ()
delete (ps .ds , p )
ps .dslock .Unlock ()
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .