mirror of
https://github.com/shirou/gopsutil.git
synced 2025-04-26 13:48:59 +08:00
code review
This commit is contained in:
parent
6b2bfe408d
commit
dbc0f20fe3
@ -79,21 +79,10 @@ func UsageWithContext(ctx context.Context, path string) (*UsageStat, error) {
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
type errorCollector []error
|
||||
|
||||
func (c *errorCollector) collect(e error) { *c = append(*c, e) }
|
||||
|
||||
func (c *errorCollector) Error() (err string) {
|
||||
err = ""
|
||||
for i, e := range *c {
|
||||
err += fmt.Sprintf("\tError %d: %s\n", i, e.Error())
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, error) {
|
||||
collector := new(errorCollector)
|
||||
warnings := common.Warnings{
|
||||
Verbose: true,
|
||||
}
|
||||
var ret []PartitionStat
|
||||
lpBuffer := make([]byte, 254)
|
||||
diskret, _, err := procGetLogicalDriveStringsW.Call(
|
||||
@ -109,7 +98,7 @@ func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, erro
|
||||
typeret, _, _ := procGetDriveType.Call(uintptr(unsafe.Pointer(typepath)))
|
||||
if typeret == 0 {
|
||||
err := windows.GetLastError()
|
||||
collector.collect(err)
|
||||
warnings.Add(err)
|
||||
continue
|
||||
}
|
||||
// 2: DRIVE_REMOVABLE 3: DRIVE_FIXED 4: DRIVE_REMOTE 5: DRIVE_CDROM
|
||||
@ -134,7 +123,7 @@ func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, erro
|
||||
if typeret == 5 || typeret == 2 {
|
||||
continue // device is not ready will happen if there is no disk in the drive
|
||||
}
|
||||
collector.collect(err)
|
||||
warnings.Add(err)
|
||||
continue
|
||||
}
|
||||
opts := []string{"rw"}
|
||||
@ -155,11 +144,7 @@ func PartitionsWithContext(ctx context.Context, all bool) ([]PartitionStat, erro
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(*collector) == 0 {
|
||||
return ret, nil
|
||||
} else {
|
||||
return ret, collector
|
||||
}
|
||||
return ret, warnings.Reference()
|
||||
}
|
||||
|
||||
func IOCountersWithContext(ctx context.Context, names ...string) (map[string]IOCountersStat, error) {
|
||||
|
@ -395,7 +395,7 @@ func SensorsTemperaturesWithContext(ctx context.Context) ([]TemperatureStat, err
|
||||
}
|
||||
}
|
||||
|
||||
var warns Warnings
|
||||
var warns common.Warnings
|
||||
|
||||
if len(files) == 0 { // handle distributions without hwmon, like raspbian #391, parse legacy thermal_zone files
|
||||
files, err = filepath.Glob(common.HostSys("/class/thermal/thermal_zone*/"))
|
||||
|
@ -1,11 +1,10 @@
|
||||
package host
|
||||
package common
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
import "fmt"
|
||||
|
||||
type Warnings struct {
|
||||
List []error
|
||||
List []error
|
||||
Verbose bool
|
||||
}
|
||||
|
||||
func (w *Warnings) Add(err error) {
|
||||
@ -20,5 +19,12 @@ func (w *Warnings) Reference() error {
|
||||
}
|
||||
|
||||
func (w *Warnings) Error() string {
|
||||
if w.Verbose {
|
||||
str := ""
|
||||
for i, e := range w.List {
|
||||
str += fmt.Sprintf("\tError %d: %s\n", i, e.Error())
|
||||
}
|
||||
return str
|
||||
}
|
||||
return fmt.Sprintf("Number of warnings: %v", len(w.List))
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user