XRootD
XrdOssMirage.hh
Go to the documentation of this file.
1 #ifndef __XRD_OSS_MIRAGE_HH__
2 #define __XRD_OSS_MIRAGE_HH__
3 
4 #include "XrdOssMirageEntry.hh"
5 
6 #include <XrdOss/XrdOss.hh>
7 
8 #include <mutex>
9 #include <optional>
10 #include <unordered_map>
11 
12 class XrdOssMirage : public XrdOss {
13 private:
14  std::unordered_map<std::string, XrdOssMirageEntryPtr> entries;
15  std::mutex mutex;
16 
17  bool has_entry(const char *path);
18  bool is_entry_being_written(const char *path);
19 
20 public:
21  XrdOssMirage() = default;
22  virtual ~XrdOssMirage() = default;
23 
24  virtual XrdOssDF *newDir(const char *tident) override;
25  virtual XrdOssDF *newFile(const char *tident) override;
26  virtual int Chmod(const char * path, mode_t mode, XrdOucEnv *envP=0) override;
27  virtual int Create(const char *tid, const char *path, mode_t mode, XrdOucEnv &env, int opts=0) override;
28  virtual uint64_t Features() override;
29  virtual int Init(XrdSysLogger *lp, const char *cfn) override;
30  virtual int Mkdir(const char *path, mode_t mode, int mkpath=0, XrdOucEnv *envP=0) override;
31  virtual int Remdir(const char *path, int Opts=0, XrdOucEnv *envP=0) override;
32  virtual int Rename(const char *oPath, const char *nPath, XrdOucEnv *oEnvP=0, XrdOucEnv *nEnvP=0) override;
33  virtual int Stat(const char *path, struct stat *buff, int opts=0, XrdOucEnv *envP=0) override;
34  virtual int Truncate(const char *path, unsigned long long fsize, XrdOucEnv *envP=0) override;
35  virtual int Unlink(const char *path, int Opts=0, XrdOucEnv *envP=0) override;
36 
37  std::optional<XrdOssMirageEntry> get_entry_read(const char *path);
38  std::optional<XrdOssMirageEntryPtr> get_entry_write(const char *path);
39 };
40 
41 #endif
#define tident
#define stat(a, b)
Definition: XrdPosix.hh:105
struct myOpts opts
virtual int Stat(const char *path, struct stat *buff, int opts=0, XrdOucEnv *envP=0) override
Definition: XrdOssMirage.cc:97
virtual int Init(XrdSysLogger *lp, const char *cfn) override
Definition: XrdOssMirage.cc:66
XrdOssMirage()=default
virtual XrdOssDF * newDir(const char *tident) override
Definition: XrdOssMirage.cc:19
virtual int Chmod(const char *path, mode_t mode, XrdOucEnv *envP=0) override
Definition: XrdOssMirage.cc:29
std::optional< XrdOssMirageEntry > get_entry_read(const char *path)
virtual int Create(const char *tid, const char *path, mode_t mode, XrdOucEnv &env, int opts=0) override
Definition: XrdOssMirage.cc:34
virtual int Mkdir(const char *path, mode_t mode, int mkpath=0, XrdOucEnv *envP=0) override
Definition: XrdOssMirage.cc:71
virtual int Rename(const char *oPath, const char *nPath, XrdOucEnv *oEnvP=0, XrdOucEnv *nEnvP=0) override
Definition: XrdOssMirage.cc:81
virtual int Truncate(const char *path, unsigned long long fsize, XrdOucEnv *envP=0) override
virtual ~XrdOssMirage()=default
std::optional< XrdOssMirageEntryPtr > get_entry_write(const char *path)
virtual XrdOssDF * newFile(const char *tident) override
Definition: XrdOssMirage.cc:24
virtual int Remdir(const char *path, int Opts=0, XrdOucEnv *envP=0) override
Definition: XrdOssMirage.cc:76
virtual int Unlink(const char *path, int Opts=0, XrdOucEnv *envP=0) override
virtual uint64_t Features() override
Definition: XrdOssMirage.cc:61
int Opts
Definition: XrdMpxStats.cc:58
XrdOucEnv * envP
Definition: XrdPss.cc:110