From 09e31470ffc2a16b6898ab03fd564e1d4144c137 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 23 Jun 2023 18:11:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=81=9C=E6=AD=A2=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E6=97=B6=E6=97=A0=E6=B3=95=E6=AD=A3=E7=A1=AE=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=B8=A6=E5=AE=BD=E6=95=B0=E6=8D=AE=E5=88=B0=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E6=96=87=E4=BB=B6=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/stats/bandwidth_stat_manager.go | 25 +++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/internal/stats/bandwidth_stat_manager.go b/internal/stats/bandwidth_stat_manager.go index ddd0047..b3f100d 100644 --- a/internal/stats/bandwidth_stat_manager.go +++ b/internal/stats/bandwidth_stat_manager.go @@ -74,15 +74,12 @@ type BandwidthStatManager struct { ticker *time.Ticker locker sync.Mutex - - cacheFile string // 上一次的缓存文件 } func NewBandwidthStatManager() *BandwidthStatManager { return &BandwidthStatManager{ - m: map[string]*BandwidthStat{}, - ticker: time.NewTicker(1 * time.Minute), // 时间小于1分钟是为了更快速地上传结果 - cacheFile: Tea.Root + "/data/bandwidth.dat", + m: map[string]*BandwidthStat{}, + ticker: time.NewTicker(1 * time.Minute), // 时间小于1分钟是为了更快速地上传结果 } } @@ -271,13 +268,17 @@ func (this *BandwidthStatManager) Save() error { this.locker.Lock() defer this.locker.Unlock() + if len(this.m) == 0 { + return nil + } + data, err := json.Marshal(this.m) if err != nil { return err } - _ = os.Remove(this.cacheFile) - return os.WriteFile(this.cacheFile, data, 0666) + _ = os.Remove(this.cacheFile()) + return os.WriteFile(this.cacheFile(), data, 0666) } // Cancel 取消上传 @@ -287,7 +288,7 @@ func (this *BandwidthStatManager) Cancel() { // 从本地缓存文件中恢复数据 func (this *BandwidthStatManager) recover() { - cacheData, err := os.ReadFile(this.cacheFile) + cacheData, err := os.ReadFile(this.cacheFile()) if err == nil { var m = map[string]*BandwidthStat{} err = json.Unmarshal(cacheData, &m) @@ -309,6 +310,12 @@ func (this *BandwidthStatManager) recover() { } } } - _ = os.Remove(this.cacheFile) + _ = os.Remove(this.cacheFile()) } } + +// 获取缓存文件 +// 不能在init()中初始化,避免无法获得正确的路径 +func (this *BandwidthStatManager) cacheFile() string { + return Tea.Root + "/data/bandwidth.dat" +}