- int HostImpl::fileMove(surf_file_t fd, const char* fullpath)
- {
- /* Check if the new full path is on the same mount point */
- if (!strncmp((const char*)fd->mount, fullpath, strlen(fd->mount))) {
- sg_size_t *psize, *new_psize;
- psize = (sg_size_t*)xbt_dict_get_or_null(findStorageOnMountList(fd->mount)->content_, fd->name);
- new_psize = xbt_new(sg_size_t, 1);
- *new_psize = *psize;
- if (psize) { // src file exists
- xbt_dict_remove(findStorageOnMountList(fd->mount)->content_, fd->name);
- char* path = (char*)xbt_malloc((strlen(fullpath) - strlen(fd->mount) + 1));
- strncpy(path, fullpath + strlen(fd->mount), strlen(fullpath) - strlen(fd->mount) + 1);
- xbt_dict_set(findStorageOnMountList(fd->mount)->content_, path, new_psize, nullptr);
- XBT_DEBUG("Move file from %s to %s, size '%llu'", fd->name, fullpath, *psize);
- free(path);
- return 0;
- } else {
- XBT_WARN("File %s doesn't exist", fd->name);
- return -1;
- }
- } else {
- XBT_WARN("New full path %s is not on the same mount point: %s. Action has been canceled.", fullpath, fd->mount);
- return -1;
- }
- }
+xbt_dynar_t HostImpl::getInfo(surf_file_t fd)
+{
+ simgrid::surf::Storage* st = findStorageOnMountList(fd->mount);
+ sg_size_t* psize = xbt_new(sg_size_t, 1);
+ *psize = fd->size;
+ xbt_dynar_t info = xbt_dynar_new(sizeof(void*), nullptr);
+ xbt_dynar_push_as(info, sg_size_t*, psize);
+ xbt_dynar_push_as(info, void*, fd->mount);
+ xbt_dynar_push_as(info, void*, (void*)st->cname());
+ xbt_dynar_push_as(info, void*, st->typeId_);
+ xbt_dynar_push_as(info, void*, st->contentType_);
+
+ return info;
+}
+
+sg_size_t HostImpl::fileTell(surf_file_t fd)
+{
+ return fd->current_position;
+}