(psi []string, data *stats.PSIData)
| 574 | } |
| 575 | |
| 576 | func parsePSIData(psi []string, data *stats.PSIData) error { |
| 577 | for _, f := range psi { |
| 578 | kv := strings.SplitN(f, "=", 2) |
| 579 | if len(kv) != 2 { |
| 580 | return fmt.Errorf("invalid PSI data: %q", f) |
| 581 | } |
| 582 | var pv *float64 |
| 583 | switch kv[0] { |
| 584 | case "avg10": |
| 585 | pv = &data.Avg10 |
| 586 | case "avg60": |
| 587 | pv = &data.Avg60 |
| 588 | case "avg300": |
| 589 | pv = &data.Avg300 |
| 590 | case "total": |
| 591 | v, err := strconv.ParseUint(kv[1], 10, 64) |
| 592 | if err != nil { |
| 593 | return fmt.Errorf("invalid %s PSI value: %w", kv[0], err) |
| 594 | } |
| 595 | data.Total = v |
| 596 | } |
| 597 | if pv != nil { |
| 598 | v, err := strconv.ParseFloat(kv[1], 64) |
| 599 | if err != nil { |
| 600 | return fmt.Errorf("invalid %s PSI value: %w", kv[0], err) |
| 601 | } |
| 602 | *pv = v |
| 603 | } |
| 604 | } |
| 605 | return nil |
| 606 | } |
| 607 | |
| 608 | func getSubreaper() (int, error) { |
| 609 | var i uintptr |
no outgoing calls
no test coverage detected
searching dependent graphs…