namespace crimson::os::seastore::onode {
struct FLTreeOnode final : Onode, Value {
- static constexpr value_magic_t HEADER_MAGIC = value_magic_t::ONODE;
+ static constexpr tree_conf_t TREE_CONF = {
+ value_magic_t::ONODE
+ };
enum class status_t {
STABLE,
template <typename... T>
FLTreeOnode(T&&... args) : Value(std::forward<T>(args)...) {}
-
-
struct Recorder : public ValueDeltaRecorder {
Recorder(bufferlist &bl) : ValueDeltaRecorder(bl) {}
value_magic_t get_header_magic() const final {
- return value_magic_t::ONODE;
+ return TREE_CONF.value_magic;
}
void apply_value_delta(
{
std::unique_ptr<ValueDeltaRecorder> ret;
switch (magic) {
- case value_magic_t::TEST:
- ret = std::make_unique<TestValue::Recorder>(encoded);
- break;
case value_magic_t::ONODE:
ret = std::make_unique<FLTreeOnode::Recorder>(encoded);
break;
+ case value_magic_t::TEST:
+ ret = std::make_unique<TestValue::Recorder>(encoded);
+ break;
default:
ret = nullptr;
break;
// value size up to 64 KiB
using value_size_t = uint16_t;
enum class value_magic_t : uint8_t {
- TEST = 0x52,
- ONODE,
+ ONODE = 0x52,
+ TEST,
};
inline std::ostream& operator<<(std::ostream& os, const value_magic_t& magic) {
switch (magic) {
- case value_magic_t::TEST:
- return os << "TEST";
case value_magic_t::ONODE:
return os << "ONODE";
+ case value_magic_t::TEST:
+ return os << "TEST";
default:
return os << "UNKNOWN(" << magic << ")";
}
ceph::bufferlist& encoded;
};
+/**
+ * tree_conf_t
+ *
+ * Hard limits and compile-time configurations.
+ */
+struct tree_conf_t {
+ value_magic_t value_magic;
+};
+
class tree_cursor_t;
/**
* Value
template <typename ValueImpl>
struct ValueBuilderImpl final : public ValueBuilder {
value_magic_t get_header_magic() const {
- return ValueImpl::HEADER_MAGIC;
+ return ValueImpl::TREE_CONF.value_magic;
}
std::unique_ptr<ValueDeltaRecorder>
class TestValue final : public Value {
public:
- static constexpr auto HEADER_MAGIC = value_magic_t::TEST;
+ static constexpr tree_conf_t TREE_CONF = {
+ value_magic_t::TEST
+ };
+
using id_t = test_item_t::id_t;
using magic_t = test_item_t::magic_t;
struct magic_packed_t {
protected:
value_magic_t get_header_magic() const override {
- return HEADER_MAGIC;
+ return TREE_CONF.value_magic;
}
void apply_value_delta(ceph::bufferlist::const_iterator& delta,