Goddess of Justice DB, the database used for storage on IzaroDFS
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

52 行
1.3 KiB

#pragma once
#include "endian.hpp"
#include "database.hpp"
enum class db_op : uint32_t {
version = 0,
read = 1,
write = 2,
remove = 3,
stats = 4,
sread = 5,
swrite = 6,
sallocate = 7,
sremove = 3,
confirm = 8,
bulk_write = 9
};
struct [[gnu::packed]] received_data {
bitops::regulated<db_op> op = db_op::version;
bitops::regulated<uint64_t> rep_id = 0;
record_identifier identifier = record_identifier{};
db_page page = {0};
};
struct [[gnu::packed]] received_bulk_data {
bitops::regulated<db_op> op = db_op::version;
bitops::regulated<uint64_t> rep_id = 0;
std::array<record_identifier, 4096/sizeof(record_identifier)> identifiers;
std::array<db_page, 4096/sizeof(record_identifier)> page;
};
struct [[gnu::packed]] sending_data {
bitops::regulated<uint64_t> rep_id = 0;
record identifier = record{};
db_page page = {0};
};
struct [[gnu::packed]] stats_data {
bitops::regulated<uint64_t> free;
bitops::regulated<uint64_t> free_deleted;
bitops::regulated<uint64_t> total_pages;
bitops::regulated<uint64_t> total_records;
bitops::regulated<uint64_t> total_delete;
bitops::regulated<uint64_t> cow_full;
bitops::regulated<uint64_t> free_records;
bitops::regulated<uint64_t> sync_rate_µs;
bitops::regulated<uint64_t> sync_duration_µs;
bitops::regulated<uint64_t> max_sync_duration_µs;
bitops::regulated<uint64_t> avg_sync_duration_µs;
};