mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-05 01:20:26 +08:00
执行edge-node cache.badge命令时打印进度
This commit is contained in:
@@ -475,6 +475,19 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var progressSock = gosock.NewTmpSock(teaconst.CacheGarbageSockName)
|
||||||
|
progressSock.OnCommand(func(cmd *gosock.Command) {
|
||||||
|
var params = maps.NewMap(cmd.Params)
|
||||||
|
if cmd.Code == "progress" {
|
||||||
|
fmt.Printf("%.2f%% %d\n", params.GetFloat64("progress")*100, params.GetInt("count"))
|
||||||
|
_ = cmd.ReplyOk()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
go func() {
|
||||||
|
_ = progressSock.Listen()
|
||||||
|
}()
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
|
||||||
var sock = gosock.NewTmpSock(teaconst.ProcessName)
|
var sock = gosock.NewTmpSock(teaconst.ProcessName)
|
||||||
reply, err := sock.Send(&gosock.Command{
|
reply, err := sock.Send(&gosock.Command{
|
||||||
Code: "cache.garbage",
|
Code: "cache.garbage",
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import (
|
|||||||
"github.com/iwind/TeaGo/types"
|
"github.com/iwind/TeaGo/types"
|
||||||
stringutil "github.com/iwind/TeaGo/utils/string"
|
stringutil "github.com/iwind/TeaGo/utils/string"
|
||||||
timeutil "github.com/iwind/TeaGo/utils/time"
|
timeutil "github.com/iwind/TeaGo/utils/time"
|
||||||
|
"github.com/iwind/gosock/pkg/gosock"
|
||||||
"github.com/shirou/gopsutil/v3/load"
|
"github.com/shirou/gopsutil/v3/load"
|
||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
@@ -1562,6 +1563,15 @@ func (this *FileStorage) ScanGarbageCaches(fileCallback func(path string) error)
|
|||||||
allDirs = append(allDirs, subDir.Path)
|
allDirs = append(allDirs, subDir.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var countDirs = 0
|
||||||
|
|
||||||
|
// process progress
|
||||||
|
var progressSock = gosock.NewTmpSock(teaconst.CacheGarbageSockName)
|
||||||
|
_, sockErr := progressSock.SendTimeout(&gosock.Command{Code: "progress", Params: map[string]any{"progress": 0}}, 1*time.Second)
|
||||||
|
var canReportProgress = sockErr == nil
|
||||||
|
var lastProgress float64
|
||||||
|
var countFound = 0
|
||||||
|
|
||||||
for _, subDir := range allDirs {
|
for _, subDir := range allDirs {
|
||||||
var dir0 = subDir + "/p" + types.String(this.policy.Id)
|
var dir0 = subDir + "/p" + types.String(this.policy.Id)
|
||||||
dir1Matches, err := filepath.Glob(dir0 + "/*")
|
dir1Matches, err := filepath.Glob(dir0 + "/*")
|
||||||
@@ -1585,6 +1595,20 @@ func (this *FileStorage) ScanGarbageCaches(fileCallback func(path string) error)
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
countDirs++
|
||||||
|
|
||||||
|
// report progress
|
||||||
|
if canReportProgress {
|
||||||
|
var progress = float64(countDirs) / 65536
|
||||||
|
if fmt.Sprintf("%.2f", lastProgress) != fmt.Sprintf("%.2f", progress) {
|
||||||
|
lastProgress = progress
|
||||||
|
_, _ = progressSock.SendTimeout(&gosock.Command{Code: "progress", Params: map[string]any{
|
||||||
|
"progress": progress,
|
||||||
|
"count": countFound,
|
||||||
|
}}, 100*time.Millisecond)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fileMatches, err := filepath.Glob(dir2 + "/*.cache")
|
fileMatches, err := filepath.Glob(dir2 + "/*.cache")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// ignore error
|
// ignore error
|
||||||
@@ -1617,6 +1641,7 @@ func (this *FileStorage) ScanGarbageCaches(fileCallback func(path string) error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if fileCallback != nil {
|
if fileCallback != nil {
|
||||||
|
countFound++
|
||||||
err = fileCallback(file)
|
err = fileCallback(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -1627,6 +1652,14 @@ func (this *FileStorage) ScanGarbageCaches(fileCallback func(path string) error)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 100% progress
|
||||||
|
if canReportProgress && lastProgress != 1 {
|
||||||
|
_, _ = progressSock.SendTimeout(&gosock.Command{Code: "progress", Params: map[string]any{
|
||||||
|
"progress": 1,
|
||||||
|
"count": countFound,
|
||||||
|
}}, 100*time.Millisecond)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,5 +14,6 @@ const (
|
|||||||
// SystemdServiceName systemd
|
// SystemdServiceName systemd
|
||||||
SystemdServiceName = "edge-node"
|
SystemdServiceName = "edge-node"
|
||||||
|
|
||||||
AccessLogSockName = "edge-node.accesslog.sock"
|
AccessLogSockName = "edge-node.accesslog"
|
||||||
|
CacheGarbageSockName = "edge-node.cache.garbage"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user