xrootd
XrdThrottle.hh
Go to the documentation of this file.
1 #ifndef __XRDTHROTTLE_H_
2 #define __XRDTHROTTLE_H_
3 
4 #include <memory>
5 #include <string>
6 
7 #include "XrdVersion.hh"
8 #include "XrdSys/XrdSysError.hh"
10 
13 
14 class XrdSysLogger;
15 class XrdOucStream;
16 
17 
18 namespace XrdThrottle {
19 
20 #if __cplusplus >= 201103L
21 typedef std::unique_ptr<XrdSfsFile> unique_sfs_ptr;
22 #else
23 typedef std::auto_ptr<XrdSfsFile> unique_sfs_ptr;
24 #endif
25 
26 class FileSystem;
27 
28 class File : public XrdSfsFile {
29 
30 friend class FileSystem;
31 
32 public:
33 
34  virtual int
35  open(const char *fileName,
36  XrdSfsFileOpenMode openMode,
37  mode_t createMode,
38  const XrdSecEntity *client,
39  const char *opaque = 0);
40 
41  virtual int
42  close();
43 
44  virtual int
45  checkpoint(cpAct act, struct iov *range=0, int n=0);
46 
47  using XrdSfsFile::fctl;
48  virtual int
49  fctl(const int cmd,
50  const char *args,
51  XrdOucErrInfo &out_error);
52 
53  virtual const char *
54  FName();
55 
56  virtual int
57  getMmap(void **Addr, off_t &Size);
58 
59  virtual XrdSfsXferSize
61  char *buffer,
62  XrdSfsXferSize rdlen,
63  uint32_t *csvec,
64  uint64_t opts=0);
65 
66  virtual XrdSfsXferSize
67  pgRead(XrdSfsAio *aioparm, uint64_t opts=0);
68 
69  virtual XrdSfsXferSize
71  char *buffer,
72  XrdSfsXferSize rdlen,
73  uint32_t *csvec,
74  uint64_t opts=0);
75 
76  virtual XrdSfsXferSize
77  pgWrite(XrdSfsAio *aioparm, uint64_t opts=0);
78 
79  virtual int
80  read(XrdSfsFileOffset fileOffset, // Preread only
81  XrdSfsXferSize amount);
82 
83  virtual XrdSfsXferSize
84  read(XrdSfsFileOffset fileOffset,
85  char *buffer,
86  XrdSfsXferSize buffer_size);
87 
88  virtual int
89  read(XrdSfsAio *aioparm);
90 
91  virtual XrdSfsXferSize
92  write(XrdSfsFileOffset fileOffset,
93  const char *buffer,
94  XrdSfsXferSize buffer_size);
95 
96  virtual int
97  write(XrdSfsAio *aioparm);
98 
99  virtual int
100  sync();
101 
102  virtual int
103  sync(XrdSfsAio *aiop);
104 
105  virtual int
106  stat(struct stat *buf);
107 
108  virtual int
110 
111  virtual int
112  getCXinfo(char cxtype[4], int &cxrsz);
113 
114  virtual int
116  XrdSfsFileOffset offset,
117  XrdSfsXferSize size);
118 
119 private:
121 
122  virtual
123  ~File();
124 
126  int m_uid; // A unique identifier for this user; has no meaning except for the fairshare.
127  std::string m_loadshed;
128  std::string m_user;
131 };
132 
134 {
135 
137 
138 public:
139 
140  virtual XrdSfsDirectory *
141  newDir(char *user=0, int monid=0);
142 
143  virtual XrdSfsFile *
144  newFile(char *user=0, int monid=0);
145 
146  virtual int
147  chksum( csFunc Func,
148  const char *csName,
149  const char *path,
150  XrdOucErrInfo &eInfo,
151  const XrdSecEntity *client = 0,
152  const char *opaque = 0);
153 
154  virtual int
155  chmod(const char *Name,
156  XrdSfsMode Mode,
157  XrdOucErrInfo &out_error,
158  const XrdSecEntity *client,
159  const char *opaque = 0);
160 
161  virtual void
162  Connect(const XrdSecEntity *client = 0);
163 
164  virtual void
165  Disc(const XrdSecEntity *client = 0);
166 
167  virtual void
169 
170  virtual int
171  exists(const char *fileName,
172  XrdSfsFileExistence &exists_flag,
173  XrdOucErrInfo &out_error,
174  const XrdSecEntity *client,
175  const char *opaque = 0);
176 
177  virtual int
179  XrdOucErrInfo &eInfo,
180  const XrdSecEntity *client = 0);
181 
182 
183  virtual uint64_t
185 
186  virtual int
187  fsctl(const int cmd,
188  const char *args,
189  XrdOucErrInfo &out_error,
190  const XrdSecEntity *client);
191 
192  virtual int
194 
195  virtual int
196  getStats(char *buff, int blen);
197 
198  virtual const char *
200 
201  virtual int
202  gpFile( gpfFunc &gpAct,
203  XrdSfsGPFile &gpReq,
204  XrdOucErrInfo &eInfo,
205  const XrdSecEntity *client = 0);
206 
207  virtual int
208  mkdir(const char *dirName,
209  XrdSfsMode Mode,
210  XrdOucErrInfo &out_error,
211  const XrdSecEntity *client,
212  const char *opaque = 0);
213 
214  virtual int
216  XrdOucErrInfo &out_error,
217  const XrdSecEntity *client = 0);
218 
219  virtual int
220  rem(const char *path,
221  XrdOucErrInfo &out_error,
222  const XrdSecEntity *client,
223  const char *info = 0);
224 
225  virtual int
226  remdir(const char *dirName,
227  XrdOucErrInfo &out_error,
228  const XrdSecEntity *client,
229  const char *info = 0);
230 
231  virtual int
232  rename(const char *oldFileName,
233  const char *newFileName,
234  XrdOucErrInfo &out_error,
235  const XrdSecEntity *client,
236  const char *infoO = 0,
237  const char *infoN = 0);
238 
239  virtual int
240  stat(const char *Name,
241  struct stat *buf,
242  XrdOucErrInfo &out_error,
243  const XrdSecEntity *client,
244  const char *opaque = 0);
245 
246  virtual int
247  stat(const char *Name,
248  mode_t &mode,
249  XrdOucErrInfo &out_error,
250  const XrdSecEntity *client,
251  const char *opaque = 0);
252 
253  virtual int
254  truncate(const char *Name,
255  XrdSfsFileOffset fileOffset,
256  XrdOucErrInfo &out_error,
257  const XrdSecEntity *client = 0,
258  const char *opaque = 0);
259 
260  virtual int
262 
263 private:
264  static void
266  XrdSfsFileSystem *native_fs,
267  XrdSysLogger *lp,
268  const char *config_file);
269 
271 
272  virtual
274 
275  int
277 
278  int
280 
281  int
283 
287  std::string m_config_file;
291  XrdVersionInfo *myVersion;
292 
293 };
294 
295 }
296 
297 #endif
298 
XrdThrottle::FileSystem::xthrottle
int xthrottle(XrdOucStream &Config)
XrdThrottleManager.hh
XrdSfsInterface.hh
XrdThrottle::File::pgRead
virtual XrdSfsXferSize pgRead(XrdSfsAio *aioparm, uint64_t opts=0)
XrdThrottle
Definition: XrdThrottle.hh:18
XrdThrottle::File
Definition: XrdThrottle.hh:28
XrdThrottle::FileSystem::getChkPSize
virtual int getChkPSize()
XrdSfsFileSystem
Definition: XrdSfsInterface.hh:835
XrdThrottle::FileSystem::exists
virtual int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
XrdThrottle::FileSystem::rem
virtual int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
XrdThrottleManager
Definition: XrdThrottleManager.hh:42
XrdSfsFileSystem::csFunc
csFunc
Definition: XrdSfsInterface.hh:917
XrdThrottle::FileSystem::gpFile
virtual int gpFile(gpfFunc &gpAct, XrdSfsGPFile &gpReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
XrdThrottle::FileSystem::truncate
virtual int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
XrdThrottle::FileSystem::newFile
virtual XrdSfsFile * newFile(char *user=0, int monid=0)
XrdThrottle::FileSystem
Definition: XrdThrottle.hh:134
XrdThrottle::File::~File
virtual ~File()
XrdSfsXferSize
int XrdSfsXferSize
Definition: XrdSfsInterface.hh:129
XrdThrottle::FileSystem::getVersion
virtual const char * getVersion()
XrdSfsFileExistence
XrdSfsFileExistence
Definition: XrdSfsInterface.hh:132
XrdThrottle::FileSystem::m_sfs_ptr
XrdSfsFileSystem * m_sfs_ptr
Definition: XrdThrottle.hh:288
XrdThrottle::File::write
virtual int write(XrdSfsAio *aioparm)
XrdThrottle::FileSystem::m_throttle
XrdThrottleManager m_throttle
Definition: XrdThrottle.hh:290
XrdThrottle::FileSystem::fsctl
virtual int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecEntity *client)
XrdSfsFile
Definition: XrdSfsInterface.hh:365
XrdSfsFileOffset
long long XrdSfsFileOffset
Definition: XrdSfsInterface.hh:126
XrdThrottle::File::pgWrite
virtual XrdSfsXferSize pgWrite(XrdSfsAio *aioparm, uint64_t opts=0)
XrdThrottle::FileSystem::prepare
virtual int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
XrdOucStream
Definition: XrdOucStream.hh:47
XrdThrottle::FileSystem::FAttr
virtual int FAttr(XrdSfsFACtl *faReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
XrdThrottle::FileSystem::myVersion
XrdVersionInfo * myVersion
Definition: XrdThrottle.hh:291
XrdThrottle::File::m_loadshed
std::string m_loadshed
Definition: XrdThrottle.hh:127
XrdThrottle::FileSystem::m_eroute
XrdSysError m_eroute
Definition: XrdThrottle.hh:285
XrdThrottle::File::getCXinfo
virtual int getCXinfo(char cxtype[4], int &cxrsz)
XrdThrottle::File::m_uid
int m_uid
Definition: XrdThrottle.hh:126
XrdThrottle::File::write
virtual XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
XrdSfsDirectory
Definition: XrdSfsInterface.hh:239
XrdThrottle::FileSystem::mkdir
virtual int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
XrdThrottle::FileSystem::m_instance
static FileSystem * m_instance
Definition: XrdThrottle.hh:284
XrdThrottle::File::sync
virtual int sync(XrdSfsAio *aiop)
XrdThrottle::FileSystem::remdir
virtual int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
XrdThrottle::File::read
virtual int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize amount)
XrdSfsGPFile
Definition: XrdSfsGPFile.hh:35
XrdThrottle::FileSystem::chmod
virtual int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
XrdThrottle::File::SendData
virtual int SendData(XrdSfsDio *sfDio, XrdSfsFileOffset offset, XrdSfsXferSize size)
XrdThrottle::File::getMmap
virtual int getMmap(void **Addr, off_t &Size)
XrdOucEnv
Definition: XrdOucEnv.hh:42
XrdThrottle::FileSystem::Features
virtual uint64_t Features()
XrdThrottle::File::m_throttle
XrdThrottleManager & m_throttle
Definition: XrdThrottle.hh:129
XrdThrottle::File::File
File(const char *, unique_sfs_ptr, XrdThrottleManager &, XrdSysError &)
XrdThrottle::unique_sfs_ptr
std::auto_ptr< XrdSfsFile > unique_sfs_ptr
Definition: XrdThrottle.hh:23
XrdThrottle::FileSystem::~FileSystem
virtual ~FileSystem()
XrdThrottle::FileSystem::Disc
virtual void Disc(const XrdSecEntity *client=0)
XrdThrottle::FileSystem::getStats
virtual int getStats(char *buff, int blen)
XrdThrottle::FileSystem::stat
virtual int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
XrdThrottle::FileSystem::FileSystem
FileSystem()
XrdSysLogger
Definition: XrdSysLogger.hh:53
XrdThrottle::File::pgWrite
virtual XrdSfsXferSize pgWrite(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
XrdCms::Config
XrdCmsConfig Config
XrdThrottle::FileSystem::m_config_file
std::string m_config_file
Definition: XrdThrottle.hh:287
XrdThrottle::FileSystem::newDir
virtual XrdSfsDirectory * newDir(char *user=0, int monid=0)
XrdSfsFile::fctl
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
iov
Definition: XrdOucIOVec.hh:65
XrdSfsMode
int XrdSfsMode
Definition: XrdSfsInterface.hh:128
XrdThrottle::FileSystem::stat
virtual int stat(const char *Name, mode_t &mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
XrdThrottle::File::fctl
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
XrdThrottle::File::sync
virtual int sync()
XrdThrottle::File::truncate
virtual int truncate(XrdSfsFileOffset fileOffset)
XrdThrottle::File::FName
virtual const char * FName()
XrdThrottle::FileSystem::XrdSfsGetFileSystem_Internal
friend XrdSfsFileSystem * XrdSfsGetFileSystem_Internal(XrdSfsFileSystem *, XrdSysLogger *, const char *)
XrdThrottle::FileSystem::xloadshed
int xloadshed(XrdOucStream &Config)
XrdThrottleTrace.hh
XrdThrottle::FileSystem::m_initialized
bool m_initialized
Definition: XrdThrottle.hh:289
XrdSfsFACtl
Definition: XrdSfsFAttr.hh:73
XrdThrottle::FileSystem::Initialize
static void Initialize(FileSystem *&fs, XrdSfsFileSystem *native_fs, XrdSysLogger *lp, const char *config_file)
XrdSfsFile::cpAct
cpAct
Definition: XrdSfsInterface.hh:428
XrdSfsPrep
< Prepare parameters
Definition: XrdSfsInterface.hh:168
XrdThrottle::File::stat
virtual int stat(struct stat *buf)
XrdThrottle::File::read
virtual int read(XrdSfsAio *aioparm)
XrdThrottle::FileSystem::m_trace
XrdOucTrace m_trace
Definition: XrdThrottle.hh:286
XrdThrottle::File::pgRead
virtual XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
XrdSfsFileOpenMode
int XrdSfsFileOpenMode
Definition: XrdSfsInterface.hh:127
XrdThrottle::File::checkpoint
virtual int checkpoint(cpAct act, struct iov *range=0, int n=0)
XrdSfsDio
Definition: XrdSfsDio.hh:47
XrdThrottle::File::m_sfs
unique_sfs_ptr m_sfs
Definition: XrdThrottle.hh:125
XrdSecEntity
Definition: XrdSecEntity.hh:64
XrdSfsAio
Definition: XrdSfsAio.hh:59
XrdOucErrInfo
Definition: XrdOucErrInfo.hh:99
XrdThrottle::FileSystem::xtrace
int xtrace(XrdOucStream &Config)
XrdThrottle::File::read
virtual XrdSfsXferSize read(XrdSfsFileOffset fileOffset, char *buffer, XrdSfsXferSize buffer_size)
XrdThrottle::FileSystem::rename
virtual int rename(const char *oldFileName, const char *newFileName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *infoO=0, const char *infoN=0)
XrdThrottle::FileSystem::Configure
virtual int Configure(XrdSysError &, XrdSfsFileSystem *native_fs)
XrdThrottle::File::m_user
std::string m_user
Definition: XrdThrottle.hh:128
XrdOucTrace
Definition: XrdOucTrace.hh:36
XrdThrottle::FileSystem::EnvInfo
virtual void EnvInfo(XrdOucEnv *envP)
XrdThrottle::File::close
virtual int close()
XrdSysError
Definition: XrdSysError.hh:90
XrdThrottle::FileSystem::chksum
virtual int chksum(csFunc Func, const char *csName, const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)
XrdSfsFileSystem::gpfFunc
gpfFunc
Definition: XrdSfsInterface.hh:1126
XrdThrottle::File::open
virtual int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client, const char *opaque=0)
XrdSysError.hh
XrdThrottle::FileSystem::Connect
virtual void Connect(const XrdSecEntity *client=0)
XrdThrottle::File::m_eroute
XrdSysError & m_eroute
Definition: XrdThrottle.hh:130