quick test to make the the queue behaves

This commit is contained in:
Kurt Wilson 2023-05-22 11:07:45 -04:00
parent a151eeee02
commit 08b213858b
2 changed files with 24 additions and 8 deletions

View file

@ -95,6 +95,8 @@ public:
static size_t num_executables; static size_t num_executables;
int executable_id = 0; int executable_id = 0;
std::string name = "";
}; };
class PriorityExecutableComparator class PriorityExecutableComparator
@ -266,11 +268,12 @@ public:
priority_map[handle]->chain_id = chain_index; priority_map[handle]->chain_id = chain_index;
} }
void set_executable_deadline(std::shared_ptr<const void> handle, int period, ExecutableType t, int chain_id = 0) void set_executable_deadline(std::shared_ptr<const void> handle, int period, ExecutableType t, int chain_id = 0, std::string name = "")
{ {
// TODO: any sanity checks should go here // TODO: any sanity checks should go here
priority_map[handle] = std::make_shared<PriorityExecutable>(handle, period, t, DEADLINE); priority_map[handle] = std::make_shared<PriorityExecutable>(handle, period, t, DEADLINE);
priority_map[handle]->chain_id = chain_id; priority_map[handle]->chain_id = chain_id;
priority_map[handle]->name = name;
} }
int get_priority(std::shared_ptr<const void> executable) int get_priority(std::shared_ptr<const void> executable)

View file

@ -293,7 +293,8 @@ bool PriorityMemoryStrategy<>::collect_entities(const WeakNodeList &weak_nodes)
for (auto &weak_group : node->get_callback_groups()) for (auto &weak_group : node->get_callback_groups())
{ {
auto group = weak_group.lock(); auto group = weak_group.lock();
if (!group || !group->can_be_taken_from().load()) if (!group)
// if (!group || !group->can_be_taken_from().load())
{ {
continue; continue;
} }
@ -429,11 +430,21 @@ void PriorityMemoryStrategy<>::get_next_executable(
const PriorityExecutable *next_exec = nullptr; const PriorityExecutable *next_exec = nullptr;
// std::cout << "all_executables_.size():" << all_executables_.size() << std::endl; // std::cout << "all_executables_.size():" << all_executables_.size() << std::endl;
// print all_executables_ // log contents of all_executables_
// for (auto exec : all_executables_) // std::cout << exec->name << ": " << exec->handle << " : " << exec->sched_type << std::endl;
// { std::ostringstream oss;
// std::cout << exec << ": " << exec->handle << " : " << exec->sched_type << std::endl; oss << "{\"operation\":\"get_next_executable\"";
// } // output names and handles of all_executables_ in json array
oss << ",\"all_executables\":[";
for (auto exec : all_executables_)
{
// if (exec->can_be_run)
oss << "{\"name\":\"" << exec->name << "\", \"sched_type\":\"" << exec->sched_type << "\", \"can_be_run\":\"" << exec->can_be_run << "\"},";
}
// remove trailing comma
oss.seekp(-1, oss.cur);
oss << "]}";
log_entry(logger_, oss.str());
// while (!all_executables_.empty()) // while (!all_executables_.empty())
for (auto exec : all_executables_) for (auto exec : all_executables_)
@ -596,7 +607,9 @@ void PriorityMemoryStrategy<>::get_next_executable(
} }
// returning with an executable // returning with an executable
// remove from all_executables_ map // remove from all_executables_ map
all_executables_.erase(exec); all_executables_.erase(next_exec);
std::ostringstream oss;
oss << "{\"operation\": \"select_task\", \"task\": \"" << exec->name << "\"}";
return; return;
} }
} }