From 04e46dde2753a2c8d964993179c31df8151d7e59 Mon Sep 17 00:00:00 2001 From: GUJIEJASON <1776127334@qq.com> Date: Fri, 27 Dec 2024 16:15:39 +0800 Subject: [PATCH] kv start --- db/vlog_manager.h | 68 ------------------------------------------------------- db/vlog_reader.h | 35 ---------------------------- db/vlog_writer.h | 39 ------------------------------- 3 files changed, 142 deletions(-) delete mode 100644 db/vlog_manager.h delete mode 100644 db/vlog_reader.h delete mode 100644 db/vlog_writer.h diff --git a/db/vlog_manager.h b/db/vlog_manager.h deleted file mode 100644 index 07d14d3..0000000 --- a/db/vlog_manager.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef LEVELDB_VLOG_MANAGER_H -#define LEVELDB_VLOG_MANAGER_H - -#include -#include -#include -#include "leveldb/env.h" - -namespace leveldb { -namespace vlog { - -class VlogWriter; -class VlogReader; - -class VlogInfo { - private: - /* vlog 当前大小 */ - size_t size_; - /* vlog 当前若插入新 record 的偏移 */ - size_t head_; - /* vlog 当前过期的 record 数量 */ - uint64_t expired_count_; - - VlogReader* vlog_read_; - VlogWriter* vlog_write_; - - public: - VlogInfo() : size_(0), head_(0), expired_count_(0) {} - ~VlogInfo() = default; - - friend class VlogWriter; - friend class VlogReader; - friend class VlogManager; -}; - -class VlogManager { - public: - explicit VlogManager(uint64_t expired_threshold); - ~VlogManager() = default; - - /* 新建一个 vlog 并编号 */ - void AddVlog(uint64_t vlog_no); - /* 往当前活跃 vlog 插入一条 record */ - Status AddRecord(const Slice& slice); - /* 更新当前活跃 vlog 的头部位置 */ - Status SetHead(size_t offset); - /* 当前活跃 vlog 的写缓冲的数据全部写入磁盘 */ - Status Sync(); - /* 从某个 vlog 中获取 value */ - Status FetchValueFromVlog(Slice record_addr, std::string* value); - /* 设置当前活跃 vlog */ - void SetCurrentVlog(uint64_t vlog_no); - - private: - /* 管理所有 vlog 的编号和信息 */ - std::map vlog_manager_; - /* 记录正在 GC 的 vlog 集合 */ - std::set gc_vlog_set_; - /* 记录触发 GC 的过期阈值 */ - uint64_t expired_threshold_; - /* 记录当前活跃的 vlog 编号 */ - uint64_t cur_vlog_; -}; - -} // namespace vlog -} // namespace leveldb - -#endif // LEVELDB_VLOG_MANAGER_H diff --git a/db/vlog_reader.h b/db/vlog_reader.h deleted file mode 100644 index b4c2baa..0000000 --- a/db/vlog_reader.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef LEVELDB_VLOG_READER_H -#define LEVELDB_VLOG_READER_H - -#include -#include "leveldb/slice.h" -#include "leveldb/status.h" - -namespace leveldb { - -class RandomAccessFile; - -namespace vlog { - -class VlogInfo; -class VlogManager; - -class VlogReader { - public: - VlogReader(uint32_t vlog_no); - ~VlogReader() = default; - - /* 在 vlog_offset 处往后读取一条 record 的 value */ - Status Get(uint64_t vlog_offset, std::string* value); - - private: - VlogInfo* vlog_info_; - RandomAccessFile* vlog_; - - friend class VlogManager; -}; - -} // namespace vlog -} // namespace leveldb - -#endif // LEVELDB_VLOG_READER_H diff --git a/db/vlog_writer.h b/db/vlog_writer.h deleted file mode 100644 index afc07d7..0000000 --- a/db/vlog_writer.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef LEVELDB_VLOG_WRITER_H -#define LEVELDB_VLOG_WRITER_H - -#include -#include "leveldb/status.h" - -namespace leveldb { - -class WritableFile; - -namespace vlog { - -class VlogInfo; -class VlogManager; - -class VlogWriter { - public: - explicit VlogWriter(WritableFile* vlog); - ~VlogWriter(); - - /* 往 vlog 的写缓存写入一条 kv 记录 */ - Status AddRecord(const Slice& slice); - - private: - VlogWriter() = default; - - VlogInfo* vlog_info_; - WritableFile* vlog_; - - VlogWriter(const VlogWriter&); - VlogWriter& operator=(const VlogWriter&); - - friend class VlogManager; -}; - -} // namespace vlog -} // namespace leveldb - -#endif // LEVELDB_VLOG_WRITER_H