Engine *Engine::instance_ = nullptr; /* That singleton is awful, but I don't see no other solution right now. */
-
Engine::Engine(int *argc, char **argv) {
xbt_assert(s4u::Engine::instance_ == nullptr, "It is currently forbidden to create more than one instance of s4u::Engine");
TRACE_global_init();
{
return pimpl->hosts_.size();
}
-/** @brief Fills the passed list with all hosts found in the platform */
-void Engine::getHostList(std::vector<Host*>* list)
+/** @brief Fills the passed list with all hosts found in the platform
+ * @deprecated Please prefer Engine::getAllHosts()
+ */
+void XBT_ATTRIB_DEPRECATED_v322("Engine::getHostList() is deprecated in favor of Engine::getAllHosts(). Please switch before v3.22")
+Engine::getHostList(std::vector<Host*>* list)
{
for (auto const& kv : pimpl->hosts_)
list->push_back(kv.second);
}
+
+/** @brief Returns the list of all hosts found in the platform */
+std::vector<Host*> Engine::getAllHosts()
+{
+ std::vector<Host*> res;
+ for (auto const& kv : pimpl->hosts_)
+ res.push_back(kv.second);
+ return res;
+}
+
void Engine::addHost(std::string name, simgrid::s4u::Host* host)
{
pimpl->hosts_[name] = host;
}
+
void Engine::delHost(std::string name)
{
pimpl->hosts_.erase(name);
}
+
simgrid::s4u::Host* Engine::hostByName(std::string name)
{
return pimpl->hosts_.at(name); // Will raise a std::out_of_range if the host does not exist
}
+
simgrid::s4u::Host* Engine::hostByNameOrNull(std::string name)
{
auto host = pimpl->hosts_.find(name);
return host == pimpl->hosts_.end() ? nullptr : host->second;
}
+/** @brief Returns the list of all storages found in the platform */
+std::vector<Storage*> Engine::getAllStorages()
+{
+ std::vector<Storage*> res;
+ for (auto const& kv : pimpl->storages_)
+ res.push_back(kv.second);
+ return res;
+}
+
+simgrid::s4u::Storage* Engine::storageByName(std::string name)
+{
+ return pimpl->storages_.at(name); // Will raise a std::out_of_range if the host does not exist
+}
+
+simgrid::s4u::Storage* Engine::storageByNameOrNull(std::string name)
+{
+ auto storage = pimpl->storages_.find(name);
+ return storage == pimpl->storages_.end() ? nullptr : storage->second;
+}
+
+void Engine::addStorage(std::string name, simgrid::s4u::Storage* storage)
+{
+ pimpl->storages_[name] = storage;
+}
+
+void Engine::delStorage(std::string name)
+{
+ pimpl->storages_.erase(name);
+}
+
/** @brief Returns the amount of links in the platform */
size_t Engine::getLinkCount()
{
return simgrid::surf::LinkImpl::linksCount();
}
-/** @brief Fills the passed list with all hosts found in the platform */
-void Engine::getLinkList(std::vector<Link*>* list)
+
+/** @brief Fills the passed list with all links found in the platform
+ *
+ * @deprecated. Prefer Engine::getAllLinks() */
+void XBT_ATTRIB_DEPRECATED_v322("Engine::getLinkList() is deprecated in favor of Engine::getAllLinks(). Please switch before v3.22")
+Engine::getLinkList(std::vector<Link*>* list)
{
simgrid::surf::LinkImpl::linksList(list);
}
+/** @brief Returns the list of all links found in the platform */
+std::vector<Link*> Engine::getAllLinks()
+{
+ std::vector<Link*> res;
+ simgrid::surf::LinkImpl::linksList(&res);
+ return res;
+}
+
void Engine::run() {
if (MC_is_active()) {
MC_run();