Skip to content

Commit

Permalink
planner_multi: substitute map to track request counts
Browse files Browse the repository at this point in the history
  • Loading branch information
milroy committed Jan 13, 2024
1 parent d6240ab commit 2b886d1
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 6 deletions.
6 changes: 3 additions & 3 deletions resource/planner/c++/planner_multi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ planner_multi::planner_multi (int64_t base_time, uint64_t duration,
errno = ENOMEM;
throw std::runtime_error ("ERROR in strdup\n");
}
m_iter.counts.push_back (0);
m_iter.counts[type] = 0;
try {
p = new planner_t (base_time, duration,
resource_totals[i],
Expand Down Expand Up @@ -84,8 +84,8 @@ planner_multi::planner_multi (const planner_multi &o)
m_types_totals_planners.push_back ({iter.resource_type,
iter.resource_total, np});
}
m_span_lookup = o.m_span_lookup;
m_iter = o.m_iter;
m_span_lookup = o.m_span_lookup;
m_span_lookup_iter = o.m_span_lookup_iter;
m_span_counter = o.m_span_counter;
}
Expand Down Expand Up @@ -119,8 +119,8 @@ planner_multi &planner_multi::operator= (const planner_multi &o)
m_types_totals_planners.push_back ({iter.resource_type,
iter.resource_total, np});
}
m_span_lookup = o.m_span_lookup;
m_iter = o.m_iter;
m_span_lookup = o.m_span_lookup;
m_span_lookup_iter = o.m_span_lookup_iter;
m_span_counter = o.m_span_counter;

Expand Down
2 changes: 1 addition & 1 deletion resource/planner/c++/planner_multi.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
struct request_multi {
int64_t on_or_after = 0;
uint64_t duration = 0;
std::vector<int64_t> counts;
std::map<std::string, int64_t> counts;
};

struct planner_multi_meta {
Expand Down
7 changes: 5 additions & 2 deletions resource/planner/c/planner_multi_c_interface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ static void fill_iter_request (planner_multi_t *ctx, struct request_multi *iter,
iter->on_or_after = at;
iter->duration = duration;
for (i = 0; i < len; ++i)
iter->counts[i] = resources[i];
iter->counts[ctx->plan_multi->get_resource_type_at (i)] =
resources[i];
}

extern "C" planner_multi_t *planner_multi_new (
Expand Down Expand Up @@ -266,6 +267,7 @@ extern "C" int64_t planner_multi_avail_time_next (planner_multi_t *ctx)
size_t i = 0;
int unmet = 0;
int64_t t = -1;
std::string type;

if (!ctx) {
errno = EINVAL;
Expand All @@ -277,9 +279,10 @@ extern "C" int64_t planner_multi_avail_time_next (planner_multi_t *ctx)
ctx->plan_multi->get_planner_at (static_cast<size_t> (0)))) == -1)
break;
for (i = 1; i < ctx->plan_multi->get_planners_size (); ++i) {
type = ctx->plan_multi->get_resource_type_at (i);
if ((unmet = planner_avail_during (ctx->plan_multi->get_planner_at (i), t,
ctx->plan_multi->get_iter ().duration,
ctx->plan_multi->get_iter ().counts[i])) == -1)
ctx->plan_multi->get_iter ().counts.at (type))) == -1)
break;
}
} while (unmet);
Expand Down

0 comments on commit 2b886d1

Please sign in to comment.