aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/peer.go
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2019-01-18 22:22:07 +0800
committerWei-Ning Huang <w@byzantine-lab.io>2019-06-12 17:27:21 +0800
commitef717fb072e85cabf6cef99206078d3fa2decd10 (patch)
treecc2a1b269ebfe4768afc6c21798ef2095a3f2033 /p2p/peer.go
parentc2c6f9629f7ff386b9599cf3fce73de0a3c234a6 (diff)
downloadgo-tangerine-ef717fb072e85cabf6cef99206078d3fa2decd10.tar
go-tangerine-ef717fb072e85cabf6cef99206078d3fa2decd10.tar.gz
go-tangerine-ef717fb072e85cabf6cef99206078d3fa2decd10.tar.bz2
go-tangerine-ef717fb072e85cabf6cef99206078d3fa2decd10.tar.lz
go-tangerine-ef717fb072e85cabf6cef99206078d3fa2decd10.tar.xz
go-tangerine-ef717fb072e85cabf6cef99206078d3fa2decd10.tar.zst
go-tangerine-ef717fb072e85cabf6cef99206078d3fa2decd10.zip
p2p: report latency and relative latency to datadog (#162)
Diffstat (limited to 'p2p/peer.go')
-rw-r--r--p2p/peer.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/p2p/peer.go b/p2p/peer.go
index 3d6ce9dcd..9183082a1 100644
--- a/p2p/peer.go
+++ b/p2p/peer.go
@@ -260,7 +260,7 @@ func (p *Peer) pingLoop() {
for {
select {
case <-ping.C:
- if err := SendItems(p.rw, pingMsg); err != nil {
+ if err := SendItems(p.rw, pingMsg, uint64(time.Now().UnixNano())); err != nil {
p.protoErr <- err
return
}
@@ -290,8 +290,14 @@ func (p *Peer) readLoop(errc chan<- error) {
func (p *Peer) handle(msg Msg) error {
switch {
case msg.Code == pingMsg:
- msg.Discard()
- go SendItems(p.rw, pongMsg)
+ var pingTime [1]uint64
+ rlp.Decode(msg.Payload, &pingTime)
+ peerRelativeLatency.Update((time.Now().UnixNano() - int64(pingTime[0])) / 1000)
+ go SendItems(p.rw, pongMsg, pingTime[0])
+ case msg.Code == pongMsg:
+ var pingTime [1]uint64
+ rlp.Decode(msg.Payload, &pingTime)
+ peerLatency.Update((time.Now().UnixNano() - int64(pingTime[0])) / 2 / 1000)
case msg.Code == discMsg:
var reason [1]DiscReason
// This is the last message. We don't need to discard or