Newer
Older
#include <global/rpc/distributor.hpp>
using namespace std;
SimpleHashDistributor::SimpleHashDistributor(host_t localhost,
unsigned int hosts_size)
: localhost_(localhost), hosts_size_(hosts_size), all_hosts_(hosts_size) {
::iota(all_hosts_.begin(), all_hosts_.end(), 0);
host_t
SimpleHashDistributor::localhost() const {
host_t
SimpleHashDistributor::locate_data(const string& path,
const chunkid_t& chnk_id) const {
return str_hash(path + ::to_string(chnk_id)) % hosts_size_;
host_t
SimpleHashDistributor::locate_file_metadata(const string& path) const {
return str_hash(path) % hosts_size_;
}
::vector<host_t>
SimpleHashDistributor::locate_directory_metadata(const string& path) const {
LocalOnlyDistributor::LocalOnlyDistributor(host_t localhost)
: localhost_(localhost) {}
host_t
LocalOnlyDistributor::localhost() const {
host_t
LocalOnlyDistributor::locate_data(const string& path,
const chunkid_t& chnk_id) const {
host_t
LocalOnlyDistributor::locate_file_metadata(const string& path) const {
::vector<host_t>
LocalOnlyDistributor::locate_directory_metadata(const string& path) const {
ForwarderDistributor::ForwarderDistributor(host_t fwhost,
unsigned int hosts_size)
: fwd_host_(fwhost), hosts_size_(hosts_size), all_hosts_(hosts_size) {
::iota(all_hosts_.begin(), all_hosts_.end(), 0);
}
host_t
ForwarderDistributor::localhost() const {
host_t
ForwarderDistributor::locate_data(const std::string& path,
const chunkid_t& chnk_id) const {
host_t
ForwarderDistributor::locate_file_metadata(const std::string& path) const {
return str_hash(path) % hosts_size_;
}
std::vector<host_t>
ForwarderDistributor::locate_directory_metadata(const std::string& path) const {