| 15 | } |
| 16 | |
| 17 | std::vector<Node> Postmaster::partitionServerKeyRange( |
| 18 | const std::vector<Node>& nodes, Range<Key> range) { |
| 19 | int num_servers = 0; |
| 20 | auto ret = nodes; |
| 21 | for (const auto& o : ret) { |
| 22 | if (o.role() == Node::SERVER) ++ num_servers; |
| 23 | } |
| 24 | int s = 0; |
| 25 | for (auto& o : ret) { |
| 26 | auto key = o.role() != Node::SERVER ? range : |
| 27 | range.evenDivide(num_servers, s++); |
| 28 | key.to(o.mutable_key()); |
| 29 | } |
| 30 | return ret; |
| 31 | } |
| 32 | |
| 33 | std::vector<Node> Postmaster::assignNodeRank(const std::vector<Node>& nodes) { |
| 34 | int server_r = 0; |
nothing calls this directly
no test coverage detected