33 #include <RobotComponents/interface/components/MotionPlanning/Tasks/RRTConnect/DataStructures.h>
49 ((
workerId >= 0) && (
static_cast<std::size_t
>(
workerId) < u.dependetOnUpdateIds.size())) ?
50 u.dependetOnUpdateIds.at(
workerId) + 1 :
72 if (appliedUpdateIds.size() < count)
74 appliedUpdateIds.resize(count, -1);
80 void setTrees(
const std::vector<std::reference_wrapper<Tree>>& newTrees)
92 return pendingUpdateLookupTable.find(
id) != pendingUpdateLookupTable.end();
102 return pendingUpdates.at(
id);
108 template<
class LockType,
class RemoteUpdateGetter>
114 template<
class LockType,
class RemoteUpdateGetter,
class UpdateConsumer>
115 void applyPendingUpdates(LockType&& lock, RemoteUpdateGetter getRemoteUpdate, UpdateConsumer updateConsumer)
121 for (; i < pendingUpdates.size(); ++i)
134 template<
class LockType,
class RemoteUpdateGetter,
class UpdateConsumer>
135 void applyPendingUpdate(Update& u, LockType&& lock, RemoteUpdateGetter getRemoteUpdate, UpdateConsumer updateConsumer)
140 if (u.dependetOnUpdateIds.empty())
159 prepareUpdate(u.dependetOnUpdateIds, lock, getRemoteUpdate, updateConsumer);
166 updateConsumer(std::move(u));
168 u.dependetOnUpdateIds.clear();
171 template<
class LockType,
class RemoteUpdateGetter,
class UpdateConsumer>
173 Ice::LongSeq dependetOnUpdateIds,
175 RemoteUpdateGetter getRemoteUpdate,
176 UpdateConsumer updateConsumer
181 for (
Ice::Long workerNodeId = 0;
static_cast<std::size_t
>(workerNodeId) < dependetOnUpdateIds.size(); ++workerNodeId)
183 const auto updateSubId = dependetOnUpdateIds.at(workerNodeId);
187 workerNodeId, updateSubId
208 Update
update = getRemoteUpdate(workerNodeId, updateSubId);
216 updateConsumer(std::move(
update));
218 update.dependetOnUpdateIds.clear();
226 return (this->workerId == workerId) || ((
static_cast<std::size_t
>(workerId) < appliedUpdateIds.size()) ?
227 updateSubId <= appliedUpdateIds.at(workerId) :
false);
239 return appliedUpdateIds;
243 std::vector<std::reference_wrapper<Tree>> trees;
245 std::deque<Update> pendingUpdates;
246 std::map<UpdateId, std::size_t> pendingUpdateLookupTable;
248 std::vector<Ice::Long> appliedUpdateIds;