XRootD
Loading...
Searching...
No Matches
XrdOssMirage.hh
Go to the documentation of this file.
1#ifndef __XRD_OSS_MIRAGE_HH__
2#define __XRD_OSS_MIRAGE_HH__
3
5
6#include <XrdOss/XrdOss.hh>
7
8#include <mutex>
9#include <optional>
10#include <unordered_map>
11
12class XrdOssMirage : public XrdOss {
13private:
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
20public:
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
struct stat Stat
Definition XrdCks.cc:49
#define stat(a, b)
Definition XrdPosix.hh:105
bool Create
struct myOpts opts
virtual int Init(XrdSysLogger *lp, const char *cfn) override
XrdOssMirage()=default
virtual XrdOssDF * newDir(const char *tident) override
virtual int Chmod(const char *path, mode_t mode, XrdOucEnv *envP=0) override
std::optional< XrdOssMirageEntry > get_entry_read(const char *path)
virtual int Mkdir(const char *path, mode_t mode, int mkpath=0, XrdOucEnv *envP=0) override
virtual int Rename(const char *oPath, const char *nPath, XrdOucEnv *oEnvP=0, XrdOucEnv *nEnvP=0) override
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
virtual int Remdir(const char *path, int Opts=0, XrdOucEnv *envP=0) override
virtual int Unlink(const char *path, int Opts=0, XrdOucEnv *envP=0) override
virtual uint64_t Features() override
XrdOss()
Constructor and Destructor.
Definition XrdOss.hh:978