FileLocation.h
1 
10 #ifndef WRENCH_FILELOCATION_H
11 #define WRENCH_FILELOCATION_H
12 
13 #include <memory>
14 
15 
16 namespace wrench {
17 
18  /***********************/
20  /***********************/
21 
22 
23  class StorageService;
24 
28  class FileLocation {
29 
30  public:
31 
35  static std::shared_ptr<FileLocation> SCRATCH;
36 
37  static std::shared_ptr<FileLocation> LOCATION(std::shared_ptr<StorageService> ss);
38 
39  static std::shared_ptr<FileLocation> LOCATION(std::shared_ptr<StorageService> ss,
40  std::shared_ptr<StorageService> server_ss);
41 
42  static std::shared_ptr<FileLocation> LOCATION(std::shared_ptr<StorageService> ss,
43  std::string absolute_path);
44 
45  std::shared_ptr<StorageService> getStorageService();
46  std::shared_ptr<StorageService> getServerStorageService();
47  std::string getMountPoint();
48  std::string getAbsolutePathAtMountPoint();
49  std::string getFullAbsolutePath();
50 
51  std::string toString();
52 
62  static bool equal(const std::shared_ptr<FileLocation> &lhs,
63  const std::shared_ptr<FileLocation> &rhs) {
64  return ((lhs->getStorageService() == rhs->getStorageService()) and
65  (lhs->getFullAbsolutePath() == rhs->getFullAbsolutePath()));
66  }
67 
68 
69  static std::string sanitizePath(std::string path);
70  static bool properPathPrefix(std::string path1, std::string path2);
71 
72  private:
73 
74  friend class LogicalFileSystem;
75 
81  FileLocation(std::shared_ptr<StorageService> ss, std::string mp, std::string apamp) :
82  storage_service(ss), mount_point(mp), absolute_path_at_mount_point(apamp) { }
83 
84  std::shared_ptr<StorageService> storage_service;
85  std::shared_ptr<StorageService> server_storage_service;
86  std::string mount_point;
87  std::string absolute_path_at_mount_point;
88 
89 
90  };
91 
92  /***********************/
94  /***********************/
95 
96 
97 }
98 
99 
100 #endif //WRENCH_FILELOCATION_H
std::string getFullAbsolutePath()
Get the location's full absolute path.
Definition: FileLocation.cpp:170
std::shared_ptr< StorageService > getServerStorageService()
Get the location's server storage service.
Definition: FileLocation.cpp:140
static std::shared_ptr< FileLocation > SCRATCH
Static location that denotes a compute service's scratch space.
Definition: FileLocation.h:35
static std::shared_ptr< FileLocation > LOCATION(std::shared_ptr< StorageService > ss)
File location specifier for a storage service's (single) mount point root.
Definition: FileLocation.cpp:32
Definition: Alarm.cpp:20
static std::string sanitizePath(std::string path)
Method to sanitize an absolute path (and make it absolute if it's not)
Definition: FileLocation.cpp:183
std::shared_ptr< StorageService > getStorageService()
Get the location's storage service.
Definition: FileLocation.cpp:129
std::string getAbsolutePathAtMountPoint()
Get the location's path at mount point.
Definition: FileLocation.cpp:159
static bool properPathPrefix(std::string path1, std::string path2)
Helper method to find if a path is a proper prefix of another path.
Definition: FileLocation.cpp:240
static bool equal(const std::shared_ptr< FileLocation > &lhs, const std::shared_ptr< FileLocation > &rhs)
Method to compare two file locations.
Definition: FileLocation.h:62
A class that encodes a file location.
Definition: FileLocation.h:28
A class that implements a weak file system abstraction.
Definition: LogicalFileSystem.h:33
std::string getMountPoint()
Get the location's mount point.
Definition: FileLocation.cpp:148
std::string toString()
Give a <ss name>:<mount point>:<dir>" string for the location.
Definition: FileLocation.cpp:116