Loading ifs/include/daemon/classes/metadata.hpp +3 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,9 @@ public: void update_ACM_time(bool a, bool c, bool m); std::string to_KVentry(); std::string to_KVentry() const; void serialize(std::string& s) const; //Getter and Setter time_t atime() const; Loading ifs/include/daemon/db/db_ops.hpp +3 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ bool db_is_dir_entry(const std::string& dir_path); bool db_update_metadentry(const std::string& old_key, const std::string& new_key, const std::string& val); bool db_update_metadentry_size(const std::string& key, size_t size, off64_t offset, bool append); void db_iterate_all_entries(); #endif //IFS_DB_OPS_HPP ifs/include/daemon/db/merge.hpp 0 → 100644 +69 −0 Original line number Diff line number Diff line #ifndef DB_MERGE_HPP #define DB_MERGE_HPP #include "rocksdb/merge_operator.h" #include <daemon/classes/metadata.hpp> namespace rdb = rocksdb; enum class OperandID: char { increase_size = 's', create = 'c' }; class MergeOperand { public: constexpr static char operand_id_suffix = ':'; std::string serialize() const; static OperandID get_id(const rdb::Slice& serialized_op); static rdb::Slice get_params(const rdb::Slice& serialized_op); protected: std::string serialize_id() const; virtual std::string serialize_params() const = 0; virtual const OperandID id() const = 0; }; class IncreaseSizeOperand: public MergeOperand { public: constexpr const static char separator = ','; constexpr const static char true_char = 't'; constexpr const static char false_char = 'f'; size_t size; bool append; IncreaseSizeOperand(const size_t size, const bool append); IncreaseSizeOperand(const rdb::Slice& serialized_op); const OperandID id() const override; std::string serialize_params() const override; }; class CreateOperand: public MergeOperand { public: std::string metadata; CreateOperand(const std::string& metadata); const OperandID id() const override; std::string serialize_params() const override; }; class MetadataMergeOperator: public rocksdb::MergeOperator { public: virtual ~MetadataMergeOperator(){}; bool FullMergeV2(const MergeOperationInput& merge_in, MergeOperationOutput* merge_out) const override; bool PartialMergeMulti(const rdb::Slice& key, const std::deque<rdb::Slice>& operand_list, std::string* new_value, rdb::Logger* logger) const override; const char* Name() const override; bool AllowSingleOperand() const override; }; #endif // DB_MERGE_HPP ifs/scripts/compile_dep.sh +1 −1 Original line number Diff line number Diff line Loading @@ -333,7 +333,7 @@ echo "############################################################ Installing: CURR=${SOURCE}/rocksdb cd ${CURR} make clean make -j${CORES} static_lib make USE_RTTI=1 -j${CORES} static_lib make INSTALL_PATH=${INSTALL} install echo "Done" ifs/src/daemon/CMakeLists.txt +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ set(DAEMON_SRC classes/metadata.cpp db/db_util.cpp db/db_ops.cpp db/merge.cpp handler/h_metadentry.cpp handler/h_data.cpp handler/h_preload.cpp Loading @@ -29,6 +30,7 @@ set(DAEMON_HEADERS ../../include/daemon/classes/rpc_data.hpp ../../include/daemon/db/db_ops.hpp ../../include/daemon/db/db_util.hpp ../../include/daemon/db/merge.hpp ../../include/daemon/handler/rpc_defs.hpp ) add_executable(adafs_daemon ${DAEMON_SRC} ${DAEMON_HEADERS}) Loading Loading
ifs/include/daemon/classes/metadata.hpp +3 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,9 @@ public: void update_ACM_time(bool a, bool c, bool m); std::string to_KVentry(); std::string to_KVentry() const; void serialize(std::string& s) const; //Getter and Setter time_t atime() const; Loading
ifs/include/daemon/db/db_ops.hpp +3 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ bool db_is_dir_entry(const std::string& dir_path); bool db_update_metadentry(const std::string& old_key, const std::string& new_key, const std::string& val); bool db_update_metadentry_size(const std::string& key, size_t size, off64_t offset, bool append); void db_iterate_all_entries(); #endif //IFS_DB_OPS_HPP
ifs/include/daemon/db/merge.hpp 0 → 100644 +69 −0 Original line number Diff line number Diff line #ifndef DB_MERGE_HPP #define DB_MERGE_HPP #include "rocksdb/merge_operator.h" #include <daemon/classes/metadata.hpp> namespace rdb = rocksdb; enum class OperandID: char { increase_size = 's', create = 'c' }; class MergeOperand { public: constexpr static char operand_id_suffix = ':'; std::string serialize() const; static OperandID get_id(const rdb::Slice& serialized_op); static rdb::Slice get_params(const rdb::Slice& serialized_op); protected: std::string serialize_id() const; virtual std::string serialize_params() const = 0; virtual const OperandID id() const = 0; }; class IncreaseSizeOperand: public MergeOperand { public: constexpr const static char separator = ','; constexpr const static char true_char = 't'; constexpr const static char false_char = 'f'; size_t size; bool append; IncreaseSizeOperand(const size_t size, const bool append); IncreaseSizeOperand(const rdb::Slice& serialized_op); const OperandID id() const override; std::string serialize_params() const override; }; class CreateOperand: public MergeOperand { public: std::string metadata; CreateOperand(const std::string& metadata); const OperandID id() const override; std::string serialize_params() const override; }; class MetadataMergeOperator: public rocksdb::MergeOperator { public: virtual ~MetadataMergeOperator(){}; bool FullMergeV2(const MergeOperationInput& merge_in, MergeOperationOutput* merge_out) const override; bool PartialMergeMulti(const rdb::Slice& key, const std::deque<rdb::Slice>& operand_list, std::string* new_value, rdb::Logger* logger) const override; const char* Name() const override; bool AllowSingleOperand() const override; }; #endif // DB_MERGE_HPP
ifs/scripts/compile_dep.sh +1 −1 Original line number Diff line number Diff line Loading @@ -333,7 +333,7 @@ echo "############################################################ Installing: CURR=${SOURCE}/rocksdb cd ${CURR} make clean make -j${CORES} static_lib make USE_RTTI=1 -j${CORES} static_lib make INSTALL_PATH=${INSTALL} install echo "Done"
ifs/src/daemon/CMakeLists.txt +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ set(DAEMON_SRC classes/metadata.cpp db/db_util.cpp db/db_ops.cpp db/merge.cpp handler/h_metadentry.cpp handler/h_data.cpp handler/h_preload.cpp Loading @@ -29,6 +30,7 @@ set(DAEMON_HEADERS ../../include/daemon/classes/rpc_data.hpp ../../include/daemon/db/db_ops.hpp ../../include/daemon/db/db_util.hpp ../../include/daemon/db/merge.hpp ../../include/daemon/handler/rpc_defs.hpp ) add_executable(adafs_daemon ${DAEMON_SRC} ${DAEMON_HEADERS}) Loading