提交 c7d04e96 作者: Jakub Sztandera

Move go-sysinfo to gx

License: MIT
Signed-off-by: 's avatarJakub Sztandera <kubuxu@protonmail.ch>
上级 35cdc133
......@@ -74,10 +74,6 @@
"Rev": "537e901819164627ca4bb5ce4e3faa8ce7956564"
},
{
"ImportPath": "github.com/whyrusleeping/go-sysinfo",
"Rev": "769b7c0b50e8030895abc74ba8107ac715e3162a"
},
{
"ImportPath": "gopkg.in/fsnotify.v1",
"Comment": "v1.2.0",
"Rev": "96c060f6a6b7e0d6f75fddd10efeaca3e5d1bcb0"
......
package sysinfo
import (
"errors"
)
var ErrPlatformNotSupported = errors.New("this operation is not supported on your platform")
type DiskStats struct {
Free uint64
Total uint64
FsType string
}
var diskUsageImpl func(string) (*DiskStats, error)
func DiskUsage(path string) (*DiskStats, error) {
if diskUsageImpl == nil {
return nil, ErrPlatformNotSupported
}
return diskUsageImpl(path)
}
type MemStats struct {
Swap uint64
Used uint64
}
var memInfoImpl func() (*MemStats, error)
func MemoryInfo() (*MemStats, error) {
if memInfoImpl == nil {
return nil, ErrPlatformNotSupported
}
return memInfoImpl()
}
package sysinfo
import (
"fmt"
"syscall"
)
func init() {
diskUsageImpl = darwinDiskUsage
memInfoImpl = darwinMemInfo
}
func darwinDiskUsage(path string) (*DiskStats, error) {
var stfst syscall.Statfs_t
err := syscall.Statfs(path, &stfst)
if err != nil {
return nil, err
}
free := stfst.Bfree * uint64(stfst.Bsize)
total := stfst.Bavail * uint64(stfst.Bsize)
return &DiskStats{
Free: free,
Total: total,
FsType: fmt.Sprint(stfst.Type),
}, nil
}
func darwinMemInfo() (*MemStats, error) {
// TODO: use vm_stat on osx to gather memory information
return new(MemStats), nil
}
package sysinfo
import (
"bytes"
"fmt"
"io/ioutil"
"strings"
"syscall"
humanize "gx/ipfs/QmPSBJL4momYnE7DcUyk2DVhD6rH488ZmHBGLbxNdhU44K/go-humanize"
)
func init() {
diskUsageImpl = linuxDiskUsage
memInfoImpl = linuxMemInfo
}
func linuxDiskUsage(path string) (*DiskStats, error) {
var stfst syscall.Statfs_t
err := syscall.Statfs(path, &stfst)
if err != nil {
return nil, err
}
free := stfst.Bfree * uint64(stfst.Bsize)
total := stfst.Bavail * uint64(stfst.Bsize)
return &DiskStats{
Free: free,
Total: total,
FsType: fmt.Sprint(stfst.Type),
}, nil
}
func linuxMemInfo() (*MemStats, error) {
info, err := ioutil.ReadFile("/proc/self/status")
if err != nil {
return nil, err
}
var stats MemStats
for _, e := range bytes.Split(info, []byte("\n")) {
if !bytes.HasPrefix(e, []byte("Vm")) {
continue
}
parts := bytes.Split(e, []byte(":"))
if len(parts) != 2 {
return nil, fmt.Errorf("unexpected line in proc stats: %q", string(e))
}
val := strings.Trim(string(parts[1]), " \n\t")
switch string(parts[0]) {
case "VmSize":
vmsize, err := humanize.ParseBytes(val)
if err != nil {
return nil, err
}
stats.Used = vmsize
case "VmSwap":
swapsize, err := humanize.ParseBytes(val)
if err != nil {
return nil, err
}
stats.Swap = swapsize
}
}
return &stats, nil
}
......@@ -8,8 +8,8 @@ import (
cmds "github.com/ipfs/go-ipfs/commands"
config "github.com/ipfs/go-ipfs/repo/config"
sysi "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/whyrusleeping/go-sysinfo"
manet "gx/ipfs/QmUBa4w6CbHJUMeGJPDiMEDWsM93xToK1fTnFXnrC8Hksw/go-multiaddr-net"
sysi "gx/ipfs/QmZRjKbHa6DenStpQJFiaPcEwkZqrx7TH6xTf342LDU3qM/go-sysinfo"
)
var sysDiagCmd = &cmds.Command{
......
......@@ -129,6 +129,12 @@
"hash": "QmbBhyDKsY4mbY6xsKt3qu9Y7FPvMJ6qbD8AMjYYvPRw1g",
"name": "goleveldb",
"version": "0.0.1"
},
{
"author": "whyrusleeping",
"hash": "QmZRjKbHa6DenStpQJFiaPcEwkZqrx7TH6xTf342LDU3qM",
"name": "go-sysinfo",
"version": "0.0.0"
}
],
"gxVersion": "0.4.0",
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论