(advancedStats *info.TcpAdvancedStat, advancedTCPStatsFile string)
| 496 | } |
| 497 | |
| 498 | func scanAdvancedTCPStats(advancedStats *info.TcpAdvancedStat, advancedTCPStatsFile string) error { |
| 499 | data, err := os.ReadFile(advancedTCPStatsFile) |
| 500 | if err != nil { |
| 501 | return fmt.Errorf("failure opening %s: %v", advancedTCPStatsFile, err) |
| 502 | } |
| 503 | |
| 504 | reader := strings.NewReader(string(data)) |
| 505 | scanner := bufio.NewScanner(reader) |
| 506 | scanner.Split(bufio.ScanLines) |
| 507 | |
| 508 | advancedTCPStats := make(map[string]interface{}) |
| 509 | for scanner.Scan() { |
| 510 | nameParts := strings.Split(scanner.Text(), " ") |
| 511 | scanner.Scan() |
| 512 | valueParts := strings.Split(scanner.Text(), " ") |
| 513 | // Remove trailing :. and ignore non-tcp |
| 514 | protocol := nameParts[0][:len(nameParts[0])-1] |
| 515 | if protocol != "TcpExt" && protocol != "Tcp" { |
| 516 | continue |
| 517 | } |
| 518 | if len(nameParts) != len(valueParts) { |
| 519 | return fmt.Errorf("mismatch field count mismatch in %s: %s", |
| 520 | advancedTCPStatsFile, protocol) |
| 521 | } |
| 522 | for i := 1; i < len(nameParts); i++ { |
| 523 | if strings.Contains(valueParts[i], "-") { |
| 524 | vInt64, err := strconv.ParseInt(valueParts[i], 10, 64) |
| 525 | if err != nil { |
| 526 | return fmt.Errorf("decode value: %s to int64 error: %s", valueParts[i], err) |
| 527 | } |
| 528 | advancedTCPStats[nameParts[i]] = vInt64 |
| 529 | } else { |
| 530 | vUint64, err := strconv.ParseUint(valueParts[i], 10, 64) |
| 531 | if err != nil { |
| 532 | return fmt.Errorf("decode value: %s to uint64 error: %s", valueParts[i], err) |
| 533 | } |
| 534 | advancedTCPStats[nameParts[i]] = vUint64 |
| 535 | } |
| 536 | } |
| 537 | } |
| 538 | |
| 539 | b, err := json.Marshal(advancedTCPStats) |
| 540 | if err != nil { |
| 541 | return err |
| 542 | } |
| 543 | |
| 544 | err = json.Unmarshal(b, advancedStats) |
| 545 | if err != nil { |
| 546 | return err |
| 547 | } |
| 548 | |
| 549 | return scanner.Err() |
| 550 | } |
| 551 | |
| 552 | func scanTCPStats(tcpStatsFile string) (info.TcpStat, error) { |
| 553 | var stats info.TcpStat |
no test coverage detected
searching dependent graphs…