types.go 682 B

1234567891011121314151617181920212223242526272829303132
  1. package tui
  2. import "pingo/internal/ping"
  3. type Address struct {
  4. Address string
  5. results []float64
  6. }
  7. // Wraps [ping.Ping]
  8. func (a *Address) Ping() (delay float64, err error) {
  9. return ping.Ping(a.Address)
  10. }
  11. // Poll pings the affiliated Address and appends it to a.results
  12. func (a *Address) Poll() (success bool, err error) {
  13. if delay, err := a.Ping(); err == nil {
  14. a.results = append(a.results, delay)
  15. return true, nil
  16. } else {
  17. return false, err
  18. }
  19. }
  20. // Last returns the last result in [Address.results]. Returns -1 if no previous result
  21. func (a *Address) Last() (delay float64) {
  22. if len(a.results) > 0 {
  23. return a.results[len(a.results)-1]
  24. } else {
  25. return -1
  26. }
  27. }