A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
RoundRobinPolicy.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * *
3  * Copyright 2018 Rice University *
4  * *
5  * Licensed under the Apache License, Version 2.0 (the "License"); *
6  * you may not use this file except in compliance with the License. *
7  * You may obtain a copy of the License at *
8  * *
9  * http://www.apache.org/licenses/LICENSE-2.0 *
10  * *
11  * Unless required by applicable law or agreed to in writing, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
14  * See the License for the specific language governing permissions and *
15  * limitations under the License. *
16  * *
17  *****************************************************************************/
18 #ifndef OBJECTQUERYMODEL_ROUNDROBINPOLICY_H
19 #define OBJECTQUERYMODEL_ROUNDROBINPOLICY_H
20 
21 // created by Jia, Aug 2017
22 
23 
24 #include "PartitionPolicy.h"
25 #include <pthread.h>
26 
27 namespace pdb {
28 
30 typedef std::shared_ptr<RoundRobinPolicy> RoundRobinPolicyPtr;
31 
39 public:
42  static unsigned int curNodeId;
43  int numNodes = 0;
44  pthread_mutex_t idMutex;
46 
47  std::shared_ptr<std::unordered_map<NodeID, Handle<Vector<Handle<Object>>>>> partition(
48  Handle<Vector<Handle<Object>>> toPartition);
49 
50 
51 private:
52  std::vector<NodePartitionDataPtr> createNodePartitionData(
55  NodePartitionDataPtr oldNodeData);
58 };
59 }
60 
61 
62 #endif // OBJECTQUERYMODEL_ROUNDROBINPOLICY_H
std::shared_ptr< std::unordered_map< NodeID, Handle< Vector< Handle< Object > > > > > partition(Handle< Vector< Handle< Object >>> toPartition)
std::shared_ptr< RoundRobinPolicy > RoundRobinPolicyPtr
std::vector< NodePartitionDataPtr > createNodePartitionData(Handle< Vector< Handle< NodeDispatcherData >>> storageNodes)
static unsigned int curNodeId
std::shared_ptr< NodePartitionData > NodePartitionDataPtr
void updateStorageNodes(Handle< Vector< Handle< NodeDispatcherData >>> storageNodes)
NodePartitionDataPtr updateNewNode(NodePartitionDataPtr newNode)
std::vector< NodePartitionDataPtr > storageNodes
NodePartitionDataPtr handleDeadNode(NodePartitionDataPtr deadNode)
pthread_mutex_t idMutex
NodePartitionDataPtr updateExistingNode(NodePartitionDataPtr newNodeData, NodePartitionDataPtr oldNodeData)