Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
2010fea0
Commit
2010fea0
authored
Jun 03, 2014
by
Maran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added faux latency for peeroverview
parent
fb6ff617
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
20 additions
and
5 deletions
+20
-5
state_manager.go
ethchain/state_manager.go
+1
-0
pub.go
ethpub/pub.go
+1
-0
types.go
ethpub/types.go
+2
-1
peer.go
peer.go
+16
-4
No files found.
ethchain/state_manager.go
View file @
2010fea0
...
@@ -22,6 +22,7 @@ type Peer interface {
...
@@ -22,6 +22,7 @@ type Peer interface {
Host
()
[]
byte
Host
()
[]
byte
Port
()
uint16
Port
()
uint16
Version
()
string
Version
()
string
PingTime
()
string
Connected
()
*
int32
Connected
()
*
int32
}
}
...
...
ethpub/pub.go
View file @
2010fea0
...
@@ -56,6 +56,7 @@ func (lib *PEthereum) GetPeers() []PPeer {
...
@@ -56,6 +56,7 @@ func (lib *PEthereum) GetPeers() []PPeer {
var
peers
[]
PPeer
var
peers
[]
PPeer
for
peer
:=
lib
.
manager
.
Peers
()
.
Front
();
peer
!=
nil
;
peer
=
peer
.
Next
()
{
for
peer
:=
lib
.
manager
.
Peers
()
.
Front
();
peer
!=
nil
;
peer
=
peer
.
Next
()
{
p
:=
peer
.
Value
.
(
ethchain
.
Peer
)
p
:=
peer
.
Value
.
(
ethchain
.
Peer
)
// we only want connected peers
if
atomic
.
LoadInt32
(
p
.
Connected
())
!=
0
{
if
atomic
.
LoadInt32
(
p
.
Connected
())
!=
0
{
peers
=
append
(
peers
,
*
NewPPeer
(
p
))
peers
=
append
(
peers
,
*
NewPPeer
(
p
))
}
}
...
...
ethpub/types.go
View file @
2010fea0
...
@@ -20,6 +20,7 @@ type PPeer struct {
...
@@ -20,6 +20,7 @@ type PPeer struct {
Port
int
`json:"port"`
Port
int
`json:"port"`
Version
string
`json:"version"`
Version
string
`json:"version"`
LastResponse
string
`json:"lastResponse"`
LastResponse
string
`json:"lastResponse"`
Latency
string
`json:"latency"`
}
}
func
NewPPeer
(
peer
ethchain
.
Peer
)
*
PPeer
{
func
NewPPeer
(
peer
ethchain
.
Peer
)
*
PPeer
{
...
@@ -34,7 +35,7 @@ func NewPPeer(peer ethchain.Peer) *PPeer {
...
@@ -34,7 +35,7 @@ func NewPPeer(peer ethchain.Peer) *PPeer {
}
}
ipAddress
:=
strings
.
Join
(
ip
,
"."
)
ipAddress
:=
strings
.
Join
(
ip
,
"."
)
return
&
PPeer
{
ref
:
&
peer
,
Inbound
:
peer
.
Inbound
(),
LastSend
:
peer
.
LastSend
()
.
Unix
(),
LastPong
:
peer
.
LastPong
(),
Version
:
peer
.
Version
(),
Ip
:
ipAddress
,
Port
:
int
(
peer
.
Port
())}
return
&
PPeer
{
ref
:
&
peer
,
Inbound
:
peer
.
Inbound
(),
LastSend
:
peer
.
LastSend
()
.
Unix
(),
LastPong
:
peer
.
LastPong
(),
Version
:
peer
.
Version
(),
Ip
:
ipAddress
,
Port
:
int
(
peer
.
Port
())
,
Latency
:
peer
.
PingTime
()
}
}
}
// Block interface exposed to QML
// Block interface exposed to QML
...
...
peer.go
View file @
2010fea0
...
@@ -130,6 +130,10 @@ type Peer struct {
...
@@ -130,6 +130,10 @@ type Peer struct {
blocksRequested
int
blocksRequested
int
version
string
version
string
// We use this to give some kind of pingtime to a node, not very accurate, could be improved.
pingTime
time
.
Duration
pingStartTime
time
.
Time
}
}
func
NewPeer
(
conn
net
.
Conn
,
ethereum
*
Ethereum
,
inbound
bool
)
*
Peer
{
func
NewPeer
(
conn
net
.
Conn
,
ethereum
*
Ethereum
,
inbound
bool
)
*
Peer
{
...
@@ -185,6 +189,9 @@ func NewOutboundPeer(addr string, ethereum *Ethereum, caps Caps) *Peer {
...
@@ -185,6 +189,9 @@ func NewOutboundPeer(addr string, ethereum *Ethereum, caps Caps) *Peer {
}
}
// Getters
// Getters
func
(
p
*
Peer
)
PingTime
()
string
{
return
p
.
pingTime
.
String
()
}
func
(
p
*
Peer
)
Inbound
()
bool
{
func
(
p
*
Peer
)
Inbound
()
bool
{
return
p
.
inbound
return
p
.
inbound
}
}
...
@@ -246,7 +253,7 @@ func (p *Peer) writeMessage(msg *ethwire.Msg) {
...
@@ -246,7 +253,7 @@ func (p *Peer) writeMessage(msg *ethwire.Msg) {
// Outbound message handler. Outbound messages are handled here
// Outbound message handler. Outbound messages are handled here
func
(
p
*
Peer
)
HandleOutbound
()
{
func
(
p
*
Peer
)
HandleOutbound
()
{
// The ping timer. Makes sure that every 2 minutes a ping is send to the peer
// The ping timer. Makes sure that every 2 minutes a ping is send to the peer
pingTimer
:=
time
.
NewTicker
(
2
*
time
.
Minute
)
pingTimer
:=
time
.
NewTicker
(
30
*
time
.
Second
)
serviceTimer
:=
time
.
NewTicker
(
5
*
time
.
Minute
)
serviceTimer
:=
time
.
NewTicker
(
5
*
time
.
Minute
)
out
:
out
:
...
@@ -255,12 +262,12 @@ out:
...
@@ -255,12 +262,12 @@ out:
// Main message queue. All outbound messages are processed through here
// Main message queue. All outbound messages are processed through here
case
msg
:=
<-
p
.
outputQueue
:
case
msg
:=
<-
p
.
outputQueue
:
p
.
writeMessage
(
msg
)
p
.
writeMessage
(
msg
)
p
.
lastSend
=
time
.
Now
()
p
.
lastSend
=
time
.
Now
()
// Ping timer sends a ping to the peer each 2 minutes
// Ping timer sends a ping to the peer each 2 minutes
case
<-
pingTimer
.
C
:
case
<-
pingTimer
.
C
:
p
.
writeMessage
(
ethwire
.
NewMessage
(
ethwire
.
MsgPingTy
,
""
))
p
.
writeMessage
(
ethwire
.
NewMessage
(
ethwire
.
MsgPingTy
,
""
))
p
.
pingStartTime
=
time
.
Now
()
// Service timer takes care of peer broadcasting, transaction
// Service timer takes care of peer broadcasting, transaction
// posting or block posting
// posting or block posting
...
@@ -290,8 +297,8 @@ clean:
...
@@ -290,8 +297,8 @@ clean:
// Inbound handler. Inbound messages are received here and passed to the appropriate methods
// Inbound handler. Inbound messages are received here and passed to the appropriate methods
func
(
p
*
Peer
)
HandleInbound
()
{
func
(
p
*
Peer
)
HandleInbound
()
{
for
atomic
.
LoadInt32
(
&
p
.
disconnect
)
==
0
{
for
atomic
.
LoadInt32
(
&
p
.
disconnect
)
==
0
{
// HMM?
// HMM?
time
.
Sleep
(
500
*
time
.
Millisecond
)
time
.
Sleep
(
500
*
time
.
Millisecond
)
// Wait for a message from the peer
// Wait for a message from the peer
...
@@ -319,6 +326,7 @@ func (p *Peer) HandleInbound() {
...
@@ -319,6 +326,7 @@ func (p *Peer) HandleInbound() {
// last pong so the peer handler knows this peer is still
// last pong so the peer handler knows this peer is still
// active.
// active.
p
.
lastPong
=
time
.
Now
()
.
Unix
()
p
.
lastPong
=
time
.
Now
()
.
Unix
()
p
.
pingTime
=
time
.
Now
()
.
Sub
(
p
.
pingStartTime
)
case
ethwire
.
MsgBlockTy
:
case
ethwire
.
MsgBlockTy
:
// Get all blocks and process them
// Get all blocks and process them
var
block
,
lastBlock
*
ethchain
.
Block
var
block
,
lastBlock
*
ethchain
.
Block
...
@@ -531,11 +539,15 @@ func (p *Peer) Start() {
...
@@ -531,11 +539,15 @@ func (p *Peer) Start() {
return
return
}
}
// Run the outbound handler in a new goroutine
go
p
.
HandleOutbound
()
go
p
.
HandleOutbound
()
// Run the inbound handler in a new goroutine
// Run the inbound handler in a new goroutine
go
p
.
HandleInbound
()
go
p
.
HandleInbound
()
// Wait a few seconds for startup and then ask for an initial ping
time
.
Sleep
(
2
*
time
.
Second
)
p
.
writeMessage
(
ethwire
.
NewMessage
(
ethwire
.
MsgPingTy
,
""
))
p
.
pingStartTime
=
time
.
Now
()
}
}
func
(
p
*
Peer
)
Stop
()
{
func
(
p
*
Peer
)
Stop
()
{
...
...
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