Skip to content

Commit

Permalink
refactor: extract ping interface
Browse files Browse the repository at this point in the history
  • Loading branch information
richard-ramos committed Oct 24, 2024
1 parent 38be0dc commit c6c6479
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions waku/v2/api/common/pinger.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package common

import (
"context"
"time"

"github.com/libp2p/go-libp2p/core/host"
"github.com/libp2p/go-libp2p/core/peer"
"github.com/libp2p/go-libp2p/p2p/protocol/ping"
)

type Pinger interface {
PingPeer(ctx context.Context, peerID peer.ID) (time.Duration, error)
}

type defaultPingImpl struct {
host host.Host
}

func NewDefaultPinger(host host.Host) Pinger {
return &defaultPingImpl{
host: host,
}
}

func (d *defaultPingImpl) PingPeer(ctx context.Context, peerID peer.ID) (time.Duration, error) {
pingResultCh := ping.Ping(ctx, d.host, peerID)
select {
case <-ctx.Done():
return 0, ctx.Err()
case r := <-pingResultCh:
if r.Error != nil {
return 0, r.Error
}
return r.RTT, nil
}
}

0 comments on commit c6c6479

Please sign in to comment.