Loading include/client/preload_context.hpp +9 −7 Original line number Diff line number Diff line Loading @@ -26,9 +26,11 @@ /* Forward declarations */ class OpenFileMap; class Distributor; namespace gkfs { namespace rpc { class Distributor; } namespace log { struct logger; } Loading Loading @@ -65,7 +67,7 @@ private: PreloadContext(); std::shared_ptr<OpenFileMap> ofm_; std::shared_ptr<Distributor> distributor_; std::shared_ptr<gkfs::rpc::Distributor> distributor_; std::shared_ptr<FsConfig> fs_conf_; std::string cwd_; Loading Loading @@ -124,9 +126,9 @@ public: const std::shared_ptr<OpenFileMap>& file_map() const; void distributor(std::shared_ptr<Distributor> distributor); void distributor(std::shared_ptr<gkfs::rpc::Distributor> distributor); std::shared_ptr<Distributor> distributor() const; std::shared_ptr<gkfs::rpc::Distributor> distributor() const; const std::shared_ptr<FsConfig>& fs_conf() const; Loading include/global/rpc/distributor.hpp +25 −19 Original line number Diff line number Diff line Loading @@ -18,52 +18,58 @@ #include <string> #include <numeric> using ChunkID = unsigned int; using Host = unsigned int; namespace gkfs { namespace rpc { using chunkid_t = unsigned int; using host_t = unsigned int; class Distributor { public: virtual Host localhost() const = 0; virtual host_t localhost() const = 0; virtual Host locate_data(const std::string& path, const ChunkID& chnk_id) const = 0; virtual host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const = 0; virtual Host locate_file_metadata(const std::string& path) const = 0; virtual host_t locate_file_metadata(const std::string& path) const = 0; virtual std::vector<Host> locate_directory_metadata(const std::string& path) const = 0; virtual std::vector<host_t> locate_directory_metadata(const std::string& path) const = 0; }; class SimpleHashDistributor : public Distributor { private: Host localhost_; host_t localhost_; unsigned int hosts_size_; std::vector<Host> all_hosts_; std::vector<host_t> all_hosts_; std::hash<std::string> str_hash; public: SimpleHashDistributor(Host localhost, unsigned int hosts_size); SimpleHashDistributor(host_t localhost, unsigned int hosts_size); Host localhost() const override; host_t localhost() const override; Host locate_data(const std::string& path, const ChunkID& chnk_id) const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const override; Host locate_file_metadata(const std::string& path) const override; host_t locate_file_metadata(const std::string& path) const override; std::vector<Host> locate_directory_metadata(const std::string& path) const override; std::vector<host_t> locate_directory_metadata(const std::string& path) const override; }; class LocalOnlyDistributor : public Distributor { private: Host localhost_; host_t localhost_; public: explicit LocalOnlyDistributor(Host localhost); explicit LocalOnlyDistributor(host_t localhost); Host localhost() const override; host_t localhost() const override; Host locate_data(const std::string& path, const ChunkID& chnk_id) const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const override; Host locate_file_metadata(const std::string& path) const override; host_t locate_file_metadata(const std::string& path) const override; std::vector<Host> locate_directory_metadata(const std::string& path) const override; std::vector<host_t> locate_directory_metadata(const std::string& path) const override; }; } // namespace rpc } // namespace gkfs #endif //GEKKOFS_RPC_LOCATOR_HPP src/client/preload.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,8 @@ void init_ld_environment_() { } /* Setup distributor */ auto simple_hash_dist = std::make_shared<SimpleHashDistributor>(CTX->local_host_id(), CTX->hosts().size()); auto simple_hash_dist = std::make_shared<gkfs::rpc::SimpleHashDistributor>(CTX->local_host_id(), CTX->hosts().size()); CTX->distributor(simple_hash_dist); LOG(INFO, "Retrieving file system configuration..."); Loading src/client/preload_context.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -191,11 +191,11 @@ const std::shared_ptr<OpenFileMap>& PreloadContext::file_map() const { return ofm_; } void PreloadContext::distributor(std::shared_ptr<Distributor> d) { void PreloadContext::distributor(std::shared_ptr<gkfs::rpc::Distributor> d) { distributor_ = d; } std::shared_ptr<Distributor> PreloadContext::distributor() const { std::shared_ptr<gkfs::rpc::Distributor> PreloadContext::distributor() const { return distributor_; } Loading src/daemon/handler/srv_data.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ static hg_return_t rpc_srv_write(hg_handle_t handle) { } auto const host_id = in.host_id; auto const host_size = in.host_size; SimpleHashDistributor distributor(host_id, host_size); gkfs::rpc::SimpleHashDistributor distributor(host_id, host_size); auto path = make_shared<string>(in.path); // chnk_ids used by this host Loading Loading @@ -369,7 +369,7 @@ static hg_return_t rpc_srv_read(hg_handle_t handle) { } auto const host_id = in.host_id; auto const host_size = in.host_size; SimpleHashDistributor distributor(host_id, host_size); gkfs::rpc::SimpleHashDistributor distributor(host_id, host_size); auto path = make_shared<string>(in.path); // chnk_ids used by this host Loading Loading
include/client/preload_context.hpp +9 −7 Original line number Diff line number Diff line Loading @@ -26,9 +26,11 @@ /* Forward declarations */ class OpenFileMap; class Distributor; namespace gkfs { namespace rpc { class Distributor; } namespace log { struct logger; } Loading Loading @@ -65,7 +67,7 @@ private: PreloadContext(); std::shared_ptr<OpenFileMap> ofm_; std::shared_ptr<Distributor> distributor_; std::shared_ptr<gkfs::rpc::Distributor> distributor_; std::shared_ptr<FsConfig> fs_conf_; std::string cwd_; Loading Loading @@ -124,9 +126,9 @@ public: const std::shared_ptr<OpenFileMap>& file_map() const; void distributor(std::shared_ptr<Distributor> distributor); void distributor(std::shared_ptr<gkfs::rpc::Distributor> distributor); std::shared_ptr<Distributor> distributor() const; std::shared_ptr<gkfs::rpc::Distributor> distributor() const; const std::shared_ptr<FsConfig>& fs_conf() const; Loading
include/global/rpc/distributor.hpp +25 −19 Original line number Diff line number Diff line Loading @@ -18,52 +18,58 @@ #include <string> #include <numeric> using ChunkID = unsigned int; using Host = unsigned int; namespace gkfs { namespace rpc { using chunkid_t = unsigned int; using host_t = unsigned int; class Distributor { public: virtual Host localhost() const = 0; virtual host_t localhost() const = 0; virtual Host locate_data(const std::string& path, const ChunkID& chnk_id) const = 0; virtual host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const = 0; virtual Host locate_file_metadata(const std::string& path) const = 0; virtual host_t locate_file_metadata(const std::string& path) const = 0; virtual std::vector<Host> locate_directory_metadata(const std::string& path) const = 0; virtual std::vector<host_t> locate_directory_metadata(const std::string& path) const = 0; }; class SimpleHashDistributor : public Distributor { private: Host localhost_; host_t localhost_; unsigned int hosts_size_; std::vector<Host> all_hosts_; std::vector<host_t> all_hosts_; std::hash<std::string> str_hash; public: SimpleHashDistributor(Host localhost, unsigned int hosts_size); SimpleHashDistributor(host_t localhost, unsigned int hosts_size); Host localhost() const override; host_t localhost() const override; Host locate_data(const std::string& path, const ChunkID& chnk_id) const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const override; Host locate_file_metadata(const std::string& path) const override; host_t locate_file_metadata(const std::string& path) const override; std::vector<Host> locate_directory_metadata(const std::string& path) const override; std::vector<host_t> locate_directory_metadata(const std::string& path) const override; }; class LocalOnlyDistributor : public Distributor { private: Host localhost_; host_t localhost_; public: explicit LocalOnlyDistributor(Host localhost); explicit LocalOnlyDistributor(host_t localhost); Host localhost() const override; host_t localhost() const override; Host locate_data(const std::string& path, const ChunkID& chnk_id) const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const override; Host locate_file_metadata(const std::string& path) const override; host_t locate_file_metadata(const std::string& path) const override; std::vector<Host> locate_directory_metadata(const std::string& path) const override; std::vector<host_t> locate_directory_metadata(const std::string& path) const override; }; } // namespace rpc } // namespace gkfs #endif //GEKKOFS_RPC_LOCATOR_HPP
src/client/preload.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,8 @@ void init_ld_environment_() { } /* Setup distributor */ auto simple_hash_dist = std::make_shared<SimpleHashDistributor>(CTX->local_host_id(), CTX->hosts().size()); auto simple_hash_dist = std::make_shared<gkfs::rpc::SimpleHashDistributor>(CTX->local_host_id(), CTX->hosts().size()); CTX->distributor(simple_hash_dist); LOG(INFO, "Retrieving file system configuration..."); Loading
src/client/preload_context.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -191,11 +191,11 @@ const std::shared_ptr<OpenFileMap>& PreloadContext::file_map() const { return ofm_; } void PreloadContext::distributor(std::shared_ptr<Distributor> d) { void PreloadContext::distributor(std::shared_ptr<gkfs::rpc::Distributor> d) { distributor_ = d; } std::shared_ptr<Distributor> PreloadContext::distributor() const { std::shared_ptr<gkfs::rpc::Distributor> PreloadContext::distributor() const { return distributor_; } Loading
src/daemon/handler/srv_data.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ static hg_return_t rpc_srv_write(hg_handle_t handle) { } auto const host_id = in.host_id; auto const host_size = in.host_size; SimpleHashDistributor distributor(host_id, host_size); gkfs::rpc::SimpleHashDistributor distributor(host_id, host_size); auto path = make_shared<string>(in.path); // chnk_ids used by this host Loading Loading @@ -369,7 +369,7 @@ static hg_return_t rpc_srv_read(hg_handle_t handle) { } auto const host_id = in.host_id; auto const host_size = in.host_size; SimpleHashDistributor distributor(host_id, host_size); gkfs::rpc::SimpleHashDistributor distributor(host_id, host_size); auto path = make_shared<string>(in.path); // chnk_ids used by this host Loading