Commit 11949718 authored by Marc Vef's avatar Marc Vef
Browse files

Added: Utilities for host address resultion. First cut on create rpc

parent f772de13
Loading
Loading
Loading
Loading
+25 −7
Original line number Diff line number Diff line
@@ -142,22 +142,38 @@ void FsData::inode_count(fuse_ino_t inode_count) {
    FsData::inode_count_ = inode_count;
}

const std::map<std::string, unsigned int>& FsData::hosts() const {
const std::map<uint64_t, std::string>& FsData::hosts() const {
    return hosts_;
}

void FsData::hosts(const std::map<std::string, unsigned int>& hosts) {
void FsData::hosts(const std::map<uint64_t, std::string>& hosts) {
    FsData::hosts_ = hosts;
}

const std::string& FsData::hostname() const {
    return hostname_;
const uint64_t& FsData::host_id() const {
    return host_id_;
}

unsigned long FsData::hostname(const std::string& hostname) {
    FsData::hostname_ = hostname;
    return hostname.size();
void FsData::host_id(const uint64_t& host_id) {
    FsData::host_id_ = host_id;
}

size_t FsData::host_size() const {
    return host_size_;
}

void FsData::host_size(size_t host_size) {
    FsData::host_size_ = host_size;
}

int FsData::rpc_port() const {
    return rpc_port_;
}

void FsData::rpc_port(int rpc_port) {
    FsData::rpc_port_ = rpc_port;
}

// Utility member functions

fuse_ino_t FsData::raise_inode_count(fuse_ino_t count) {
@@ -169,3 +185,5 @@ fuse_ino_t FsData::raise_inode_count(fuse_ino_t count) {




+16 −6
Original line number Diff line number Diff line
@@ -35,8 +35,10 @@ private:
    std::string mgmt_path_;

    // hosts_
    std::map<std::string, unsigned int> hosts_;
    std::string hostname_;
    std::map<uint64_t, std::string> hosts_;
    uint64_t host_id_; // my host number
    size_t host_size_;
    int rpc_port_;

    // rocksdb
    std::shared_ptr<rocksdb::DB> rdb_;
@@ -131,13 +133,21 @@ public:

    void rdb_write_options(const rocksdb::WriteOptions& rdb_write_options);

    const std::map<std::string, unsigned int>& hosts() const;
    const std::map<uint64_t, std::string>& hosts() const;

    void hosts(const std::map<std::string, unsigned int>& hosts);
    void hosts(const std::map<uint64_t, std::string>& hosts);

    const std::string& hostname() const;
    const uint64_t& host_id() const;

    unsigned long hostname(const std::string& hostname);
    void host_id(const uint64_t& host_id);

    size_t host_size() const;

    void host_size(size_t host_size);

    int rpc_port() const;

    void rpc_port(int rpc_port);

    // Utility member functions

+18 −1
Original line number Diff line number Diff line
@@ -61,7 +61,24 @@ void RPCData::rpc_minimal_id(hg_id_t rpc_minimal_id) {
    RPCData::rpc_minimal_id_ = rpc_minimal_id;
}

lru11::Cache<std::string, hg_addr_t>& RPCData::address_cache() {
lru11::Cache<uint64_t, hg_addr_t>& RPCData::address_cache() {
    return address_cache_;
}

// Utility functions

bool RPCData::get_addr_by_hostid(const uint64_t hostid, hg_addr_t& svr_addr) {
    if (address_cache_.tryGet(hostid, svr_addr)) {
        //found
        return true;
    } else {
        // not found, manual lookup and add address mapping to LRU cache
        auto hostname = ADAFS_DATA->hosts().at(hostid); // convert hostid to hostname
        margo_addr_lookup(RPC_DATA->client_mid(), hostname.c_str(), &svr_addr);
        if (svr_addr == HG_ADDR_NULL)
            return false;
        address_cache_.insert(hostid, svr_addr);
        return true;
    }
}
+6 −2
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ private:
    margo_instance_id server_mid_;
    margo_instance_id client_mid_;

    lru11::Cache<std::string, hg_addr_t> address_cache_{32768, 4096}; // XXX Set values are not based on anything...
    lru11::Cache<uint64_t, hg_addr_t> address_cache_{32768, 4096}; // XXX Set values are not based on anything...

    // TODO RPC client IDs
    // RPC client IDs
@@ -74,7 +74,11 @@ public:

    void rpc_minimal_id(hg_id_t rpc_minimal_id);

    lru11::Cache<std::string, hg_addr_t>& address_cache();
    lru11::Cache<uint64_t, hg_addr_t>& address_cache();

    // Utility functions

    bool get_addr_by_hostid(const uint64_t hostid, hg_addr_t& svr_addr);
};


+3 −0
Original line number Diff line number Diff line
@@ -19,4 +19,7 @@
// Write-ahead logging of rocksdb
//#define RDB_WOL

// RPC configuration
#define RPCPORT 4433

#endif //FS_CONFIGURE_H
Loading