From 044dcf43defdd2c2cc9ca4a92e59666a34eca752 Mon Sep 17 00:00:00 2001 From: Asias He Date: Sat, 10 Oct 2015 15:14:19 +0800 Subject: [PATCH] locator: Add abstract_replication_strategy::get_address_ranges Needed by get_pending_address_ranges. --- locator/abstract_replication_strategy.cc | 12 ++++++++++++ locator/abstract_replication_strategy.hh | 2 ++ 2 files changed, 14 insertions(+) diff --git a/locator/abstract_replication_strategy.cc b/locator/abstract_replication_strategy.cc index 2d21631f51..bbcc4e9854 100644 --- a/locator/abstract_replication_strategy.cc +++ b/locator/abstract_replication_strategy.cc @@ -142,4 +142,16 @@ abstract_replication_strategy::get_primary_ranges(inet_address ep) { return ret; } +std::unordered_multimap> +abstract_replication_strategy::get_address_ranges(token_metadata& tm) const { + std::unordered_multimap> ret; + for (auto& t : tm.sorted_tokens()) { + range r = tm.get_primary_range_for(t); + for (auto ep : calculate_natural_endpoints(t, tm)) { + ret.emplace(ep, r); + } + } + return ret; +} + } // namespace locator diff --git a/locator/abstract_replication_strategy.hh b/locator/abstract_replication_strategy.hh index 75778975c3..fdd3aae79a 100644 --- a/locator/abstract_replication_strategy.hh +++ b/locator/abstract_replication_strategy.hh @@ -113,6 +113,8 @@ public: // StorageService.getPrimaryRangesForEndpoint(). std::vector> get_primary_ranges(inet_address ep); + std::unordered_multimap> get_address_ranges(token_metadata& tm) const; + }; }