Commit 942cac61 authored by Marc Vef's avatar Marc Vef
Browse files

Distributor into gkfs::rpc namespace

parent 7946ab25
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -26,9 +26,11 @@
/* Forward declarations */
class OpenFileMap;

class Distributor;

namespace gkfs {
namespace rpc {
class Distributor;
}
namespace log {
struct logger;
}
@@ -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_;
@@ -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;

+25 −19
Original line number Diff line number Diff line
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -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...");
+2 −2
Original line number Diff line number Diff line
@@ -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_;
}

+2 −2
Original line number Diff line number Diff line
@@ -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
@@ -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