24 #include <navgraph/constraints/timed_reservation_list_edge_constraint.h>
45 : NavGraphEdgeConstraint(name)
61 std::vector<std::pair<fawkes::NavGraphEdge, fawkes::Time>> edge_time_list)
66 constraint_name_ = name;
67 edge_time_list_ = edge_time_list;
79 std::vector<std::pair<NavGraphEdge, fawkes::Time>> erase_list;
80 for (
const std::pair<NavGraphEdge, fawkes::Time> &ec : edge_time_list_) {
81 if (now > ec.second) {
82 erase_list.push_back(ec);
85 for (
const std::pair<NavGraphEdge, fawkes::Time> &ec : erase_list) {
86 edge_time_list_.erase(std::remove(edge_time_list_.begin(), edge_time_list_.end(), ec),
87 edge_time_list_.end());
89 logger_->log_info(
"TimedEdgeConstraint",
90 "Deleted edge '%s_%s' from '%s' because it validity duration ran out",
91 ec.first.from().c_str(),
92 ec.first.to().c_str(),
114 if (valid_time < now) {
116 "Constraint '%s' received node with old reservation time='%f' - now='%f'",
123 edge_time_list_.push_back(std::make_pair(edge, valid_time));
124 std::string txt = edge.
from();
135 const std::vector<std::pair<fawkes::NavGraphEdge, fawkes::Time>> &edges)
137 std::string txt =
"{";
138 for (
const std::pair<NavGraphEdge, fawkes::Time> &ec : edges) {
140 txt += ec.first.from();
142 txt += ec.first.to();
145 txt.erase(txt.length() - 1, 1);
155 std::vector<std::pair<NavGraphEdge, fawkes::Time>>::iterator ec =
156 std::find_if(edge_time_list_.begin(),
157 edge_time_list_.end(),
158 [&edge](
const std::pair<fawkes::NavGraphEdge, fawkes::Time> &p) {
159 return p.first == edge;
162 if (ec != edge_time_list_.end()) {
164 edge_time_list_.erase(ec);
175 return (std::find_if(edge_time_list_.begin(),
176 edge_time_list_.end(),
177 [&edge](
const std::pair<fawkes::NavGraphEdge, fawkes::Time> &p) {
178 return p.first == edge;
180 != edge_time_list_.end());
187 for (
const std::pair<fawkes::NavGraphEdge, fawkes::Time> &te : edge_time_list_) {
188 if (((te.first.from() == from.name()) && (te.first.to() == to.name()))
189 || ((te.first.to() == from.name()) && (te.first.from() == to.name()))) {
199 const std::vector<std::pair<fawkes::NavGraphEdge, fawkes::Time>> &
202 return edge_time_list_;
209 if (!edge_time_list_.empty()) {
211 edge_time_list_.clear();