XRootD
Loading...
Searching...
No Matches
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"
10
13
14class XrdSysLogger;
15class XrdOucStream;
16
17
18namespace XrdThrottle {
19
20#if __cplusplus >= 201103L
21typedef std::unique_ptr<XrdSfsFile> unique_sfs_ptr;
22#else
23typedef std::auto_ptr<XrdSfsFile> unique_sfs_ptr;
24#endif
25
26class FileSystem;
27
28class File : public XrdSfsFile {
29
30friend class FileSystem;
31
32public:
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
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
119private:
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
140public:
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
170 EnvInfo(XrdOucEnv *envP);
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
263 Configure(XrdSysError &, XrdSfsFileSystem *native_fs, XrdOucEnv *envP);
264
265private:
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
static void prepare()
#define write(a, b, c)
Definition XrdPosix.hh:110
#define mkdir(a, b)
Definition XrdPosix.hh:69
#define open
Definition XrdPosix.hh:71
#define stat(a, b)
Definition XrdPosix.hh:96
#define rename(a, b)
Definition XrdPosix.hh:87
#define truncate(a, b)
Definition XrdPosix.hh:106
#define read(a, b, c)
Definition XrdPosix.hh:77
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 XrdSfsDirectory * newDir(char *user=0, int monid=0)
friend XrdSfsFileSystem * XrdSfsGetFileSystem_Internal(XrdSfsFileSystem *, XrdSysLogger *, const char *, XrdOucEnv *)
virtual int exists(const char *fileName, XrdSfsFileExistence &exists_flag, 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)
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 fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
virtual XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
virtual const char * FName()
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 XrdSfsXferSize pgWrite(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
std::auto_ptr< XrdSfsFile > unique_sfs_ptr