XRootD
Loading...
Searching...
No Matches
XrdOfs.hh
Go to the documentation of this file.
1#ifndef __OFS_API_H__
2#define __OFS_API_H__
3/******************************************************************************/
4/* */
5/* X r d O f s . h h */
6/* */
7/* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */
8/* Produced by Andrew Hanushevsky for Stanford University under contract */
9/* DE-AC02-76-SFO0515 with the Department of Energy */
10/* */
11/* This file is part of the XRootD software suite. */
12/* */
13/* XRootD is free software: you can redistribute it and/or modify it under */
14/* the terms of the GNU Lesser General Public License as published by the */
15/* Free Software Foundation, either version 3 of the License, or (at your */
16/* option) any later version. */
17/* */
18/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
19/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
20/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
21/* License for more details. */
22/* */
23/* You should have received a copy of the GNU Lesser General Public License */
24/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
25/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
26/* */
27/* The copyright holder's institutional names and contributor's names may not */
28/* be used to endorse or promote products derived from this software without */
29/* specific prior written permission of the institution or contributor. */
30/******************************************************************************/
31
32#include <cstring>
33#include <dirent.h>
34#include <sys/types.h>
35
36#include "XrdOfs/XrdOfsEvr.hh"
41
42class XrdNetIF;
43class XrdOfsEvs;
44class XrdOfsPocq;
45class XrdOfsPrepare;
46class XrdOss;
47class XrdOssDF;
48class XrdOssDir;
49class XrdOucEnv;
51class XrdSysError;
52class XrdSysLogger;
53class XrdOucStream;
54class XrdSfsAio;
55
56struct XrdVersionInfo;
57
58/******************************************************************************/
59/* X r d O f s D i r e c t o r y */
60/******************************************************************************/
61
63{
64public:
65
66 int open(const char *dirName,
67 const XrdSecEntity *client,
68 const char *opaque = 0);
69
70 const char *nextEntry();
71
72 int close();
73
74inline void copyError(XrdOucErrInfo &einfo) {einfo = error;}
75
76const char *FName() {return (const char *)fname;}
77
78 int autoStat(struct stat *buf);
79
80 XrdOfsDirectory(XrdOucErrInfo &eInfo, const char *user)
81 : XrdSfsDirectory(eInfo), tident(user ? user : ""),
82 fname(0), dp(0), atEOF(0) {}
83
84virtual ~XrdOfsDirectory() {if (dp) close();}
85
86protected:
87const char *tident;
88char *fname;
91char dname[MAXNAMLEN];
92};
93
95{
96public:
97 XrdOfsDirFull(const char *user, int MonID)
98 : XrdOfsDirectory(myEInfo, user), myEInfo(user, MonID)
99 {}
100
101virtual ~XrdOfsDirFull() {}
102
103private:
104XrdOucErrInfo myEInfo; // Accessible only by reference error
105};
106
107/******************************************************************************/
108/* X r d O f s F i l e */
109/******************************************************************************/
110
111class XrdOfsTPC;
112class XrdOucChkPnt;
113
114class XrdOfsFile : public XrdSfsFile
115{
116public:
117
118 int open(const char *fileName,
119 XrdSfsFileOpenMode openMode,
120 mode_t createMode,
121 const XrdSecEntity *client,
122 const char *opaque = 0);
123
125 struct iov *range=0, int n=0);
126
127 int close();
128
129 using XrdSfsFile::fctl;
130
131 int fctl(const int cmd,
132 const char *args,
133 XrdOucErrInfo &out_error);
134
135 int fctl(const int cmd,
136 int alen,
137 const char *args,
138 const XrdSecEntity *client = 0);
139
140 const char *FName() {return (oh ? oh->Name() : "?");}
141
142 int getMmap(void **Addr, off_t &Size);
143
145 char *buffer,
146 XrdSfsXferSize rdlen,
147 uint32_t *csvec,
148 uint64_t opts=0);
149
150 int pgRead(XrdSfsAio *aioparm, uint64_t opts=0);
151
152
154 char *buffer,
155 XrdSfsXferSize wrlen,
156 uint32_t *csvec,
157 uint64_t opts=0);
158
159 int pgWrite(XrdSfsAio *aioparm, uint64_t opts=0);
160
161
162 int read(XrdSfsFileOffset fileOffset, // Preread only
163 XrdSfsXferSize amount);
164
166 char *buffer,
167 XrdSfsXferSize buffer_size);
168
170 int readCount);
171
172 int read(XrdSfsAio *aioparm);
173
175 const char *buffer,
176 XrdSfsXferSize buffer_size);
177
178 int write(XrdSfsAio *aioparm);
179
180 int sync();
181
182 int sync(XrdSfsAio *aiop);
183
184 int stat(struct stat *buf);
185
186 int truncate(XrdSfsFileOffset fileOffset);
187
188 int getCXinfo(char cxtype[4], int &cxrsz);
189
190 XrdOfsFile(XrdOucErrInfo &eInfo, const char *user);
191
192 ~XrdOfsFile() {viaDel = 1; if (oh) close();}
193
194inline static bool ocFsync = false;
195
196protected:
197
198const char *tident;
205
206private:
207
208void GenFWEvent();
209int CreateCKP();
210};
211
213{
214public:
215 XrdOfsFileFull(const char *user, int MonID)
216 : XrdOfsFile(myEInfo, user), myEInfo(user, MonID)
217 {}
218
219virtual ~XrdOfsFileFull() {}
220
221private:
222XrdOucErrInfo myEInfo; // Accessible only by reference error
223};
224
225/******************************************************************************/
226/* C l a s s X r d O f s */
227/******************************************************************************/
228
229class XrdAccAuthorize;
230class XrdCks;
231class XrdCmsClient;
232class XrdOfsConfigPI;
233class XrdOfsFSctl_PI;
234class XrdOfsPoscq;
235struct XrdSfsFACtl;
236
238{
239friend class XrdOfsDirectory;
240friend class XrdOfsFile;
241
242public:
243
244// Object allocation
245//
246 XrdSfsDirectory *newDir(char *user=0, int MonID=0)
247 {return new XrdOfsDirFull(user, MonID);}
248
250 {return new XrdOfsDirectory(eInfo, eInfo.getErrUser());}
251
252 XrdSfsFile *newFile(char *user=0,int MonID=0)
253 {return new XrdOfsFileFull(user, MonID);}
254
256 {return new XrdOfsFile(eInfo, eInfo.getErrUser());}
257
258// Other functions
259//
260 int chksum( csFunc Func,
261 const char *csName,
262 const char *Path,
263 XrdOucErrInfo &out_error,
264 const XrdSecEntity *client = 0,
265 const char *opaque = 0);
266
267 int chmod(const char *Name,
269 XrdOucErrInfo &out_error,
270 const XrdSecEntity *client,
271 const char *opaque = 0);
272
273 void Connect(const XrdSecEntity *client = 0);
274
275 void Disc(const XrdSecEntity *client = 0);
276
277 int exists(const char *fileName,
278 XrdSfsFileExistence &exists_flag,
279 XrdOucErrInfo &out_error,
280 const XrdSecEntity *client,
281 const char *opaque = 0);
282
283 int FAttr( XrdSfsFACtl *faReq,
284 XrdOucErrInfo &eInfo,
285 const XrdSecEntity *client = 0);
286
287 int FSctl(const int cmd,
288 XrdSfsFSctl &args,
289 XrdOucErrInfo &eInfo,
290 const XrdSecEntity *client = 0);
291
292 int fsctl(const int cmd,
293 const char *args,
294 XrdOucErrInfo &out_error,
295 const XrdSecEntity *client = 0);
296
297 int getStats(char *buff, int blen);
298
299const char *getVersion();
300
301 int mkdir(const char *dirName,
303 XrdOucErrInfo &out_error,
304 const XrdSecEntity *client,
305 const char *opaque = 0);
306
307 int prepare( XrdSfsPrep &pargs,
308 XrdOucErrInfo &out_error,
309 const XrdSecEntity *client = 0);
310
311 int rem(const char *path,
312 XrdOucErrInfo &out_error,
313 const XrdSecEntity *client,
314 const char *info = 0)
315 {return remove('f', path, out_error, client, info);}
316
317 int remdir(const char *dirName,
318 XrdOucErrInfo &out_error,
319 const XrdSecEntity *client,
320 const char *info = 0)
321 {return remove('d',dirName,out_error,client,info);}
322
323 int rename(const char *oldFileName,
324 const char *newFileName,
325 XrdOucErrInfo &out_error,
326 const XrdSecEntity *client,
327 const char *infoO = 0,
328 const char *infoN = 0);
329
330 int stat(const char *Name,
331 struct stat *buf,
332 XrdOucErrInfo &out_error,
333 const XrdSecEntity *client,
334 const char *opaque = 0);
335
336 int stat(const char *Name,
337 mode_t &mode,
338 XrdOucErrInfo &out_error,
339 const XrdSecEntity *client,
340 const char *opaque = 0);
341
342 int truncate(const char *Name,
343 XrdSfsFileOffset fileOffset,
344 XrdOucErrInfo &out_error,
345 const XrdSecEntity *client = 0,
346 const char *opaque = 0);
347// Management functions
348//
349virtual int Configure(XrdSysError &); // Backward Compatibility
350
351virtual int Configure(XrdSysError &, XrdOucEnv *);
352
354
356
357 XrdOfs();
358virtual ~XrdOfs() {} // Too complicate to delete :-)
359
360/******************************************************************************/
361/* C o n f i g u r a t i o n V a l u e s */
362/******************************************************************************/
363
364// Configuration values for this filesystem
365//
366enum {Authorize = 0x0001, // Authorization wanted
367 XAttrPlug = 0x0002, // Extended Attribute Plugin
368 isPeer = 0x0050, // Role peer
369 isProxy = 0x0020, // Role proxy
370 isManager = 0x0040, // Role manager
371 isServer = 0x0080, // Role server
372 isSuper = 0x00C0, // Role supervisor
373 isMeta = 0x0100, // Role meta + above
374 haveRole = 0x01F0, // A role is present
375 Forwarding= 0x1000, // Fowarding wanted
376 ThirdPC = 0x2000, // This party copy wanted
377 SubCluster= 0x4000, // all.subcluster directive encountered
378 RdrTPC = 0x8000
379 }; // These are set in Options below
380
381int Options; // Various options
382int myPort; // Port number being used
383
384// Directory and file creation mode controls
385//
386mode_t dMask[2]; // Min/Max directory mode
387mode_t fMask[2]; // Min/Max file mode
388
389// TPC related things
390//
391char *tpcRdrHost[2]; // TPC redirect target or null if none
392int tpcRdrPort[2]; // TPC redirect target port number
393
394// Networking
395//
397
398// Forward options
399//
400struct fwdOpt
401 {const char *Cmd;
402 char *Host;
403 int Port;
404 void Reset() {Cmd = 0; Port = 0;
405 if (Host) {free(Host); Host = 0;}
406 }
407 fwdOpt() : Cmd(0), Host(0), Port(0) {}
409 };
410
418
419static int MaxDelay; // Max delay imposed during staging
420static int OSSDelay; // Delay to impose when oss interface times out
421
422char *ConfigFN; // ->Configuration filename
423
424/******************************************************************************/
425/* P r o t e c t e d I t e m s */
426/******************************************************************************/
427
428protected:
429
430XrdOfsEvr evrObject; // Event receiver
431XrdCmsClient *Finder; // ->Cluster Management Service
432
433virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &);
434static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
435 XrdOfsHandle *hP);
436static int Emsg(const char *, XrdOucErrInfo &, int, const char *x,
437 const char *y="");
438static int fsError(XrdOucErrInfo &myError, int rc);
439const char *Split(const char *Args, const char **Opq, char *Path, int Plen);
440 int Stall(XrdOucErrInfo &, int, const char *);
441 void Unpersist(XrdOfsHandle *hP, int xcev=1);
442 char *WaitTime(int, char *, int);
443
444/******************************************************************************/
445/* P r i v a t e C o n f i g u r a t i o n */
446/******************************************************************************/
447
448private:
449
450char *myRole;
451XrdOfsFSctl_PI *FSctl_PC; // ->FSctl plugin (cache specific)
452XrdOfsFSctl_PI *FSctl_PI; // ->FSctl plugin
453XrdAccAuthorize *Authorization; // ->Authorization Service
454XrdCmsClient *Balancer; // ->Cluster Local Interface
455XrdOfsEvs *evsObject; // ->Event Notifier
456XrdOucPListAnchor*ossRPList; // ->Oss exoprt list
457
458XrdOfsPoscq *poscQ; // -> poscQ if persist on close enabled
459char *poscLog; // -> Directory for posc recovery log
460int poscHold; // Seconds to hold a forced close
461short poscSync; // Number of requests before sync
462signed char poscAuto; // 1 -> Automatic persist on close
463
464char ossRW; // The oss r/w capability
465
466XrdOfsConfigPI *ofsConfig; // Plugin configurator
467XrdOfsPrepare *prepHandler; // Plugin prepare
468XrdCks *Cks; // Checksum manager
469bool CksPfn; // Checksum needs a pfn
470bool CksRdr; // Checksum may be redirected (i.e. not local)
471bool prepAuth; // Prepare requires authorization
472char OssIsProxy; // !0 if we detect the oss plugin is a proxy
473char myRType[4]; // Role type for consistency with the cms
474
475uint64_t ossFeatures; // The oss features
476
477int usxMaxNsz; // Maximum length of attribute name
478int usxMaxVsz; // Maximum length of attribute value
479
480static XrdOfsHandle *dummyHandle;
481XrdSysMutex ocMutex; // Global mutex for open/close
482
483bool DirRdr; // Opendir() can be redirected.
484bool reProxy; // Reproxying required for TPC
485bool OssHasPGrw; // True: oss implements full rgRead/Write
486
487/******************************************************************************/
488/* O t h e r D a t a */
489/******************************************************************************/
490
491// Internal file attribute methods
492//
493int ctlFADel(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
494int ctlFAGet(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
495int ctlFALst(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
496int ctlFASet(XrdSfsFACtl &faCtl, XrdOucEnv &faEnv, XrdOucErrInfo &einfo);
497
498// Common functions
499//
500int remove(const char type, const char *path, XrdOucErrInfo &out_error,
501 const XrdSecEntity *client, const char *opaque);
502
503// Function used during Configuration
504//
505int ConfigDispFwd(char *buff, struct fwdOpt &Fwd);
506int ConfigPosc(XrdSysError &Eroute);
507int ConfigRedir(XrdSysError &Eroute, XrdOucEnv *EnvInfo);
508int ConfigTPC(XrdSysError &Eroute, XrdOucEnv *EnvInfo);
509int ConfigTPC(XrdSysError &Eroute);
510char *ConfigTPCDir(XrdSysError &Eroute, const char *sfx,
511 const char *xPath=0);
512const char *Fname(const char *);
513int Forward(int &Result, XrdOucErrInfo &Resp, struct fwdOpt &Fwd,
514 const char *arg1=0, const char *arg2=0,
515 XrdOucEnv *Env1=0, XrdOucEnv *Env2=0);
516int FSctl(XrdOfsFile &file, int cmd, int alen, const char *args,
517 const XrdSecEntity *client);
518int Reformat(XrdOucErrInfo &);
519const char *theRole(int opts);
520int xcrds(XrdOucStream &, XrdSysError &);
521int xcrm(XrdOucStream &, XrdSysError &);
522int xdirl(XrdOucStream &, XrdSysError &);
523int xexp(XrdOucStream &, XrdSysError &, bool);
524int xforward(XrdOucStream &, XrdSysError &);
525int xmaxd(XrdOucStream &, XrdSysError &);
526int xnmsg(XrdOucStream &, XrdSysError &);
527int xnot(XrdOucStream &, XrdSysError &);
528int xpers(XrdOucStream &, XrdSysError &);
529int xrole(XrdOucStream &, XrdSysError &);
530int xtpc(XrdOucStream &, XrdSysError &);
531int xtpcal(XrdOucStream &, XrdSysError &);
532int xtpcr(XrdOucStream &, XrdSysError &);
533int xtrace(XrdOucStream &, XrdSysError &);
534int xatr(XrdOucStream &, XrdSysError &);
535};
536#endif
static void prepare()
#define write(a, b, c)
Definition XrdPosix.hh:115
#define mkdir(a, b)
Definition XrdPosix.hh:74
#define open
Definition XrdPosix.hh:76
#define readv(a, b, c)
Definition XrdPosix.hh:84
#define stat(a, b)
Definition XrdPosix.hh:101
#define rename(a, b)
Definition XrdPosix.hh:92
#define truncate(a, b)
Definition XrdPosix.hh:111
#define read(a, b, c)
Definition XrdPosix.hh:82
int Mode
XrdOucString Path
struct myOpts opts
int XrdSfsMode
XrdSfsFileExistence
int XrdSfsFileOpenMode
long long XrdSfsFileOffset
int XrdSfsXferSize
< Prepare parameters
< SFS_FSCTL_PLUGIN/PLUGIO/PLUGXC parms
virtual ~XrdOfsDirFull()
Definition XrdOfs.hh:101
XrdOfsDirFull(const char *user, int MonID)
Definition XrdOfs.hh:97
XrdOfsDirectory(XrdOucErrInfo &eInfo, const char *user)
Definition XrdOfs.hh:80
char dname[MAXNAMLEN]
Definition XrdOfs.hh:91
virtual ~XrdOfsDirectory()
Definition XrdOfs.hh:84
const char * FName()
Definition XrdOfs.hh:76
const char * nextEntry()
Definition XrdOfs.cc:299
void copyError(XrdOucErrInfo &einfo)
Definition XrdOfs.hh:74
const char * tident
Definition XrdOfs.hh:87
int autoStat(struct stat *buf)
Definition XrdOfs.cc:402
char * fname
Definition XrdOfs.hh:88
XrdOssDF * dp
Definition XrdOfs.hh:89
XrdOfsFileFull(const char *user, int MonID)
Definition XrdOfs.hh:215
virtual ~XrdOfsFileFull()
Definition XrdOfs.hh:219
XrdOfsFile(XrdOucErrInfo &eInfo, const char *user)
Definition XrdOfs.cc:442
int getCXinfo(char cxtype[4], int &cxrsz)
Definition XrdOfs.cc:1736
int checkpoint(XrdSfsFile::cpAct act, struct iov *range=0, int n=0)
Definition XrdOfs.cc:915
XrdSfsXferSize pgWrite(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize wrlen, uint32_t *csvec, uint64_t opts=0)
Definition XrdOfs.cc:1192
static bool ocFsync
Definition XrdOfs.hh:194
const char * FName()
Definition XrdOfs.hh:140
int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
Definition XrdOfs.cc:1045
XrdSfsXferSize pgRead(XrdSfsFileOffset offset, char *buffer, XrdSfsXferSize rdlen, uint32_t *csvec, uint64_t opts=0)
Definition XrdOfs.cc:1096
int getMmap(void **Addr, off_t &Size)
Definition XrdOfs.cc:1579
int close()
Definition XrdOfs.cc:804
char viaDel
Definition XrdOfs.hh:203
~XrdOfsFile()
Definition XrdOfs.hh:192
const char * tident
Definition XrdOfs.hh:198
int sync()
Definition XrdOfs.cc:1628
XrdOfsHandle * oh
Definition XrdOfs.hh:199
int dorawio
Definition XrdOfs.hh:202
XrdOucChkPnt * myCKP
Definition XrdOfs.hh:201
bool ckpBad
Definition XrdOfs.hh:204
XrdOfsTPC * myTPC
Definition XrdOfs.hh:200
void Connect(const XrdSecEntity *client=0)
Definition XrdOfs.cc:1966
int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
Definition XrdOfs.cc:1898
struct fwdOpt fwdTRUNC
Definition XrdOfs.hh:417
void Disc(const XrdSecEntity *client=0)
Definition XrdOfs.cc:1979
mode_t dMask[2]
Definition XrdOfs.hh:386
const char * Split(const char *Args, const char **Opq, char *Path, int Plen)
Definition XrdOfs.cc:2690
int myPort
Definition XrdOfs.hh:382
XrdCmsClient * Finder
Definition XrdOfs.hh:431
mode_t fMask[2]
Definition XrdOfs.hh:387
int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition XrdOfs.hh:311
char * WaitTime(int, char *, int)
Definition XrdOfs.cc:2786
struct fwdOpt fwdRMDIR
Definition XrdOfs.hh:416
XrdOfsEvr evrObject
Definition XrdOfs.hh:430
XrdSfsDirectory * newDir(XrdOucErrInfo &eInfo)
Definition XrdOfs.hh:249
static int OSSDelay
Definition XrdOfs.hh:420
char * ConfigFN
Definition XrdOfs.hh:422
int tpcRdrPort[2]
Definition XrdOfs.hh:392
XrdSfsDirectory * newDir(char *user=0, int MonID=0)
Definition XrdOfs.hh:246
int FAttr(XrdSfsFACtl *faReq, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition XrdOfs.hh:317
friend class XrdOfsDirectory
Definition XrdOfs.hh:239
virtual int Configure(XrdSysError &)
struct fwdOpt fwdMKPATH
Definition XrdOfs.hh:413
void Config_Cluster(XrdOss *)
int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
void Config_Display(XrdSysError &)
XrdOfs()
Definition XrdOfs.cc:169
virtual ~XrdOfs()
Definition XrdOfs.hh:358
char * tpcRdrHost[2]
Definition XrdOfs.hh:391
int chksum(csFunc Func, const char *csName, const char *Path, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
Definition XrdOfs.cc:1787
int Options
Definition XrdOfs.hh:381
struct fwdOpt fwdMKDIR
Definition XrdOfs.hh:412
static int MaxDelay
Definition XrdOfs.hh:419
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, XrdOfsHandle *hP)
Definition XrdOfs.cc:2518
struct fwdOpt fwdMV
Definition XrdOfs.hh:414
XrdNetIF * myIF
Definition XrdOfs.hh:396
static int fsError(XrdOucErrInfo &myError, int rc)
Definition XrdOfs.cc:2633
friend class XrdOfsFile
Definition XrdOfs.hh:240
int FSctl(const int cmd, XrdSfsFSctl &args, XrdOucErrInfo &eInfo, const XrdSecEntity *client=0)
XrdSfsFile * newFile(char *user=0, int MonID=0)
Definition XrdOfs.hh:252
const char * getVersion()
struct fwdOpt fwdRM
Definition XrdOfs.hh:415
XrdSfsFile * newFile(XrdOucErrInfo &eInfo)
Definition XrdOfs.hh:255
virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &)
int getStats(char *buff, int blen)
Definition XrdOfs.cc:2055
struct fwdOpt fwdCHMOD
Definition XrdOfs.hh:411
int Stall(XrdOucErrInfo &, int, const char *)
Definition XrdOfs.cc:2707
@ isProxy
Definition XrdOfs.hh:369
@ haveRole
Definition XrdOfs.hh:374
@ RdrTPC
Definition XrdOfs.hh:378
@ ThirdPC
Definition XrdOfs.hh:376
@ isMeta
Definition XrdOfs.hh:373
@ SubCluster
Definition XrdOfs.hh:377
@ isManager
Definition XrdOfs.hh:370
@ isPeer
Definition XrdOfs.hh:368
@ XAttrPlug
Definition XrdOfs.hh:367
@ isSuper
Definition XrdOfs.hh:372
@ isServer
Definition XrdOfs.hh:371
@ Authorize
Definition XrdOfs.hh:366
@ Forwarding
Definition XrdOfs.hh:375
int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
Definition XrdOfs.cc:1992
void Unpersist(XrdOfsHandle *hP, int xcev=1)
Definition XrdOfs.cc:2743
const char * getErrUser()
XrdSfsDirectory(const char *user=0, int MonID=0)
XrdOucErrInfo & error
XrdSfsFileSystem()
Constructor and Destructor.
virtual void EnvInfo(XrdOucEnv *envP)
XrdSfsFile(const char *user=0, int MonID=0)
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
const char * Cmd
Definition XrdOfs.hh:401
char * Host
Definition XrdOfs.hh:402
void Reset()
Definition XrdOfs.hh:404