From 33cc2473a3d6ca941717c557f8e72b9904fbdc4f Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期五, 12 十一月 2021 15:20:58 +0800 Subject: [PATCH] add foreach, size api --- api.go | 46 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 35 insertions(+), 11 deletions(-) diff --git a/api.go b/api.go index dc73a4f..8870c6f 100644 --- a/api.go +++ b/api.go @@ -1,18 +1,20 @@ package boltcache +import "strconv" + //娣诲姞涓�鏉℃棩蹇� func (ls *LogStore) ApplyLog(logData []byte) { lastLogIndex := ls.getLastLog() - ls.applyCh <- &Log { - Index: lastLogIndex+1, - Data: logData, + ls.applyCh <- &Log{ + Index: lastLogIndex + 1, + Data: logData, } ls.setLastLog(lastLogIndex + 1) } type LogCon struct { conf *confLog - Log *Log + Log *Log } //鑾峰彇缂撳瓨鐨勬暟鎹� @@ -24,21 +26,21 @@ func (ls *LogStore) Get() *LogCon { idx, _ := ls.store.FirstIndex(confBucket) cLog := &confLog{} - if err := ls.store.GetConfLog(idx, cLog);err ==nil { + if err := ls.store.GetConfLog(idx, cLog); err == nil { u, _ := ls.store.FirstIndex(cLog.BucketName) log := &Log{} - if err = ls.store.GetLog(cLog.BucketName, u, log);err ==nil { + if err = ls.store.GetLog(cLog.BucketName, u, log); err == nil { log.Index = u cLog.Index = int(idx) return &LogCon{ - conf:cLog, - Log: log, + conf: cLog, + Log: log, } } else { - if size,_ := ls.store.Size(confBucket);size >1 { + if size, _ := ls.store.Size(confBucket); size > 1 { ls.Delete(&LogCon{ conf: cLog, - Log: nil, + Log: nil, }) } ls.printLog("Get log err:", err) @@ -49,6 +51,28 @@ return nil } +// 閬嶅巻鏁版嵁, 杈撳嚭鍘熷鏁版嵁 +func (ls *LogStore) ForEach(f func(v []byte) error) { + ls.store.ForEach(f) +} + +func (ls *LogStore) Size() int { + start, _ := ls.store.FirstIndex(confBucket) + end, _ := ls.store.LastIndex(confBucket) + + totalSize := 0 + + for ; start <= end; start++ { + bucketName := bucketPre + strconv.Itoa(int(start)) + bucketSize, err := ls.store.Size(bucketName) + if err == nil { + totalSize = totalSize + bucketSize + } + } + + return totalSize +} + //鎻愪緵缁欏灞備娇鐢紝鍒犻櫎鏃ュ織 func (ls *LogStore) Delete(lc *LogCon) error { return ls.store.Delete(lc) @@ -56,4 +80,4 @@ func (ls *LogStore) Close() error { return ls.store.Close() -} \ No newline at end of file +} -- Gitblit v1.8.0