1 #ifndef __SFS_INTERFACE_H__
2 #define __SFS_INTERFACE_H__
35 #include <sys/types.h>
50 #define SFS_O_RDONLY 0
51 #define SFS_O_WRONLY 1
53 #define SFS_O_CREAT 0x00000100
54 #define SFS_O_TRUNC 0x00000200
55 #define SFS_O_MULTIW 0x00000400
56 #define SFS_O_NOTPC 0x00000800
57 #define SFS_O_DIRLIST 0x00010000
58 #define SFS_O_POSC 0x00100000
59 #define SFS_O_FORCE 0x00200000
60 #define SFS_O_HNAME 0x00400000
61 #define SFS_O_LOCAL 0x00800000
62 #define SFS_O_NOWAIT 0x01000000
63 #define SFS_O_RAWIO 0x02000000
64 #define SFS_O_RESET 0x04000000
65 #define SFS_O_REPLICA 0x08000000
66 #define SFS_O_SEQIO 0x10000000
71 #define SFS_O_MKPTH 0x00004000
76 #define SFS_O_LOCATE 0x10000000
77 #define SFS_O_STAT 0x20000000
78 #define SFS_O_META 0x40000000
86 #define SFS_FCTL_GETFD 1
87 #define SFS_FCTL_STATV 2
88 #define SFS_FCTL_SPEC1 3
90 #define SFS_SFIO_FDVAL 0x80000000
94 #define SFS_FSCTL_CMD 255
96 #define SFS_FSCTL_LOCATE 1
97 #define SFS_FSCTL_STATFS 2
98 #define SFS_FSCTL_STATLS 3
99 #define SFS_FSCTL_STATXA 4
100 #define SFS_FSCTL_STATCC 5
101 #define SFS_FSCTL_PLUGIN 8
102 #define SFS_FSCTL_PLUGIO 16
103 #define SFS_FSCTL_PLUGXC 32
110 #define SFS_REDIRECT -256
111 #define SFS_STARTED -512
112 #define SFS_DATA -1024
113 #define SFS_DATAVEC -2048
117 #define SFS_LCLPRFX "/=/"
118 #define SFS_LCLPLEN 3
119 #define SFS_LCLPATH(x) !strncmp(x, SFS_LCLPRFX, SFS_LCLPLEN)
120 #define SFS_LCLPRFY "/="
121 #define SFS_LCLROOT(x) !strncmp(x, SFS_LCLPRFX, SFS_LCLPLEN-1) \
122 && (*(x+SFS_LCLPLEN-1) == '/' || *(x+SFS_LCLPLEN-1) == 0)
148 #define Prep_SENDAOK 4
149 #define Prep_SENDERR 8
150 #define Prep_SENDACK 12
151 #define Prep_WMODE 16
152 #define Prep_STAGE 32
153 #define Prep_COLOC 64
154 #define Prep_FRESH 128
155 #define Prep_CANCEL 256
156 #define Prep_QUERY 512
157 #define Prep_EVICT 1024
264 virtual int open(
const char *path,
266 const char *opaque = 0) = 0;
343 :
error(eInfo), lclEI(0) {}
404 virtual int open(
const char *fileName,
408 const char *opaque = 0) = 0;
470 virtual int fctl(
const int cmd,
489 virtual int fctl(
const int cmd,
511 virtual int getMmap(
void **Addr, off_t &Size) = 0;
517 static const uint64_t
781 {lclEI = &
error; pgwrEOF = 0;}
802 :
error(eInfo), lclEI(0), pgwrEOF(0) {}
935 const char *opaque = 0);
953 const char *opaque = 0) = 0;
1005 const char *opaque = 0) = 0;
1054 virtual int FSctl(
const int cmd,
1163 const char *opaque = 0) = 0;
1190 virtual int rem(
const char *path,
1193 const char *opaque = 0) = 0;
1209 const char *opaque = 0) = 0;
1228 const char *opaqueO = 0,
1229 const char *opaqueN = 0) = 0;
1248 const char *opaque = 0) = 0;
1268 const char *opaque = 0) = 0;
1286 const char *opaque = 0) = 0;
1329 const char *configFn,
1346 const char *configFn);
int stat(const char *path, struct stat *buf)
const char * Arg1
PLUGINO, PLUGION, PLUGXC.
int Arg2Len
Length or -count of args in extension.
char * notify
Notification path or 0.
XrdOucTList * paths
List of paths.
XrdOucTList * oinfo
1-to-1 correspondence of opaque info
@ XrdSfsFileExistIsOffline
@ XrdSfsFileExistIsDirectory
long long XrdSfsFileOffset
< SFS_FSCTL_PLUGIN/PLUGIO/PLUGXC parms
virtual int autoStat(struct stat *buf)
virtual const char * nextEntry()=0
XrdSfsDirectory(XrdOucErrInfo &eInfo)
XrdSfsDirectory(const char *user=0, int MonID=0)
XrdSfsDirectory(XrdSfsDirectory &wrapD)
virtual const char * FName()=0
virtual ~XrdSfsDirectory()
Destructor.
virtual int open(const char *path, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual XrdSfsDirectory * newDir(char *user=0, int MonID=0)=0
virtual void Connect(const XrdSecEntity *client=0)
XrdSfsFileSystem()
Constructor and Destructor.
virtual int chmod(const char *path, XrdSfsMode mode, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual void EnvInfo(XrdOucEnv *envP)
virtual int stat(const char *path, mode_t &mode, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual void Disc(const XrdSecEntity *client=0)
virtual int getStats(char *buff, int blen)=0
virtual XrdSfsDirectory * newDir(XrdOucErrInfo &eInfo)
virtual int fsctl(const int cmd, const char *args, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)=0
virtual int rename(const char *oPath, const char *nPath, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaqueO=0, const char *opaqueN=0)=0
virtual int mkdir(const char *path, XrdSfsMode mode, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual ~XrdSfsFileSystem()
virtual int FSctl(const int cmd, XrdSfsFSctl &args, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
virtual int truncate(const char *path, XrdSfsFileOffset fsize, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int chksum(csFunc Func, const char *csName, const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)
virtual int remdir(const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int getChkPSize()
uint64_t FeatureSet
Adjust features at initialization.
virtual const char * getVersion()=0
virtual XrdSfsFile * newFile(XrdOucErrInfo &eInfo)
virtual int exists(const char *path, XrdSfsFileExistence &eFlag, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)=0
virtual int gpFile(gpfFunc &gpAct, XrdSfsGPFile &gpReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
virtual int stat(const char *Name, struct stat *buf, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int FAttr(XrdSfsFACtl *faReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
virtual XrdSfsFile * newFile(char *user=0, int MonID=0)=0
virtual int rem(const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)=0
@ gpfGet
Perform a file retrieval.
@ gpfCancel
Cancel this request.
@ gpfPut
Perform a file push.
static const uint64_t Verify
Options for pgRead() and pgWrite() as noted below.
virtual XrdSfsXferSize writev(XrdOucIOVec *writeV, int wdvCnt)
virtual int SendData(XrdSfsDio *sfDio, XrdSfsFileOffset offset, XrdSfsXferSize size)
virtual int getMmap(void **Addr, off_t &Size)=0
virtual int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client=0, const char *opaque=0)=0
virtual int sync(XrdSfsAio *aiop)=0
virtual int write(XrdSfsAio *aioparm)=0
virtual XrdSfsXferSize read(XrdSfsFileOffset offset, XrdSfsXferSize size)=0
virtual XrdSfsXferSize readv(XrdOucIOVec *readV, int rdvCnt)
virtual int checkpoint(cpAct act, struct iov *range=0, int n=0)
virtual int truncate(XrdSfsFileOffset fsize)=0
virtual ~XrdSfsFile()
Destructor.
virtual XrdSfsXferSize read(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize size)=0
@ cpTrunc
Truncate a file within checkpoint.
@ cpDelete
Delete an existing checkpoint.
@ cpRestore
Restore an active checkpoint and delete it.
@ cpWrite
Add data to an existing checkpoint.
@ cpQuery
Return checkpoint limits.
@ cpCreate
Create a checkpoint, one must not be active.
virtual const char * FName()=0
virtual int getCXinfo(char cxtype[4], int &cxrsz)=0
XrdSfsFile(XrdSfsFile &wrapF)
XrdSfsFile(const char *user=0, int MonID=0)
XrdSfsFile(XrdOucErrInfo &eInfo)
virtual int stat(struct stat *buf)=0
virtual void setXio(XrdSfsXio *xioP)
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
virtual XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
virtual XrdSfsXferSize write(XrdSfsFileOffset offset, const char *buffer, XrdSfsXferSize size)=0
virtual int read(XrdSfsAio *aioparm)=0
virtual XrdSfsXferSize pgWrite(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize wrlen, uint32_t *csvec, uint64_t opts=0)