optimize memory of in-memory peerstore
@@ -7,10 +7,15 @@ import (
pstore "github.com/libp2p/go-libp2p-peerstore"
)
+type metakey struct {
+ id peer.ID
+ key string
+}
+
type memoryPeerMetadata struct {
// store other data, like versions
//ds ds.ThreadSafeDatastore
- ds map[string]interface{}
+ ds map[metakey]interface{}
dslock sync.Mutex
}
@@ -18,26 +23,21 @@ var _ pstore.PeerMetadata = (*memoryPeerMetadata)(nil)
func NewPeerMetadata() pstore.PeerMetadata {
return &memoryPeerMetadata{
- ds: make(map[string]interface{}),
+ ds: make(map[metakey]interface{}),
}
}
func (ps *memoryPeerMetadata) Put(p peer.ID, key string, val interface{}) error {
- //dsk := ds.NewKey(string(p) + "/" + key)
- //return ps.ds.Put(dsk, val)
ps.dslock.Lock()
defer ps.dslock.Unlock()
- ps.ds[string(p)+"/"+key] = val
+ ps.ds[metakey{p, key}] = val
return nil
}
func (ps *memoryPeerMetadata) Get(p peer.ID, key string) (interface{}, error) {
- //dsk := ds.NewKey(string(p) + "/" + key)
- //return ps.ds.Get(dsk)
-
ps.dslock.Lock()
defer ps.dslock.Unlock()
- i, ok := ps.ds[string(p)+"/"+key]
+ i, ok := ps.ds[metakey{p, key}]
if !ok {
return nil, pstore.ErrNotFound
}
