11 #ifndef WRENCH_STORAGESERVICE_H
12 #define WRENCH_STORAGESERVICE_H
18 #include "wrench/services/Service.h"
19 #include "wrench/failure_causes/FailureCause.h"
20 #include "wrench/services/file_registry/FileRegistryService.h"
21 #include "wrench/job/StandardJob.h"
22 #include "wrench/services/storage/storage_helpers/LogicalFileSystem.h"
23 #include "wrench/services/storage/storage_helpers/FileLocation.h"
31 class FileRegistryService;
47 virtual std::map<std::string, double> getFreeSpace();
49 virtual std::map<std::string, double> getTotalSpace();
51 std::string getMountPoint();
52 std::set<std::string> getMountPoints();
53 bool hasMultipleMountPoints();
54 bool hasMountPoint(std::string mp);
56 static bool lookupFile(std::shared_ptr<DataFile>file, std::shared_ptr<FileLocation> location);
57 static void deleteFile(std::shared_ptr<DataFile>file, std::shared_ptr<FileLocation> location,
58 std::shared_ptr<FileRegistryService> file_registry_service =
nullptr);
59 static void readFile(std::shared_ptr<DataFile>file, std::shared_ptr<FileLocation> location);
60 static void readFile(std::shared_ptr<DataFile>file, std::shared_ptr<FileLocation> location,
double num_bytes);
61 static void writeFile(std::shared_ptr<DataFile>file, std::shared_ptr<FileLocation> location);
62 static void createFile(std::shared_ptr<DataFile>file, std::shared_ptr<FileLocation> location);
71 static void copyFile(std::shared_ptr<DataFile>file,
72 std::shared_ptr<FileLocation> src_location,
73 std::shared_ptr<FileLocation> dst_location);
76 static void initiateFileCopy(simgrid::s4u::Mailbox *answer_mailbox,
77 std::shared_ptr<DataFile>file,
78 std::shared_ptr<FileLocation> src_location,
79 std::shared_ptr<FileLocation> dst_location);
81 static void readFiles(std::map<std::shared_ptr<DataFile>, std::shared_ptr<FileLocation>> locations);
83 static void writeFiles(std::map<std::shared_ptr<DataFile>, std::shared_ptr<FileLocation>> locations);
87 const std::set<std::string> mount_points,
88 const std::string &service_name);
94 friend class FileTransferThread;
96 static void stageFile(std::shared_ptr<DataFile>file , std::shared_ptr<FileLocation> location);
99 unsigned long buffer_size;
102 std::map<std::string, std::unique_ptr<LogicalFileSystem>> file_systems;
115 static void writeOrReadFiles(FileOperation action,
116 std::map<std::shared_ptr<DataFile>, std::shared_ptr<FileLocation>> locations);
118 void stageFile(std::shared_ptr<DataFile>file , std::string mountpoint, std::string directory);
132 #endif //WRENCH_STORAGESERVICE_H