MCPcopy
hub / github.com/google/cadvisor / scanAdvancedTCPStats

Function scanAdvancedTCPStats

lib/container/libcontainer/handler.go:498–550  ·  view source on GitHub ↗
(advancedStats *info.TcpAdvancedStat, advancedTCPStatsFile string)

Source from the content-addressed store, hash-verified

496}
497
498func 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
552func scanTCPStats(tcpStatsFile string) (info.TcpStat, error) {
553 var stats info.TcpStat

Callers 1

advancedTCPStatsFromProcFunction · 0.85

Calls 2

ReadFileMethod · 0.80
ErrorfMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…