package status

import (
	"fmt"
	"github.com/shirou/gopsutil/v3/disk"
	"time"
)

type DiskStatus struct {
	Total uint64
	Used  uint64
	//LogicalDisk []disk.PartitionStat
}

func GetDiskStatus() *DiskStatus {

	ds := &DiskStatus{}

	// Get disk usage
	du, _ := disk.Usage("/")
	ds.Total = du.Total
	ds.Used = du.Used

	// 2023年7月14日 去除此部分 没什么用
	// Get logical disk info for Linux systems
	//if runtime.GOOS == "linux" {
	//	ld, _ := disk.Partitions(true)
	//	ds.LogicalDisk = ld
	//}

	return ds
}

func CalculateDiskIO() {

	// Get initial disk IO counters
	counters1, _ := disk.IOCounters()
	time.Sleep(time.Second)
	// Get disk IO counters after 1 second
	counters2, _ := disk.IOCounters()

	for device, counter1 := range counters1 {
		counter2 := counters2[device]
		readSpeed := float64(counter2.ReadBytes-counter1.ReadBytes) / 1024
		writeSpeed := float64(counter2.WriteBytes-counter1.WriteBytes) / 1024
		fmt.Printf("%v: read %vKB/s, write %vKB/s\n", device, readSpeed, writeSpeed)
	}
}
