void redis_reshard::copy_slots(acl::redis_node& from, acl::redis_node& to) { const std::vector<std::pair<size_t, size_t> >& slots = from.get_slots(); std::vector<std::pair<size_t, size_t> >::const_iterator cit; for (cit = slots.begin(); cit != slots.end(); ++cit) to.add_slot_range(cit->first, cit->second); }
bool redis_builder::master_set_slots(acl::redis& redis, acl::redis_node& master) { const std::vector<std::pair<size_t, size_t> >& slots = master.get_slots(); if (slots.size() != 1) { printf("%s: invalid slots's size: %d, addr: %s\r\n", __FUNCTION__, (int) slots.size(), master.get_addr()); return false; } const std::pair<size_t, size_t> slot = slots[0]; size_t min_slot = slot.first, max_slot = slot.second; size_t n = max_slot - min_slot + 1; int *slot_array = (int*) malloc(sizeof(int) * n); for (size_t i = 0; i < n; i++) { slot_array[i] = (int)min_slot; min_slot++; } if (redis.cluster_addslots(slot_array, n) == false) { printf("%s: addslots error: %s, addr: %s, slots: %d, %d\r\n", __FUNCTION__, redis.result_error(), master.get_addr(), (int) min_slot, (int) max_slot); return false; } return true; }
void redis_reshard::show_slots(const acl::redis_node& node) { const std::vector<std::pair<size_t, size_t> > slots = node.get_slots(); std::vector<std::pair<size_t, size_t> >::const_iterator cit; for (cit = slots.begin(); cit != slots.end(); ++cit) printf("slots: %d - %d\r\n", (int) cit->first, (int) cit->second); }