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
dms3
go-dms3
Commits
a11c59dc
Commit
a11c59dc
authored
Nov 11, 2014
by
Brian Tiger Chow
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(peer) add Type (Unspecified, Local, Remote)
parent
ac845154
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
60 additions
and
0 deletions
+60
-0
core/core.go
core/core.go
+5
-0
core/core_test.go
core/core_test.go
+17
-0
peer/peer.go
peer/peer.go
+30
-0
peer/peer_test.go
peer/peer_test.go
+8
-0
No files found.
core/core.go
View file @
a11c59dc
...
...
@@ -211,6 +211,11 @@ func initIdentity(cfg *config.Identity, peers peer.Peerstore, online bool) (peer
if
err
!=
nil
{
return
nil
,
err
}
self
.
SetType
(
peer
.
Local
)
self
,
err
=
peers
.
Add
(
self
)
if
err
!=
nil
{
return
nil
,
err
}
// when not online, don't need to parse private keys (yet)
if
online
{
...
...
core/core_test.go
View file @
a11c59dc
...
...
@@ -4,6 +4,7 @@ import (
"testing"
config
"github.com/jbenet/go-ipfs/config"
"github.com/jbenet/go-ipfs/peer"
)
func
TestInitialization
(
t
*
testing
.
T
)
{
...
...
@@ -57,6 +58,22 @@ func TestInitialization(t *testing.T) {
}
}
func
TestPeerIsLocal
(
t
*
testing
.
T
)
{
t
.
Log
(
"Ensure that peer is Local after initializing identity"
)
online
:=
false
peers
:=
peer
.
NewPeerstore
()
cfg
:=
testIdentity
p
,
err
:=
initIdentity
(
&
cfg
,
peers
,
online
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
if
p
.
GetType
()
!=
peer
.
Local
{
t
.
Fail
()
}
}
var
testIdentity
=
config
.
Identity
{
PeerID
:
"QmNgdzLieYi8tgfo2WfTUzNVH5hQK9oAYGVf6dxN12NrHt"
,
PrivKey
:
"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"
,
...
...
peer/peer.go
View file @
a11c59dc
...
...
@@ -95,10 +95,23 @@ type Peer interface {
GetLatency
()
(
out
time
.
Duration
)
SetLatency
(
laten
time
.
Duration
)
// Get/SetType indicate whether this is a local or remote peer
GetType
()
Type
SetType
(
Type
)
// Update with the data of another peer instance
Update
(
Peer
)
error
}
type
Type
uint8
const
(
// Unspecified indicates peer was created without specifying Type
Unspecified
Type
=
iota
Local
Remote
)
type
peer
struct
{
id
ID
addresses
[]
ma
.
Multiaddr
...
...
@@ -111,6 +124,9 @@ type peer struct {
// within that package, map from ID to latency value.
latency
time
.
Duration
// typ can be Local, Remote, or Unspecified (default)
typ
Type
sync
.
RWMutex
}
...
...
@@ -222,6 +238,18 @@ func (p *peer) SetLatency(laten time.Duration) {
p
.
Unlock
()
}
func
(
p
*
peer
)
SetType
(
t
Type
)
{
p
.
Lock
()
p
.
typ
=
t
defer
p
.
Unlock
()
}
func
(
p
*
peer
)
GetType
()
Type
{
p
.
Lock
()
defer
p
.
Unlock
()
return
p
.
typ
}
// LoadAndVerifyKeyPair unmarshalls, loads a private/public key pair.
// Error if (a) unmarshalling fails, or (b) pubkey does not match id.
func
(
p
*
peer
)
LoadAndVerifyKeyPair
(
marshalled
[]
byte
)
error
{
...
...
@@ -306,6 +334,8 @@ func (p *peer) Update(other Peer) error {
p
.
SetLatency
(
other
.
GetLatency
())
p
.
SetType
(
other
.
GetType
())
sk
:=
other
.
PrivKey
()
pk
:=
other
.
PubKey
()
p
.
Lock
()
...
...
peer/peer_test.go
View file @
a11c59dc
...
...
@@ -55,3 +55,11 @@ func TestStringMethodWithSmallId(t *testing.T) {
}
p1
.
String
()
}
func
TestDefaultType
(
t
*
testing
.
T
)
{
t
.
Log
(
"Ensure that peers are initialized to Unspecified by default"
)
p
:=
peer
{}
if
p
.
GetType
()
!=
Unspecified
{
t
.
Fatalf
(
"Peer's default type is was not `Unspecified`"
)
}
}
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