| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package tui
- import "pingo/internal/ping"
- type Address struct {
- Address string
- results []float64
- max_results int
- }
- func (a *Address) Truncate() (truncated bool) {
- if len(a.results) > a.max_results {
- a.results = a.results[1:len(a.results)] // return modified slice missing first index
- return true
- }
- return false
- }
- // Wraps [ping.Ping]
- func (a *Address) Ping() (delay float64, err error) {
- return ping.Ping(a.Address)
- }
- // Poll pings the affiliated Address and appends it to a.results
- func (a *Address) Poll() (success bool, err error) {
- if delay, err := a.Ping(); err == nil {
- a.results = append(a.results, delay)
- a.Truncate() // enforce max length
- return true, nil
- } else {
- a.results = append(a.results, delay)
- a.Truncate() // enforce max length
- return false, err
- }
- }
- // Last returns the last result in [Address.results]. Returns -1 if no previous result
- func (a *Address) Last() (delay float64) {
- if len(a.results) > 0 {
- return a.results[len(a.results)-1]
- } else {
- return -1
- }
- }
|