+ // assign a file descriptor id to the newly opened File
+ FileDescriptorHostExt* ext = host->extension<simgrid::s4u::FileDescriptorHostExt>();
+ if (ext->file_descriptor_table == nullptr) {
+ ext->file_descriptor_table = new std::vector<int>(sg_storage_max_file_descriptors);
+ std::iota(ext->file_descriptor_table->rbegin(), ext->file_descriptor_table->rend(), 0); // Fill with ..., 1, 0.
+ }
+ xbt_assert(not ext->file_descriptor_table->empty(), "Too much files are opened! Some have to be closed.");
+ desc_id = ext->file_descriptor_table->back();
+ ext->file_descriptor_table->pop_back();
+