#ifndef IFS_PRELOAD_CTX_HPP #define IFS_PRELOAD_CTX_HPP #include #include #include /* Forward declarations */ class OpenFileMap; struct FsConfig { // configurable metadata bool atime_state; bool mtime_state; bool ctime_state; bool uid_state; bool gid_state; bool inode_no_state; bool link_cnt_state; bool blocks_state; uid_t uid; gid_t gid; std::string rootdir; // rpc infos std::map hosts; std::map sys_hostfile; uint64_t host_id; // my host number size_t host_size; std::string rpc_port; }; class PreloadContext { private: PreloadContext(); std::shared_ptr log_; std::shared_ptr ofm_; std::shared_ptr fs_conf_; std::string mountdir_; public: static PreloadContext* getInstance() { static PreloadContext instance; return &instance; } PreloadContext(PreloadContext const&) = delete; void operator=(PreloadContext const&) = delete; void log(std::shared_ptr logger); std::shared_ptr log() const; void mountdir(const std::string& path); std::string mountdir() const; bool relativize_path(std::string& path) const; const std::shared_ptr& file_map() const; const std::shared_ptr& fs_conf() const; }; #endif //IFS_PRELOAD_CTX_HPP