mirror of
https://github.com/go-ping/ping.git
synced 2025-04-28 02:40:17 +00:00
Add option not to store all received RTTs (#115)
This prevents memory bloat from a process that wants to do very long-running ping tests.
This commit is contained in:
parent
5f9dc3248b
commit
265e7c64b3
19
ping.go
19
ping.go
@ -77,11 +77,12 @@ var (
|
||||
func New(addr string) *Pinger {
|
||||
r := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||
return &Pinger{
|
||||
Count: -1,
|
||||
Interval: time.Second,
|
||||
Size: timeSliceLength,
|
||||
Timeout: time.Second * 100000,
|
||||
Tracker: r.Int63n(math.MaxInt64),
|
||||
Count: -1,
|
||||
Interval: time.Second,
|
||||
RecordRtts: true,
|
||||
Size: timeSliceLength,
|
||||
Timeout: time.Second * 100000,
|
||||
Tracker: r.Int63n(math.MaxInt64),
|
||||
|
||||
addr: addr,
|
||||
done: make(chan bool),
|
||||
@ -122,6 +123,10 @@ type Pinger struct {
|
||||
// Number of packets received
|
||||
PacketsRecv int
|
||||
|
||||
// If true, keep a record of rtts of all received packets.
|
||||
// Set to false to avoid memory bloat for long running pings.
|
||||
RecordRtts bool
|
||||
|
||||
// rtts is all of the Rtts
|
||||
rtts []time.Duration
|
||||
|
||||
@ -538,7 +543,9 @@ func (p *Pinger) processPacket(recv *packet) error {
|
||||
return fmt.Errorf("invalid ICMP echo reply; type: '%T', '%v'", pkt, pkt)
|
||||
}
|
||||
|
||||
p.rtts = append(p.rtts, outPkt.Rtt)
|
||||
if p.RecordRtts {
|
||||
p.rtts = append(p.rtts, outPkt.Rtt)
|
||||
}
|
||||
handler := p.OnRecv
|
||||
if handler != nil {
|
||||
handler(outPkt)
|
||||
|
Loading…
Reference in New Issue
Block a user