xrootd
XrdSfsFAttr.hh
Go to the documentation of this file.
1 #ifndef __SFS_FATTR_H__
2 #define __SFS_FATTR_H__
3 /******************************************************************************/
4 /* */
5 /* X r d S f s F A t t r . h h */
6 /* */
7 /*(c) 2018 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 Deprtment 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 <stdlib.h>
33 
34 //-----------------------------------------------------------------------------
37 //-----------------------------------------------------------------------------
38 
39 /******************************************************************************/
40 /* X r d S f s F A I n f o */
41 /******************************************************************************/
42 
44 {
45 char *Name;
46 char *Value;
47 int VLen;
48 short NLen;
49 int faRC;
50 
51  XrdSfsFAInfo() : Value(0), VLen(0), NLen(0), faRC(0) {}
53 };
54 
55 /******************************************************************************/
56 /* X r d S f s F A B u f f */
57 /******************************************************************************/
58 
60 {
62 int dlen;
63 char data[4];
64 };
65 
66 /******************************************************************************/
67 /* X r d S f s F A C t l */
68 /******************************************************************************/
69 
70 class XrdOucEnv;
71 
73 {
74 const char *path;
75 const char *pcgi;
76 const char *pfnP;
80 char nPfx[2];
81 unsigned short iNum;
82 unsigned char rqst;
83 unsigned char opts;
84 
85 enum RQST:char {faDel = 0, faGet, faLst, faSet, faFence};
86 
87 static const int accChk = 0x01;
88 static const int newAtr = 0x02;
89 static const int xplode = 0x04;
90 static const int retvsz = 0x0c;
91 static const int retval = 0x1c;
92 
93  XrdSfsFACtl(const char *p, const char *opq, int anum)
94  : path(p), pcgi(opq), pfnP(0), info(0), envP(0),
95  fabP(0), iNum(anum), rqst(255), opts(0)
96  {nPfx[0] = 0; nPfx[1] = 0;}
97 
99  while((dP = nP)) {nP = nP->next; free(dP);}
100  if (info) delete [] info;
101  }
102 };
103 #endif
unsigned char opts
Request options (see below)
Definition: XrdSfsFAttr.hh:83
int faRC
Action return code for this element.
Definition: XrdSfsFAttr.hh:49
~XrdSfsFACtl()
Definition: XrdSfsFAttr.hh:98
const char * path
The file path to act on (logical)
Definition: XrdSfsFAttr.hh:74
char * Value
Variable value.
Definition: XrdSfsFAttr.hh:46
const char * pfnP
The file path to act on (physical)
Definition: XrdSfsFAttr.hh:76
char nPfx[2]
The namespace being used.
Definition: XrdSfsFAttr.hh:80
char * Name
Variable name.
Definition: XrdSfsFAttr.hh:45
unsigned short iNum
Number of info entries.
Definition: XrdSfsFAttr.hh:81
Definition: XrdSfsFAttr.hh:85
static const int retval
Above plus return actual attr value.
Definition: XrdSfsFAttr.hh:91
unsigned char rqst
Type of file attribute request (see below)
Definition: XrdSfsFAttr.hh:82
Definition: XrdSfsFAttr.hh:72
Definition: XrdSfsFAttr.hh:85
XrdSfsFABuff * next
Definition: XrdSfsFAttr.hh:61
static const int retvsz
Above plus return size of attr value.
Definition: XrdSfsFAttr.hh:90
XrdSfsFAInfo * info
Pointer to attribute information.
Definition: XrdSfsFAttr.hh:77
short NLen
Length of name not including null byte.
Definition: XrdSfsFAttr.hh:48
XrdSfsFABuff * fabP
-> Additional memory that was allocated
Definition: XrdSfsFAttr.hh:79
static const int accChk
Perform access check.
Definition: XrdSfsFAttr.hh:87
~XrdSfsFAInfo()
Definition: XrdSfsFAttr.hh:52
Definition: XrdOucEnv.hh:41
Definition: XrdSfsFAttr.hh:43
Definition: XrdSfsFAttr.hh:85
XrdSfsFAInfo()
Definition: XrdSfsFAttr.hh:51
Definition: XrdSfsFAttr.hh:59
RQST
Definition: XrdSfsFAttr.hh:85
Definition: XrdSfsFAttr.hh:85
static const int xplode
Construct an info vec from faList.
Definition: XrdSfsFAttr.hh:89
XrdSfsFACtl(const char *p, const char *opq, int anum)
Definition: XrdSfsFAttr.hh:93
static const int newAtr
For set the attribute must not exist.
Definition: XrdSfsFAttr.hh:88
int dlen
Data Length in subsequent buffer.
Definition: XrdSfsFAttr.hh:62
Definition: XrdSfsFAttr.hh:85
int VLen
Variable value length (aligned)
Definition: XrdSfsFAttr.hh:47
XrdOucEnv * envP
Optional environmental information.
Definition: XrdSfsFAttr.hh:78
char data[4]
Start of data.
Definition: XrdSfsFAttr.hh:63
const char * pcgi
Opaque information (null if none)
Definition: XrdSfsFAttr.hh:75