xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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  using XrdSfsFile::fctl;
45  virtual int
46  fctl(const int cmd,
47  const char *args,
48  XrdOucErrInfo &out_error);
49 
50  virtual const char *
51  FName();
52 
53  virtual int
54  getMmap(void **Addr, off_t &Size);
55 
56  virtual int
57  read(XrdSfsFileOffset fileOffset, // Preread only
58  XrdSfsXferSize amount);
59 
60  virtual XrdSfsXferSize
61  read(XrdSfsFileOffset fileOffset,
62  char *buffer,
63  XrdSfsXferSize buffer_size);
64 
65  virtual int
66  read(XrdSfsAio *aioparm);
67 
68  virtual XrdSfsXferSize
69  write(XrdSfsFileOffset fileOffset,
70  const char *buffer,
71  XrdSfsXferSize buffer_size);
72 
73  virtual int
74  write(XrdSfsAio *aioparm);
75 
76  virtual int
77  sync();
78 
79  virtual int
80  sync(XrdSfsAio *aiop);
81 
82  virtual int
83  stat(struct stat *buf);
84 
85  virtual int
86  truncate(XrdSfsFileOffset fileOffset);
87 
88  virtual int
89  getCXinfo(char cxtype[4], int &cxrsz);
90 
91  virtual int
92  SendData(XrdSfsDio *sfDio,
93  XrdSfsFileOffset offset,
94  XrdSfsXferSize size);
95 
96 private:
97  File(const char *user, int monid, unique_sfs_ptr, XrdThrottleManager &throttle, XrdSysError &eroute);
98 
99  virtual
100  ~File();
101 
103  int m_uid; // A unique identifier for this user; has no meaning except for the fairshare.
104  std::string m_loadshed;
105  std::string m_user;
108 };
109 
110 class FileSystem : public XrdSfsFileSystem
111 {
112 
113 friend XrdSfsFileSystem * XrdSfsGetFileSystem_Internal(XrdSfsFileSystem *, XrdSysLogger *, const char *);
114 
115 public:
116 
117  virtual XrdSfsDirectory *
118  newDir(char *user=0, int monid=0);
119 
120  virtual XrdSfsFile *
121  newFile(char *user=0, int monid=0);
122 
123  virtual int
124  chksum( csFunc Func,
125  const char *csName,
126  const char *path,
127  XrdOucErrInfo &eInfo,
128  const XrdSecEntity *client = 0,
129  const char *opaque = 0);
130 
131  virtual int
132  chmod(const char *Name,
133  XrdSfsMode Mode,
134  XrdOucErrInfo &out_error,
135  const XrdSecEntity *client,
136  const char *opaque = 0);
137 
138  virtual void
139  Disc(const XrdSecEntity *client = 0);
140 
141  virtual void
142  EnvInfo(XrdOucEnv *envP);
143 
144  virtual int
145  exists(const char *fileName,
146  XrdSfsFileExistence &exists_flag,
147  XrdOucErrInfo &out_error,
148  const XrdSecEntity *client,
149  const char *opaque = 0);
150 
151  virtual int
152  fsctl(const int cmd,
153  const char *args,
154  XrdOucErrInfo &out_error,
155  const XrdSecEntity *client);
156 
157  virtual int
158  getStats(char *buff, int blen);
159 
160  virtual const char *
161  getVersion();
162 
163  virtual int
164  mkdir(const char *dirName,
165  XrdSfsMode Mode,
166  XrdOucErrInfo &out_error,
167  const XrdSecEntity *client,
168  const char *opaque = 0);
169 
170  virtual int
171  prepare( XrdSfsPrep &pargs,
172  XrdOucErrInfo &out_error,
173  const XrdSecEntity *client = 0);
174 
175  virtual int
176  rem(const char *path,
177  XrdOucErrInfo &out_error,
178  const XrdSecEntity *client,
179  const char *info = 0);
180 
181  virtual int
182  remdir(const char *dirName,
183  XrdOucErrInfo &out_error,
184  const XrdSecEntity *client,
185  const char *info = 0);
186 
187  virtual int
188  rename(const char *oldFileName,
189  const char *newFileName,
190  XrdOucErrInfo &out_error,
191  const XrdSecEntity *client,
192  const char *infoO = 0,
193  const char *infoN = 0);
194 
195  virtual int
196  stat(const char *Name,
197  struct stat *buf,
198  XrdOucErrInfo &out_error,
199  const XrdSecEntity *client,
200  const char *opaque = 0);
201 
202  virtual int
203  stat(const char *Name,
204  mode_t &mode,
205  XrdOucErrInfo &out_error,
206  const XrdSecEntity *client,
207  const char *opaque = 0);
208 
209  virtual int
210  truncate(const char *Name,
211  XrdSfsFileOffset fileOffset,
212  XrdOucErrInfo &out_error,
213  const XrdSecEntity *client = 0,
214  const char *opaque = 0);
215 
216  virtual int
217  Configure(XrdSysError &, XrdSfsFileSystem *native_fs);
218 
219 private:
220  static void
221  Initialize( FileSystem *&fs,
222  XrdSfsFileSystem *native_fs,
223  XrdSysLogger *lp,
224  const char *config_file);
225 
226  FileSystem();
227 
228  virtual
229  ~FileSystem();
230 
231  int
233 
234  int
235  xloadshed(XrdOucStream &Config);
236 
237  int
238  xtrace(XrdOucStream &Config);
239 
243  std::string m_config_file;
244  XrdSfsFileSystem *m_sfs_ptr;
247  XrdVersionInfo *myVersion;
248 
249 };
250 
251 }
252 
253 #endif
254 
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)
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:245
Definition: XrdOucStream.hh:45
int XrdSfsXferSize
Definition: XrdSfsInterface.hh:122
XrdSfsFileExistence
Definition: XrdSfsInterface.hh:124
XrdSysError & m_eroute
Definition: XrdThrottle.hh:107
virtual int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=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:243
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)
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:106
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: XrdThrottle.hh:28
long long XrdSfsFileOffset
Definition: XrdSfsInterface.hh:119
XrdCmsConfig Config
XrdOucTrace m_trace
Definition: XrdThrottle.hh:242
virtual XrdSfsDirectory * newDir(char *user=0, int monid=0)
Definition: XrdOucErrInfo.hh:99
int xthrottle(XrdOucStream &Config)
std::string m_user
Definition: XrdThrottle.hh:105
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:244
XrdThrottleManager m_throttle
Definition: XrdThrottle.hh:246
virtual int sync()
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)
std::auto_ptr< XrdSfsFile > unique_sfs_ptr
Definition: XrdThrottle.hh:23
Definition: XrdSysLogger.hh:52
std::string m_loadshed
Definition: XrdThrottle.hh:104
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:102
virtual const char * FName()
File(const char *user, int monid, unique_sfs_ptr, XrdThrottleManager &throttle, XrdSysError &eroute)
int XrdSfsMode
Definition: XrdSfsInterface.hh:121
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:247
Definition: XrdSfsDio.hh:46
Definition: XrdSecEntity.hh:51
Definition: XrdSfsAio.hh:57
XrdSysError m_eroute
Definition: XrdThrottle.hh:241
&lt; Prepare parameters
Definition: XrdSfsInterface.hh:160
virtual int stat(struct stat *buf)
Definition: XrdThrottle.hh:110
virtual XrdSfsFile * newFile(char *user=0, int monid=0)
int m_uid
Definition: XrdThrottle.hh:103
virtual int Configure(XrdSysError &, XrdSfsFileSystem *native_fs)
int XrdSfsFileOpenMode
Definition: XrdSfsInterface.hh:120
static FileSystem * m_instance
Definition: XrdThrottle.hh:240
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)
virtual int chksum(csFunc Func, const char *csName, const char *path, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0, const char *opaque=0)