xrootd
Loading...
Searching...
No Matches
XrdOssHandler.hh
Go to the documentation of this file.
1#ifndef _XRDOSSHANDLER_H
2#define _XRDOSSHANDLER_H
3/******************************************************************************/
4/* */
5/* X r d O s s H a n d l e r . h h */
6/* */
7/* (C) Copyright 2020 CERN. */
8/* */
9/* This file is part of the XRootD software suite. */
10/* */
11/* XRootD is free software: you can redistribute it and/or modify it under */
12/* the terms of the GNU Lesser General Public License as published by the */
13/* Free Software Foundation, either version 3 of the License, or (at your */
14/* option) any later version. */
15/* */
16/* In applying this licence, CERN does not waive the privileges and */
17/* immunities granted to it by virtue of its status as an Intergovernmental */
18/* Organization or submit itself to any jurisdiction. */
19/* */
20/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
21/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
22/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
23/* License for more details. */
24/* */
25/* You should have received a copy of the GNU Lesser General Public License */
26/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
27/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
28/* */
29/* The copyright holder's institutional names and contributor's names may not */
30/* be used to endorse or promote products derived from this software without */
31/* specific prior written permission of the institution or contributor. */
32/******************************************************************************/
33
34#include "XrdOss/XrdOss.hh"
35
36// XrdOssHandler
37//
38// Chain-of-responsibility pattern
39//
40
41class XrdOssDFHandler : public XrdOssDF {
42public:
43 // Directory oriented methods
44virtual int Opendir(const char *dir_path, XrdOucEnv &Env) /* override */ { return successor_->Opendir(dir_path, Env); }
45virtual int Readdir(char *buff, int blen) /* override */ { return successor_->Readdir(buff, blen); }
46virtual int StatRet(struct stat *buff) /* override */ { return successor_->StatRet(buff); }
47
48 // File oriented methods
49virtual int Fchmod(mode_t Mode) /* override */ { return successor_->Fchmod(Mode); }
50virtual void Flush() /* override */ { successor_->Flush(); }
51virtual int Fstat(struct stat *buff) /* override */ { return successor_->Fstat(buff); }
52virtual int Fsync() /* override */ { return successor_->Fsync(); }
53virtual int Fsync(XrdSfsAio *aiop) /* override */ { return successor_->Fsync(aiop); }
54virtual int Ftruncate(unsigned long long flen) /* override */ { return successor_->Ftruncate(flen); }
55virtual int getFD() /* override */ { return successor_->getFD(); }
56virtual off_t getMmap(void **addr) /* override */ { return successor_->getMmap(addr); }
57virtual int isCompressed(char *cxidp=0) /* override */ { return successor_->isCompressed(cxidp); }
58virtual int Open(const char *path, int Oflag, mode_t Mode, XrdOucEnv &Env) /* override */ { return successor_->Open(path, Oflag, Mode, Env); }
59virtual ssize_t pgRead (void *buffer, off_t offset, size_t rdlen, uint32_t *csvec, uint64_t opts) /* override */ { return successor_->pgRead(buffer, offset, rdlen, csvec, opts); }
60virtual int pgRead (XrdSfsAio *aioparm, uint64_t opts) /* override */ { return successor_->pgRead(aioparm, opts); }
61virtual ssize_t pgWrite(void *buffer, off_t offset, size_t wrlen, uint32_t *csvec, uint64_t opts) /* override */ { return successor_->pgWrite(buffer, offset, wrlen, csvec, opts); }
62virtual int pgWrite(XrdSfsAio *aioparm, uint64_t opts) /* override */ { return successor_->pgWrite(aioparm, opts); }
63virtual ssize_t Read(off_t offset, size_t blen) /* override */ { return successor_->Read(offset, blen); }
64virtual ssize_t Read(void *buff, off_t offset, size_t blen) /* override */ { return successor_->Read(buff, offset, blen); }
65virtual int Read(XrdSfsAio *aiop) /* override */ { return successor_->Read(aiop); }
66virtual ssize_t ReadRaw(void *buff, off_t offset, size_t blen) /* override */ { return successor_->ReadRaw(buff, offset, blen); }
67virtual ssize_t ReadV(XrdOucIOVec *readV, int n) /* override */ { return successor_->ReadV(readV, n); }
68virtual ssize_t Write(const void *buff, off_t offset, size_t blen) /* override */ { return successor_->Write(buff, offset, blen); }
69virtual int Write(XrdSfsAio *aiop) /* override */ { return successor_->Write(aiop); }
70virtual ssize_t WriteV(XrdOucIOVec *writeV, int n) /* override */ { return successor_->WriteV(writeV, n); }
71
72 // Methods common to both
73virtual int Close(long long *retsz=0) /* override */ { return successor_->Close(retsz); }
74virtual int Fctl(int cmd, int alen, const char *args, char **resp=0) /* override */ { return successor_->Fctl(cmd, alen, args, resp); }
75virtual const char *getTID() /* override */ { return successor_->getTID(); }
76
77 XrdOssDFHandler(XrdOssDF *successor) : XrdOssDF(successor->getTID(), successor->DFType(), successor->getFD()), successor_(successor) { }
78virtual ~XrdOssDFHandler() { delete successor_; }
79
80protected:
82};
83
84class XrdOssHandler : public XrdOss {
85public:
86// derived class must provide its own
87// virtual XrdOssDF *newDir(const char *tident)=0;
88// virtual XrdOssDF *newFile(const char *tident)=0;
89
90virtual int Chmod(const char *path, mode_t mode, XrdOucEnv *envP=0) /* override */ { return successor_->Chmod(path, mode, envP); }
91
92virtual void Connect(XrdOucEnv &env) /* override */ { successor_->Connect(env); }
93
94virtual int Create(const char *tident, const char *path, mode_t access_mode,
95 XrdOucEnv &env, int Opts=0) /* override */ { return successor_->Create(tident, path, access_mode, env, Opts); }
96
97virtual void Disc(XrdOucEnv &env) /* override */ { successor_->Disc(env); }
98virtual void EnvInfo(XrdOucEnv *envP) /* override */ { successor_->EnvInfo(envP); }
99virtual uint64_t Features() /* override */ { return successor_->Features(); }
100virtual int FSctl(int cmd, int alen, const char *args, char **resp=0) /* override */ { return successor_->FSctl(cmd, alen, args, resp); }
101
102// derived class must provide its own
103// virtual int Init(XrdSysLogger *, const char *)=0;
104// virtual int Init(XrdSysLogger *lp, const char *cfn, XrdOucEnv *envP) {return Init(lp, cfn);}
105virtual int Mkdir(const char *path, mode_t mode, int mkpath=0, XrdOucEnv *envP=0) /* override */ { return successor_->Mkdir(path, mode, mkpath, envP); }
106
107virtual int Reloc(const char *tident, const char *path,
108 const char *cgName, const char *anchor=0) /* override */ { return successor_->Reloc(tident, path, cgName, anchor); }
109
110virtual int Remdir(const char *path, int Opts=0, XrdOucEnv *eP=0) /* override */ { return successor_->Remdir(path, Opts, eP); }
111virtual int Rename(const char *oldname, const char *newname,
112 XrdOucEnv *old_env=0, XrdOucEnv *new_env=0) /* override */ { return successor_->Rename(oldname, newname, old_env, new_env); }
113virtual int Stat(const char *path, struct stat *buff, int opts=0,
114 XrdOucEnv *EnvP=0) /* override */ { return successor_->Stat(path, buff, opts, EnvP); }
115
116virtual int Stats(char *bp, int bl) /* override */ { return successor_->Stats(bp, bl); }
117
118 // Specialized stat type function (none supported by default)
119virtual int StatFS(const char *path, char *buff, int &blen, XrdOucEnv *eP=0) /* override */ { return successor_->StatFS(path, buff, blen, eP); }
120virtual int StatLS(XrdOucEnv &env, const char *cgrp, char *buff, int &blen) /* override */ { return successor_->StatLS(env, cgrp, buff, blen); }
121virtual int StatPF(const char *path, struct stat *buff, int opts) /* override */ { return successor_->StatPF(path, buff, opts); }
122virtual int StatPF(const char *path, struct stat *buff) /* override */ { return successor_->StatPF(path, buff); }
123virtual int StatVS(XrdOssVSInfo *sP, const char *sname=0, int updt=0) /* override */ { return successor_->StatVS(sP, sname, updt); }
124virtual int StatXA(const char *path, char *buff, int &blen, XrdOucEnv *eP=0) /* override */ { return successor_->StatXA(path, buff, blen, eP); }
125virtual int StatXP(const char *path, unsigned long long &attr, XrdOucEnv *eP=0) /* override */ { return successor_->StatXP(path, attr, eP); }
126
127virtual int Truncate(const char *path, unsigned long long size,
128 XrdOucEnv *envP=0) /* override */ { return successor_->Truncate(path, size, envP); }
129virtual int Unlink(const char *path, int Opts=0, XrdOucEnv *eP=0) /* override */ { return successor_->Unlink(path, Opts, eP); }
130
131 // Default Name-to-Name Methods
132virtual int Lfn2Pfn(const char *Path, char *buff, int blen) /* override */ { return successor_->Lfn2Pfn(Path, buff, blen); }
133
134virtual
135const char *Lfn2Pfn(const char *Path, char *buff, int blen, int &rc) /* override */ { return successor_->Lfn2Pfn(Path, buff, blen, rc); }
136
137 XrdOssHandler(XrdOss *successor) : successor_(successor) { }
138virtual ~XrdOssHandler() { }
139
140protected:
142};
143#endif
#define stat(a, b)
Definition XrdPosix.hh:96
Definition XrdOssHandler.hh:41
virtual int Close(long long *retsz=0)
Definition XrdOssHandler.hh:73
virtual int Opendir(const char *dir_path, XrdOucEnv &Env)
Definition XrdOssHandler.hh:44
virtual ssize_t ReadRaw(void *buff, off_t offset, size_t blen)
Definition XrdOssHandler.hh:66
virtual int Fctl(int cmd, int alen, const char *args, char **resp=0)
Definition XrdOssHandler.hh:74
virtual ssize_t ReadV(XrdOucIOVec *readV, int n)
Definition XrdOssHandler.hh:67
virtual int pgWrite(XrdSfsAio *aioparm, uint64_t opts)
Definition XrdOssHandler.hh:62
virtual int StatRet(struct stat *buff)
Definition XrdOssHandler.hh:46
virtual int Readdir(char *buff, int blen)
Definition XrdOssHandler.hh:45
virtual ~XrdOssDFHandler()
Definition XrdOssHandler.hh:78
virtual ssize_t Read(void *buff, off_t offset, size_t blen)
Definition XrdOssHandler.hh:64
virtual int Open(const char *path, int Oflag, mode_t Mode, XrdOucEnv &Env)
Definition XrdOssHandler.hh:58
virtual int isCompressed(char *cxidp=0)
Definition XrdOssHandler.hh:57
XrdOssDFHandler(XrdOssDF *successor)
Definition XrdOssHandler.hh:77
virtual void Flush()
Flush filesystem cached pages for this file (used for checksums).
Definition XrdOssHandler.hh:50
virtual int Ftruncate(unsigned long long flen)
Definition XrdOssHandler.hh:54
virtual ssize_t WriteV(XrdOucIOVec *writeV, int n)
Definition XrdOssHandler.hh:70
virtual ssize_t Read(off_t offset, size_t blen)
Definition XrdOssHandler.hh:63
virtual int Write(XrdSfsAio *aiop)
Definition XrdOssHandler.hh:69
virtual int Fsync(XrdSfsAio *aiop)
Definition XrdOssHandler.hh:53
XrdOssDF * successor_
Definition XrdOssHandler.hh:81
virtual off_t getMmap(void **addr)
Definition XrdOssHandler.hh:56
virtual int getFD()
Definition XrdOssHandler.hh:55
virtual ssize_t pgRead(void *buffer, off_t offset, size_t rdlen, uint32_t *csvec, uint64_t opts)
Definition XrdOssHandler.hh:59
virtual int Fsync()
Definition XrdOssHandler.hh:52
virtual ssize_t pgWrite(void *buffer, off_t offset, size_t wrlen, uint32_t *csvec, uint64_t opts)
Definition XrdOssHandler.hh:61
virtual int Read(XrdSfsAio *aiop)
Definition XrdOssHandler.hh:65
virtual const char * getTID()
Definition XrdOssHandler.hh:75
virtual int pgRead(XrdSfsAio *aioparm, uint64_t opts)
Definition XrdOssHandler.hh:60
virtual int Fstat(struct stat *buff)
Definition XrdOssHandler.hh:51
virtual int Fchmod(mode_t Mode)
Definition XrdOssHandler.hh:49
virtual ssize_t Write(const void *buff, off_t offset, size_t blen)
Definition XrdOssHandler.hh:68
Definition XrdOss.hh:63
virtual int Fsync()
Definition XrdOss.hh:144
virtual int StatRet(struct stat *buff)
Definition XrdOss.hh:107
virtual int isCompressed(char *cxidp=0)
Definition XrdOss.hh:187
virtual int Opendir(const char *path, XrdOucEnv &env)
Definition XrdOss.hh:79
virtual const char * getTID()
Definition XrdOss.hh:434
virtual int Ftruncate(unsigned long long flen)
Definition XrdOss.hh:164
virtual int Readdir(char *buff, int blen)
Definition XrdOss.hh:92
virtual int Fstat(struct stat *buf)
Definition XrdOss.hh:136
virtual ssize_t ReadV(XrdOucIOVec *readV, int rdvcnt)
virtual ssize_t ReadRaw(void *buffer, off_t offset, size_t size)
Definition XrdOss.hh:319
virtual ssize_t WriteV(XrdOucIOVec *writeV, int wrvcnt)
virtual int Close(long long *retsz=0)=0
virtual int getFD()
Definition XrdOss.hh:426
virtual int Open(const char *path, int Oflag, mode_t Mode, XrdOucEnv &env)
Definition XrdOss.hh:200
virtual ssize_t Read(off_t offset, size_t size)
Definition XrdOss.hh:281
virtual ssize_t pgWrite(void *buffer, off_t offset, size_t wrlen, uint32_t *csvec, uint64_t opts)
virtual int Fchmod(mode_t mode)
Definition XrdOss.hh:120
virtual int Fctl(int cmd, int alen, const char *args, char **resp=0)
virtual ssize_t pgRead(void *buffer, off_t offset, size_t rdlen, uint32_t *csvec, uint64_t opts)
virtual void Flush()
Flush filesystem cached pages for this file (used for checksums).
Definition XrdOss.hh:126
virtual off_t getMmap(void **addr)
Definition XrdOss.hh:176
uint16_t DFType()
Definition XrdOss.hh:396
virtual ssize_t Write(const void *buffer, off_t offset, size_t size)
Definition XrdOss.hh:345
Definition XrdOssHandler.hh:84
virtual void EnvInfo(XrdOucEnv *envP)
Definition XrdOssHandler.hh:98
virtual int Unlink(const char *path, int Opts=0, XrdOucEnv *eP=0)
Definition XrdOssHandler.hh:129
virtual int StatFS(const char *path, char *buff, int &blen, XrdOucEnv *eP=0)
Definition XrdOssHandler.hh:119
virtual const char * Lfn2Pfn(const char *Path, char *buff, int blen, int &rc)
Definition XrdOssHandler.hh:135
virtual ~XrdOssHandler()
Definition XrdOssHandler.hh:138
virtual int Remdir(const char *path, int Opts=0, XrdOucEnv *eP=0)
Definition XrdOssHandler.hh:110
virtual int StatVS(XrdOssVSInfo *sP, const char *sname=0, int updt=0)
Definition XrdOssHandler.hh:123
virtual int Rename(const char *oldname, const char *newname, XrdOucEnv *old_env=0, XrdOucEnv *new_env=0)
Definition XrdOssHandler.hh:111
XrdOssHandler(XrdOss *successor)
Definition XrdOssHandler.hh:137
virtual int StatPF(const char *path, struct stat *buff)
Definition XrdOssHandler.hh:122
virtual int Lfn2Pfn(const char *Path, char *buff, int blen)
Definition XrdOssHandler.hh:132
XrdOss * successor_
Definition XrdOssHandler.hh:141
virtual int Mkdir(const char *path, mode_t mode, int mkpath=0, XrdOucEnv *envP=0)
Definition XrdOssHandler.hh:105
virtual int StatXP(const char *path, unsigned long long &attr, XrdOucEnv *eP=0)
Definition XrdOssHandler.hh:125
virtual void Disc(XrdOucEnv &env)
Definition XrdOssHandler.hh:97
virtual int StatLS(XrdOucEnv &env, const char *cgrp, char *buff, int &blen)
Definition XrdOssHandler.hh:120
virtual void Connect(XrdOucEnv &env)
Definition XrdOssHandler.hh:92
virtual int Truncate(const char *path, unsigned long long size, XrdOucEnv *envP=0)
Definition XrdOssHandler.hh:127
virtual int Chmod(const char *path, mode_t mode, XrdOucEnv *envP=0)
Definition XrdOssHandler.hh:90
virtual int FSctl(int cmd, int alen, const char *args, char **resp=0)
Definition XrdOssHandler.hh:100
virtual uint64_t Features()
Definition XrdOssHandler.hh:99
virtual int Stat(const char *path, struct stat *buff, int opts=0, XrdOucEnv *EnvP=0)
Definition XrdOssHandler.hh:113
virtual int Reloc(const char *tident, const char *path, const char *cgName, const char *anchor=0)
Definition XrdOssHandler.hh:107
virtual int StatXA(const char *path, char *buff, int &blen, XrdOucEnv *eP=0)
Definition XrdOssHandler.hh:124
virtual int Create(const char *tident, const char *path, mode_t access_mode, XrdOucEnv &env, int Opts=0)
Definition XrdOssHandler.hh:94
virtual int StatPF(const char *path, struct stat *buff, int opts)
Definition XrdOssHandler.hh:121
virtual int Stats(char *bp, int bl)
Definition XrdOssHandler.hh:116
Definition XrdOssVS.hh:88
Definition XrdOss.hh:498
virtual int Reloc(const char *tident, const char *path, const char *cgName, const char *anchor=0)
virtual int Mkdir(const char *path, mode_t mode, int mkpath=0, XrdOucEnv *envP=0)=0
virtual int StatPF(const char *path, struct stat *buff, int opts)
virtual int StatVS(XrdOssVSInfo *vsP, const char *sname=0, int updt=0)
virtual int Create(const char *tid, const char *path, mode_t mode, XrdOucEnv &env, int opts=0)=0
virtual void Connect(XrdOucEnv &env)
virtual int StatXP(const char *path, unsigned long long &attr, XrdOucEnv *envP=0)
virtual void Disc(XrdOucEnv &env)
virtual int StatFS(const char *path, char *buff, int &blen, XrdOucEnv *envP=0)
virtual int Chmod(const char *path, mode_t mode, XrdOucEnv *envP=0)=0
virtual int Lfn2Pfn(const char *Path, char *buff, int blen)
Definition XrdOss.hh:872
virtual int Remdir(const char *path, int Opts=0, XrdOucEnv *envP=0)=0
virtual int StatXA(const char *path, char *buff, int &blen, XrdOucEnv *envP=0)
virtual int Rename(const char *oPath, const char *nPath, XrdOucEnv *oEnvP=0, XrdOucEnv *nEnvP=0)=0
virtual void EnvInfo(XrdOucEnv *envP)
virtual int StatLS(XrdOucEnv &env, const char *path, char *buff, int &blen)
virtual int Truncate(const char *path, unsigned long long fsize, XrdOucEnv *envP=0)=0
virtual int Stats(char *buff, int blen)
Definition XrdOss.hh:706
virtual int FSctl(int cmd, int alen, const char *args, char **resp=0)
virtual int Stat(const char *path, struct stat *buff, int opts=0, XrdOucEnv *envP=0)=0
virtual int Unlink(const char *path, int Opts=0, XrdOucEnv *envP=0)=0
virtual uint64_t Features()
Definition XrdOucEnv.hh:42
Definition XrdSfsAio.hh:59
Definition XrdOucIOVec.hh:41