return res;
}
+std::vector<Host*> Engine::get_filtered_hosts(std::function<bool(Host*)> filter)
+{
+ std::vector<Host*> hosts;
+ for (auto const& kv : pimpl->hosts_) {
+ if (filter(kv.second))
+ hosts.push_back(kv.second);
+ }
+
+ return hosts;
+}
+
void Engine::host_register(std::string name, simgrid::s4u::Host* host)
{
pimpl->hosts_[name] = host;
/** @brief Register a new netpoint to the system */
void Engine::netpoint_register(simgrid::kernel::routing::NetPoint* point)
{
- // simgrid::simix::kernelImmediate([&]{ FIXME: this segfaults in set_thread
+ // simgrid::simix::simcall([&]{ FIXME: this segfaults in set_thread
pimpl->netpoints_[point->get_name()] = point;
// });
}
/** @brief Unregister a given netpoint */
void Engine::netpoint_unregister(simgrid::kernel::routing::NetPoint* point)
{
- simgrid::simix::kernelImmediate([this, point] {
+ simgrid::simix::simcall([this, point] {
pimpl->netpoints_.erase(point->get_name());
delete point;
});