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
60  pgRead(XrdSfsFileOffset offset,
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
109  truncate(XrdSfsFileOffset fileOffset);
110 
111  virtual int
112  getCXinfo(char cxtype[4], int &cxrsz);
113 
114  virtual int
115  SendData(XrdSfsDio *sfDio,
116  XrdSfsFileOffset offset,
117  XrdSfsXferSize size);
118 
119 private:
120  File(const char *, unique_sfs_ptr, XrdThrottleManager &, XrdSysError &);
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 
133 class FileSystem : public XrdSfsFileSystem
134 {
135 
136 friend XrdSfsFileSystem * XrdSfsGetFileSystem_Internal(XrdSfsFileSystem *, XrdSysLogger *, const char *);
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
168  EnvInfo(XrdOucEnv *envP);
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
178  FAttr( XrdSfsFACtl *faReq,
179  XrdOucErrInfo &eInfo,
180  const XrdSecEntity *client = 0);
181 
182 
183  virtual uint64_t
184  Features();
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
193  getChkPSize();
194 
195  virtual int
196  getStats(char *buff, int blen);
197 
198  virtual const char *
199  getVersion();
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
215  prepare( XrdSfsPrep &pargs,
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
261  Configure(XrdSysError &, XrdSfsFileSystem *native_fs);
262 
263 private:
264  static void
265  Initialize( FileSystem *&fs,
266  XrdSfsFileSystem *native_fs,
267  XrdSysLogger *lp,
268  const char *config_file);
269 
270  FileSystem();
271 
272  virtual
273  ~FileSystem();
274 
275  int
277 
278  int
280 
281  int
283 
287  std::string m_config_file;
288  XrdSfsFileSystem *m_sfs_ptr;
291  XrdVersionInfo *myVersion;
292 
293 };
294 
295 }
296 
297 #endif
298 
virtual uint64_t Features()
virtual int close()
virtual int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
virtual int getStats(char *buff, int blen)
virtual XrdSfsXferSize pgWrite(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
Definition: XrdThrottleManager.hh:41
virtual XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
virtual int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecEntity *client)
bool m_initialized
Definition: XrdThrottle.hh:289
Definition: XrdOucStream.hh:46
int XrdSfsXferSize
Definition: XrdSfsInterface.hh:129
XrdSfsFileExistence
Definition: XrdSfsInterface.hh:131
XrdSysError & m_eroute
Definition: XrdThrottle.hh:130
virtual int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
virtual int checkpoint(cpAct act, struct iov *range=0, int n=0)
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
virtual int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client, const char *opaque=0)
std::string m_config_file
Definition: XrdThrottle.hh:287
int xtrace(XrdOucStream &Config)
virtual int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
virtual int truncate(XrdSfsFileOffset fileOffset)
virtual void EnvInfo(XrdOucEnv *envP)
Definition: XrdSfsFAttr.hh:72
virtual const char * getVersion()
Definition: XrdOucTrace.hh:35
Definition: XrdSysError.hh:89
friend XrdSfsFileSystem * XrdSfsGetFileSystem_Internal(XrdSfsFileSystem *, XrdSysLogger *, const char *)
XrdThrottleManager & m_throttle
Definition: XrdThrottle.hh:129
Definition: XrdSfsInterface.hh:238
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
static void Initialize(FileSystem *&fs, XrdSfsFileSystem *native_fs, XrdSysLogger *lp, const char *config_file)
Definition: XrdOucIOVec.hh:65
Definition: XrdThrottle.hh:28
long long XrdSfsFileOffset
Definition: XrdSfsInterface.hh:126
virtual int getChkPSize()
XrdCmsConfig Config
XrdOucTrace m_trace
Definition: XrdThrottle.hh:286
virtual XrdSfsDirectory * newDir(char *user=0, int monid=0)
Definition: XrdOucErrInfo.hh:100
int xthrottle(XrdOucStream &Config)
Definition: XrdSfsGPFile.hh:34
std::string m_user
Definition: XrdThrottle.hh:128
virtual int rename(const char *oldFileName, const char *newFileName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *infoO=0, const char *infoN=0)
virtual int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize amount)
Definition: XrdOucEnv.hh:41
XrdSfsFileSystem * m_sfs_ptr
Definition: XrdThrottle.hh:288
XrdThrottleManager m_throttle
Definition: XrdThrottle.hh:290
virtual int sync()
virtual int FAttr(XrdSfsFACtl *faReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
virtual int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
virtual int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
cpAct
Definition: XrdSfsInterface.hh:428
std::auto_ptr< XrdSfsFile > unique_sfs_ptr
Definition: XrdThrottle.hh:23
Definition: XrdSysLogger.hh:52
std::string m_loadshed
Definition: XrdThrottle.hh:127
virtual int gpFile(gpfFunc &gpAct, XrdSfsGPFile &gpReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
virtual int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
virtual int getCXinfo(char cxtype[4], int &cxrsz)
virtual int SendData(XrdSfsDio *sfDio, XrdSfsFileOffset offset, XrdSfsXferSize size)
unique_sfs_ptr m_sfs
Definition: XrdThrottle.hh:125
virtual const char * FName()
int XrdSfsMode
Definition: XrdSfsInterface.hh:128
File(const char *, unique_sfs_ptr, XrdThrottleManager &, XrdSysError &)
virtual int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
virtual void Disc(const XrdSecEntity *client=0)
XrdVersionInfo * myVersion
Definition: XrdThrottle.hh:291
Definition: XrdSfsDio.hh:46
virtual XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
Definition: XrdSecEntity.hh:63
Definition: XrdSfsAio.hh:58
XrdSysError m_eroute
Definition: XrdThrottle.hh:285
Definition: XrdSfsInterface.hh:364
virtual void Connect(const XrdSecEntity *client=0)
< Prepare parameters
Definition: XrdSfsInterface.hh:167
virtual int stat(struct stat *buf)
Definition: XrdThrottle.hh:133
virtual XrdSfsFile * newFile(char *user=0, int monid=0)
int m_uid
Definition: XrdThrottle.hh:126
virtual int Configure(XrdSysError &, XrdSfsFileSystem *native_fs)
int XrdSfsFileOpenMode
Definition: XrdSfsInterface.hh:127
static FileSystem * m_instance
Definition: XrdThrottle.hh:284
virtual int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
virtual int getMmap(void **Addr, off_t &Size)
int xloadshed(XrdOucStream &Config)
Definition: XrdThrottle.hh:18
virtual int chksum(csFunc Func, const char *csName, const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)