void setPstate(int pstate_index);
int pstate();
xbt_dict_t mountedStoragesAsDict(); // HACK
- std::vector<const char*> attachedStorages();
+ void attachedStorages(std::vector<const char*> * storages);
/** Get an associative list [mount point]->[Storage] of all local mount points.
*
* \brief Returns the list of storages attached to an host.
* \return a dict containing all storages attached to the host
*/
-std::vector<const char*> Host::attachedStorages()
+void Host::attachedStorages(std::vector<const char*>* storages)
{
- return simgrid::simix::kernelImmediate([this] {
- return this->pimpl_->getAttachedStorageList();
- });
+ simgrid::simix::kernelImmediate([this, storages] { this->pimpl_->getAttachedStorageList(storages); });
}
} // namespace simgrid
}
xbt_dynar_t sg_host_get_attached_storage_list(sg_host_t host){
+ std::vector<const char*>* storage_vector = new std::vector<const char*>();
xbt_dynar_t storage_dynar = xbt_dynar_new(sizeof(const char*), nullptr);
- for (auto name : host->attachedStorages())
+ host->attachedStorages(storage_vector);
+ for (auto name : *storage_vector)
xbt_dynar_push(storage_dynar, &name);
+ delete storage_vector;
return storage_dynar;
}
return storage_list;
}
-std::vector<const char*> HostImpl::getAttachedStorageList()
+void HostImpl::getAttachedStorageList(std::vector<const char*>* storages)
{
xbt_lib_cursor_t cursor;
char* key;
void** data;
- std::vector<const char*> result;
xbt_lib_foreach(storage_lib, cursor, key, data)
{
if (xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL) != nullptr) {
simgrid::surf::Storage* storage = static_cast<simgrid::surf::Storage*>(
xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL));
if (!strcmp(static_cast<const char*>(storage->attach_), piface_->cname())) {
- result.push_back(storage->cname());
+ storages->push_back(storage->cname());
}
}
}
- return result;
}
Action* HostImpl::open(const char* fullpath)
virtual xbt_dict_t getMountedStorageList();
/** @brief Get the xbt_dynar_t of storages attached to the Host */
- virtual std::vector<const char*> getAttachedStorageList();
+ virtual void getAttachedStorageList(std::vector<const char*>* storages);
/**
* @brief Open a file