20 #ifndef __CXXGRAPH_PARTITIONING_COORDINATEDRECORD_H__
21 #define __CXXGRAPH_PARTITIONING_COORDINATEDRECORD_H__
26 #include "Utility/Typedef.hpp"
30 namespace PARTITIONING
37 std::set<int> partitions = {};
38 std::mutex *lock =
nullptr;
45 std::set<int> &getPartitions();
46 void addPartition(
int m);
47 bool hasReplicaInPartition(
int m);
50 int getReplicas()
const;
52 void incrementDegree();
54 void addAll(std::set<int> &set);
60 lock =
new std::mutex();
64 CoordinatedRecord<T>::~CoordinatedRecord()
73 std::set<int> &CoordinatedRecord<T>::getPartitions()
78 void CoordinatedRecord<T>::addPartition(
int m)
82 std::cout <<
"ERROR! record.addPartition(-1)" << std::endl;
88 bool CoordinatedRecord<T>::hasReplicaInPartition(
int m)
90 return partitions.find(m) != partitions.end();
93 bool CoordinatedRecord<T>::getLock()
95 return lock->try_lock();
98 bool CoordinatedRecord<T>::releaseLock()
103 template <
typename T>
104 int CoordinatedRecord<T>::getReplicas()
const
106 return partitions.size();
108 template <
typename T>
109 int CoordinatedRecord<T>::getDegree()
113 template <
typename T>
114 void CoordinatedRecord<T>::incrementDegree()
118 template <
typename T>
119 void CoordinatedRecord<T>::addAll(std::set<int> &set)
121 partitions.insert(set.begin(), set.end());
123 template <
typename T>
124 std::set<int> CoordinatedRecord<T>::intersection(CoordinatedRecord &x, CoordinatedRecord &y)
126 std::set<int> result;
127 set_intersection(x.partitions.begin(), x.partitions.end(), y.partitions.begin(), y.partitions.end(),
128 std::inserter(result, result.begin()));
Definition: CoordinatedRecord.hpp:35
Definition: Record.hpp:31