12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package linux
- import (
- "io/ioutil"
- "strconv"
- "strings"
- "time"
- )
- type Uptime struct {
- Total float64 `json:"total"`
- Idle float64 `json:"idle"`
- }
- func (self *Uptime) GetTotalDuration() time.Duration {
- return time.Duration(self.Total) * time.Second
- }
- func (self *Uptime) GetIdleDuration() time.Duration {
- return time.Duration(self.Idle) * time.Second
- }
- func (self *Uptime) CalculateIdle() float64 {
- // XXX
- // num2/(num1*N) # N = SMP CPU numbers
- return 0
- }
- func ReadUptime(path string) (*Uptime, error) {
- b, err := ioutil.ReadFile(path)
- if err != nil {
- return nil, err
- }
- fields := strings.Fields(string(b))
- uptime := Uptime{}
- if uptime.Total, err = strconv.ParseFloat(fields[0], 64); err != nil {
- return nil, err
- }
- if uptime.Idle, err = strconv.ParseFloat(fields[1], 64); err != nil {
- return nil, err
- }
- return &uptime, nil
- }
|