18 #ifndef OBJECTQUERYMODEL_RANDOMPOLICY_CC
19 #define OBJECTQUERYMODEL_RANDOMPOLICY_CC
27 this->
storageNodes = std::vector<NodePartitionDataPtr>();
40 for (
int i = 0; i < activeStorageNodes.size(); i++) {
41 bool alreadyContains =
false;
42 for (
int j = 0; j < oldNodes.size(); j++) {
43 if ((*activeStorageNodes[i]) == (*oldNodes[j])) {
47 oldNodes.erase(oldNodes.begin() + j);
48 alreadyContains =
true;
52 if (!alreadyContains) {
56 for (
auto oldNode : oldNodes) {
63 std::vector<NodePartitionDataPtr> newData = std::vector<NodePartitionDataPtr>();
65 auto nodeData = (*storageNodes)[i];
67 std::make_shared<NodePartitionData>(nodeData->getNodeId(),
69 nodeData->getAddress(),
70 std::pair<std::string, std::string>(
"",
""));
71 PDB_COUT << newNode->toString() << std::endl;
72 newData.push_back(newNode);
79 PDB_COUT <<
"Updating existing node " << newNode->toString() << std::endl;
84 PDB_COUT <<
"Updating new node " << newNode->toString() << std::endl;
89 PDB_COUT <<
"Deleting node " << deadNode->toString() << std::endl;
96 auto partitionedData =
97 std::make_shared<std::unordered_map<NodeID, Handle<Vector<Handle<Object>>>>>();
100 <<
"FATAL ERROR: there is no storage node in the cluster, please check conf/serverlist"
106 partitionedData->insert(
108 return partitionedData;
NodePartitionDataPtr handleDeadNode(NodePartitionDataPtr deadNode)
void updateStorageNodes(Handle< Vector< Handle< NodeDispatcherData >>> storageNodes)
std::shared_ptr< NodePartitionData > NodePartitionDataPtr
NodePartitionDataPtr updateNewNode(NodePartitionDataPtr newNode)
NodePartitionDataPtr updateExistingNode(NodePartitionDataPtr newNodeData, NodePartitionDataPtr oldNodeData)
std::vector< NodePartitionDataPtr > storageNodes
std::vector< NodePartitionDataPtr > createNodePartitionData(Handle< Vector< Handle< NodeDispatcherData >>> storageNodes)
std::shared_ptr< std::unordered_map< NodeID, Handle< Vector< Handle< Object > > > > > partition(Handle< Vector< Handle< Object >>> toPartition)