Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
p2p
go-p2p-peerstore
Commits
d2e2c56c
Commit
d2e2c56c
authored
May 27, 2019
by
Steven Allen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: intern agent versions
This also starts taking up a bunch of memory after a while.
parent
fd3ea885
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
2 deletions
+15
-2
pstoremem/metadata.go
pstoremem/metadata.go
+15
-2
No files found.
pstoremem/metadata.go
View file @
d2e2c56c
...
@@ -7,6 +7,11 @@ import (
...
@@ -7,6 +7,11 @@ import (
pstore
"github.com/libp2p/go-libp2p-peerstore"
pstore
"github.com/libp2p/go-libp2p-peerstore"
)
)
var
internKeys
=
map
[
string
]
bool
{
"AgentVersion"
:
true
,
"ProtocolVersion"
:
true
,
}
type
metakey
struct
{
type
metakey
struct
{
id
peer
.
ID
id
peer
.
ID
key
string
key
string
...
@@ -15,8 +20,9 @@ type metakey struct {
...
@@ -15,8 +20,9 @@ type metakey struct {
type
memoryPeerMetadata
struct
{
type
memoryPeerMetadata
struct
{
// store other data, like versions
// store other data, like versions
//ds ds.ThreadSafeDatastore
//ds ds.ThreadSafeDatastore
ds
map
[
metakey
]
interface
{}
ds
map
[
metakey
]
interface
{}
dslock
sync
.
RWMutex
dslock
sync
.
RWMutex
interned
map
[
string
]
interface
{}
}
}
var
_
pstore
.
PeerMetadata
=
(
*
memoryPeerMetadata
)(
nil
)
var
_
pstore
.
PeerMetadata
=
(
*
memoryPeerMetadata
)(
nil
)
...
@@ -30,6 +36,13 @@ func NewPeerMetadata() pstore.PeerMetadata {
...
@@ -30,6 +36,13 @@ func NewPeerMetadata() pstore.PeerMetadata {
func
(
ps
*
memoryPeerMetadata
)
Put
(
p
peer
.
ID
,
key
string
,
val
interface
{})
error
{
func
(
ps
*
memoryPeerMetadata
)
Put
(
p
peer
.
ID
,
key
string
,
val
interface
{})
error
{
ps
.
dslock
.
Lock
()
ps
.
dslock
.
Lock
()
defer
ps
.
dslock
.
Unlock
()
defer
ps
.
dslock
.
Unlock
()
if
vals
,
ok
:=
val
.
(
string
);
ok
&&
internKeys
[
key
]
{
if
interned
,
ok
:=
ps
.
interned
[
vals
];
ok
{
val
=
interned
}
else
{
ps
.
interned
[
vals
]
=
val
}
}
ps
.
ds
[
metakey
{
p
,
key
}]
=
val
ps
.
ds
[
metakey
{
p
,
key
}]
=
val
return
nil
return
nil
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment