Loading include/daemon/classes/rpc_data.hpp +13 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,13 @@ #include <daemon/daemon.hpp> namespace gkfs { /* Forward declarations */ namespace rpc { class Distributor; } namespace daemon { class RPCData { Loading @@ -32,6 +39,8 @@ private: ABT_pool io_pool_; std::vector<ABT_xstream> io_streams_; std::string self_addr_str_; // Distributor std::shared_ptr<gkfs::rpc::Distributor> distributor_; public: Loading Loading @@ -62,6 +71,9 @@ public: void self_addr_str(const std::string& addr_str); const std::shared_ptr<gkfs::rpc::Distributor>& distributor() const; void distributor(const std::shared_ptr<gkfs::rpc::Distributor>& distributor); }; } // namespace daemon Loading include/daemon/daemon.hpp +1 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ extern "C" { #include <daemon/classes/fs_data.hpp> #include <daemon/classes/rpc_data.hpp> #include <global/rpc/distributor.hpp> #define GKFS_DATA (static_cast<gkfs::daemon::FsData*>(gkfs::daemon::FsData::getInstance())) #define RPC_DATA (static_cast<gkfs::daemon::RPCData*>(gkfs::daemon::RPCData::getInstance())) Loading include/global/rpc/distributor.hpp +18 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <numeric> #include <unordered_map> #include <fstream> #include <boost/icl/interval_map.hpp> namespace gkfs { namespace rpc { Loading @@ -33,6 +34,8 @@ public: virtual host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const = 0; virtual host_t locate_data(const std::string& path, const chunkid_t& chnk_id, unsigned int hosts_size) = 0; virtual host_t locate_file_metadata(const std::string& path) const = 0; virtual std::vector<host_t> locate_directory_metadata(const std::string& path) const = 0; Loading @@ -42,16 +45,21 @@ public: class SimpleHashDistributor : public Distributor { private: host_t localhost_; unsigned int hosts_size_; unsigned int hosts_size_{0}; std::vector<host_t> all_hosts_; std::hash<std::string> str_hash; public: SimpleHashDistributor(); SimpleHashDistributor(host_t localhost, unsigned int hosts_size); host_t localhost() const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id, unsigned int host_size); host_t locate_file_metadata(const std::string& path) const override; std::vector<host_t> locate_directory_metadata(const std::string& path) const override; Loading Loading @@ -93,17 +101,22 @@ public: class GuidedDistributor : public Distributor { private: host_t localhost_; unsigned int hosts_size_; unsigned int hosts_size_{0}; std::vector<host_t> all_hosts_; std::hash<std::string> str_hash; std::unordered_map< std::string, host_t > mapping; std::unordered_map< std::string, boost::icl::interval_map <chunkid_t, unsigned int > > map_interval; bool init_guided(); public: GuidedDistributor(); GuidedDistributor(host_t localhost, unsigned int hosts_size); host_t localhost() const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id, unsigned int host_size); host_t locate_file_metadata(const std::string& path) const override; std::vector<host_t> locate_directory_metadata(const std::string& path) const override; Loading src/client/preload_util.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -320,7 +320,7 @@ vector<pair<string, string>> read_hosts_file() { } LOG(INFO, "Hosts pool size: {}", hosts.size()); sort(hosts.begin(),hosts.end()); // Sort hosts by alphanumerical value. return hosts; } Loading src/daemon/classes/rpc_data.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -53,5 +53,14 @@ void RPCData::self_addr_str(const std::string& addr_str) { self_addr_str_ = addr_str; } const std::shared_ptr<gkfs::rpc::Distributor>& RPCData::distributor() const { return distributor_; } void RPCData::distributor(const std::shared_ptr<gkfs::rpc::Distributor>& distributor) { distributor_ = distributor; } } // namespace daemon } // namespace gkfs Loading
include/daemon/classes/rpc_data.hpp +13 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,13 @@ #include <daemon/daemon.hpp> namespace gkfs { /* Forward declarations */ namespace rpc { class Distributor; } namespace daemon { class RPCData { Loading @@ -32,6 +39,8 @@ private: ABT_pool io_pool_; std::vector<ABT_xstream> io_streams_; std::string self_addr_str_; // Distributor std::shared_ptr<gkfs::rpc::Distributor> distributor_; public: Loading Loading @@ -62,6 +71,9 @@ public: void self_addr_str(const std::string& addr_str); const std::shared_ptr<gkfs::rpc::Distributor>& distributor() const; void distributor(const std::shared_ptr<gkfs::rpc::Distributor>& distributor); }; } // namespace daemon Loading
include/daemon/daemon.hpp +1 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ extern "C" { #include <daemon/classes/fs_data.hpp> #include <daemon/classes/rpc_data.hpp> #include <global/rpc/distributor.hpp> #define GKFS_DATA (static_cast<gkfs::daemon::FsData*>(gkfs::daemon::FsData::getInstance())) #define RPC_DATA (static_cast<gkfs::daemon::RPCData*>(gkfs::daemon::RPCData::getInstance())) Loading
include/global/rpc/distributor.hpp +18 −5 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <numeric> #include <unordered_map> #include <fstream> #include <boost/icl/interval_map.hpp> namespace gkfs { namespace rpc { Loading @@ -33,6 +34,8 @@ public: virtual host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const = 0; virtual host_t locate_data(const std::string& path, const chunkid_t& chnk_id, unsigned int hosts_size) = 0; virtual host_t locate_file_metadata(const std::string& path) const = 0; virtual std::vector<host_t> locate_directory_metadata(const std::string& path) const = 0; Loading @@ -42,16 +45,21 @@ public: class SimpleHashDistributor : public Distributor { private: host_t localhost_; unsigned int hosts_size_; unsigned int hosts_size_{0}; std::vector<host_t> all_hosts_; std::hash<std::string> str_hash; public: SimpleHashDistributor(); SimpleHashDistributor(host_t localhost, unsigned int hosts_size); host_t localhost() const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id, unsigned int host_size); host_t locate_file_metadata(const std::string& path) const override; std::vector<host_t> locate_directory_metadata(const std::string& path) const override; Loading Loading @@ -93,17 +101,22 @@ public: class GuidedDistributor : public Distributor { private: host_t localhost_; unsigned int hosts_size_; unsigned int hosts_size_{0}; std::vector<host_t> all_hosts_; std::hash<std::string> str_hash; std::unordered_map< std::string, host_t > mapping; std::unordered_map< std::string, boost::icl::interval_map <chunkid_t, unsigned int > > map_interval; bool init_guided(); public: GuidedDistributor(); GuidedDistributor(host_t localhost, unsigned int hosts_size); host_t localhost() const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id) const override; host_t locate_data(const std::string& path, const chunkid_t& chnk_id, unsigned int host_size); host_t locate_file_metadata(const std::string& path) const override; std::vector<host_t> locate_directory_metadata(const std::string& path) const override; Loading
src/client/preload_util.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -320,7 +320,7 @@ vector<pair<string, string>> read_hosts_file() { } LOG(INFO, "Hosts pool size: {}", hosts.size()); sort(hosts.begin(),hosts.end()); // Sort hosts by alphanumerical value. return hosts; } Loading
src/daemon/classes/rpc_data.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -53,5 +53,14 @@ void RPCData::self_addr_str(const std::string& addr_str) { self_addr_str_ = addr_str; } const std::shared_ptr<gkfs::rpc::Distributor>& RPCData::distributor() const { return distributor_; } void RPCData::distributor(const std::shared_ptr<gkfs::rpc::Distributor>& distributor) { distributor_ = distributor; } } // namespace daemon } // namespace gkfs