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 
125  bool m_is_open{false};
126  unique_sfs_ptr m_sfs;
127  int m_uid; // A unique identifier for this user; has no meaning except for the fairshare.
128  std::string m_loadshed;
129  std::string m_connection_id; // Identity for the connection; may or may authenticated
130  std::string m_user;
131  XrdThrottleManager &m_throttle;
132  XrdSysError &m_eroute;
133 };
134 
136 {
137 
139 
140 public:
141 
142  virtual XrdSfsDirectory *
143  newDir(char *user=0, int monid=0);
144 
145  virtual XrdSfsFile *
146  newFile(char *user=0, int monid=0);
147 
148  virtual int
149  chksum( csFunc Func,
150  const char *csName,
151  const char *path,
152  XrdOucErrInfo &eInfo,
153  const XrdSecEntity *client = 0,
154  const char *opaque = 0);
155 
156  virtual int
157  chmod(const char *Name,
159  XrdOucErrInfo &out_error,
160  const XrdSecEntity *client,
161  const char *opaque = 0);
162 
163  virtual void
164  Connect(const XrdSecEntity *client = 0);
165 
166  virtual void
167  Disc(const XrdSecEntity *client = 0);
168 
169  virtual void
171 
172  virtual int
173  exists(const char *fileName,
174  XrdSfsFileExistence &exists_flag,
175  XrdOucErrInfo &out_error,
176  const XrdSecEntity *client,
177  const char *opaque = 0);
178 
179  virtual int
180  FAttr( XrdSfsFACtl *faReq,
181  XrdOucErrInfo &eInfo,
182  const XrdSecEntity *client = 0);
183 
184 
185  virtual uint64_t
186  Features();
187 
188  virtual int
189  fsctl(const int cmd,
190  const char *args,
191  XrdOucErrInfo &out_error,
192  const XrdSecEntity *client);
193 
194  virtual int
195  getChkPSize();
196 
197  virtual int
198  getStats(char *buff, int blen);
199 
200  virtual const char *
201  getVersion();
202 
203  virtual int
204  gpFile( gpfFunc &gpAct,
205  XrdSfsGPFile &gpReq,
206  XrdOucErrInfo &eInfo,
207  const XrdSecEntity *client = 0);
208 
209  virtual int
210  mkdir(const char *dirName,
212  XrdOucErrInfo &out_error,
213  const XrdSecEntity *client,
214  const char *opaque = 0);
215 
216  virtual int
217  prepare( XrdSfsPrep &pargs,
218  XrdOucErrInfo &out_error,
219  const XrdSecEntity *client = 0);
220 
221  virtual int
222  rem(const char *path,
223  XrdOucErrInfo &out_error,
224  const XrdSecEntity *client,
225  const char *info = 0);
226 
227  virtual int
228  remdir(const char *dirName,
229  XrdOucErrInfo &out_error,
230  const XrdSecEntity *client,
231  const char *info = 0);
232 
233  virtual int
234  rename(const char *oldFileName,
235  const char *newFileName,
236  XrdOucErrInfo &out_error,
237  const XrdSecEntity *client,
238  const char *infoO = 0,
239  const char *infoN = 0);
240 
241  virtual int
242  stat(const char *Name,
243  struct stat *buf,
244  XrdOucErrInfo &out_error,
245  const XrdSecEntity *client,
246  const char *opaque = 0);
247 
248  virtual int
249  stat(const char *Name,
250  mode_t &mode,
251  XrdOucErrInfo &out_error,
252  const XrdSecEntity *client,
253  const char *opaque = 0);
254 
255  virtual int
256  truncate(const char *Name,
257  XrdSfsFileOffset fileOffset,
258  XrdOucErrInfo &out_error,
259  const XrdSecEntity *client = 0,
260  const char *opaque = 0);
261 
262  virtual int
264 
265 private:
266  static void
267  Initialize( FileSystem *&fs,
268  XrdSfsFileSystem *native_fs,
269  XrdSysLogger *lp,
270  const char *config_file,
271  XrdOucEnv *envP);
272 
273  FileSystem();
274 
275  virtual
276  ~FileSystem();
277 
278  int
279  xthrottle(XrdOucStream &Config);
280 
281  int
282  xloadshed(XrdOucStream &Config);
283 
284  int
285  xtrace(XrdOucStream &Config);
286 
287  int
288  xmaxopen(XrdOucStream &Config);
289 
290  int
291  xmaxconn(XrdOucStream &Config);
292 
293  static FileSystem *m_instance;
294  XrdSysError m_eroute;
295  XrdOucTrace m_trace;
296  std::string m_config_file;
297  XrdSfsFileSystem *m_sfs_ptr;
298  bool m_initialized;
299  XrdThrottleManager m_throttle;
300  XrdVersionInfo *myVersion;
301 
302 };
303 
304 }
305 
306 #endif
307 
int Mode
XrdOucString File
struct myOpts opts
int XrdSfsMode
XrdSfsFileExistence
int XrdSfsFileOpenMode
long long XrdSfsFileOffset
int XrdSfsXferSize
< Prepare parameters
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
virtual XrdSfsFile * newFile(char *user=0, int monid=0)
virtual int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
virtual int Configure(XrdSysError &, XrdSfsFileSystem *native_fs, XrdOucEnv *envP)
virtual int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecEntity *client)
virtual void Connect(const XrdSecEntity *client=0)
virtual int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
virtual XrdSfsDirectory * newDir(char *user=0, int monid=0)
virtual int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
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 exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
virtual int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
virtual const char * getVersion()
virtual int gpFile(gpfFunc &gpAct, XrdSfsGPFile &gpReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
virtual void Disc(const XrdSecEntity *client=0)
friend XrdSfsFileSystem * XrdSfsGetFileSystem_Internal(XrdSfsFileSystem *, XrdSysLogger *, const char *, XrdOucEnv *)
virtual int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
virtual int getStats(char *buff, int blen)
virtual int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
virtual void EnvInfo(XrdOucEnv *envP)
virtual int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
virtual int FAttr(XrdSfsFACtl *faReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
virtual int chksum(csFunc Func, const char *csName, const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)
virtual int truncate(XrdSfsFileOffset fileOffset)
virtual int sync()
virtual XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
virtual XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
virtual const char * FName()
virtual int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client, const char *opaque=0)
virtual int stat(struct stat *buf)
virtual int close()
virtual int SendData(XrdSfsDio *sfDio, XrdSfsFileOffset offset, XrdSfsXferSize size)
virtual int getCXinfo(char cxtype[4], int &cxrsz)
virtual int checkpoint(cpAct act, struct iov *range=0, int n=0)
virtual int getMmap(void **Addr, off_t &Size)
virtual int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize amount)
virtual XrdSfsXferSize pgWrite(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
XrdCmsConfig Config
XrdOucEnv * envP
Definition: XrdPss.cc:109
std::auto_ptr< XrdSfsFile > unique_sfs_ptr
Definition: XrdThrottle.hh:23