xrootd
XrdSfsNative.hh
Go to the documentation of this file.
1 #ifndef __SFS_NATIVE_H__
2 #define __SFS_NATIVE_H__
3 /******************************************************************************/
4 /* */
5 /* X r d S f s N a t i v e . 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 <sys/types.h>
33 #include <string.h>
34 #include <dirent.h>
35 
37 
38 class XrdSysError;
39 class XrdSysLogger;
40 
41 /******************************************************************************/
42 /* X r d S f s N a t i v e D i r e c t o r y */
43 /******************************************************************************/
44 
46 {
47 public:
48 
49  int open(const char *dirName,
50  const XrdSecClientName *client = 0,
51  const char *opaque = 0);
52 
53  const char *nextEntry();
54 
55  int close();
56 
57 const char *FName() {return (const char *)fname;}
58 
59  XrdSfsNativeDirectory(char *user=0, int monid=0)
60  : XrdSfsDirectory(user, monid)
61  {ateof = 0; fname = 0;
62  dh = (DIR *)0;
63  d_pnt = &dirent_full.d_entry;
64  }
65 
67 private:
68 
69 DIR *dh; // Directory stream handle
70 char ateof;
71 char *fname;
72 
73 struct {struct dirent d_entry;
74  char pad[MAXNAMLEN]; // This is only required for Solaris!
75  } dirent_full;
76 
77 struct dirent *d_pnt;
78 
79 };
80 
81 /******************************************************************************/
82 /* X r d S f s N a t i v e F i l e */
83 /******************************************************************************/
84 
85 class XrdSfsAio;
86 
88 {
89 public:
90 
91  int open(const char *fileName,
92  XrdSfsFileOpenMode openMode,
93  mode_t createMode,
94  const XrdSecClientName *client = 0,
95  const char *opaque = 0);
96 
97  int close();
98 
99  using XrdSfsFile::fctl;
100  int fctl(const int cmd,
101  const char *args,
102  XrdOucErrInfo &out_error);
103 
104  const char *FName() {return fname;}
105 
106  int getMmap(void **Addr, off_t &Size)
107  {if (Addr) Addr = 0; Size = 0; return SFS_OK;}
108 
109  int read(XrdSfsFileOffset fileOffset,
110  XrdSfsXferSize preread_sz) {return SFS_OK;}
111 
113  char *buffer,
114  XrdSfsXferSize buffer_size);
115 
116  int read(XrdSfsAio *aioparm);
117 
119  int readCount);
120 
122  const char *buffer,
123  XrdSfsXferSize buffer_size);
124 
125  int write(XrdSfsAio *aioparm);
126 
127  int sync();
128 
129  int sync(XrdSfsAio *aiop);
130 
131  int stat(struct stat *buf);
132 
133  int truncate(XrdSfsFileOffset fileOffset);
134 
135  int getCXinfo(char cxtype[4], int &cxrsz) {return cxrsz = 0;}
136 
137  XrdSfsNativeFile(char *user=0, int monid=0)
138  : XrdSfsFile(user, monid)
139  {oh = -1; fname = 0;}
141 private:
142 
143 int oh;
144 char *fname;
145 
146 };
147 
148 /******************************************************************************/
149 /* X r d S f s N a t i v e */
150 /******************************************************************************/
151 
152 class XrdSfsNative : public XrdSfsFileSystem
153 {
154 public:
155 
156 // Object Allocation Functions
157 //
158  XrdSfsDirectory *newDir(char *user=0, int monid=0)
159  {return (XrdSfsDirectory *)new XrdSfsNativeDirectory(user,monid);}
160 
161  XrdSfsFile *newFile(char *user=0,int monid=0)
162  {return (XrdSfsFile *)new XrdSfsNativeFile(user,monid);}
163 
164 // Other Functions
165 //
166  int chmod(const char *Name,
167  XrdSfsMode Mode,
168  XrdOucErrInfo &out_error,
169  const XrdSecClientName *client = 0,
170  const char *opaque = 0);
171 
172  int exists(const char *fileName,
173  XrdSfsFileExistence &exists_flag,
174  XrdOucErrInfo &out_error,
175  const XrdSecClientName *client = 0,
176  const char *opaque = 0);
177 
178  int fsctl(const int cmd,
179  const char *args,
180  XrdOucErrInfo &out_error,
181  const XrdSecClientName *client = 0);
182 
183  int getStats(char *buff, int blen) {return 0;}
184 
185 const char *getVersion();
186 
187  int mkdir(const char *dirName,
188  XrdSfsMode Mode,
189  XrdOucErrInfo &out_error,
190  const XrdSecClientName *client = 0,
191  const char *opaque = 0);
192 
193  int prepare( XrdSfsPrep &pargs,
194  XrdOucErrInfo &out_error,
195  const XrdSecClientName *client = 0) {return 0;}
196 
197  int rem(const char *path,
198  XrdOucErrInfo &out_error,
199  const XrdSecClientName *client = 0,
200  const char *opaque = 0);
201 
202  int remdir(const char *dirName,
203  XrdOucErrInfo &out_error,
204  const XrdSecClientName *client = 0,
205  const char *opaque = 0);
206 
207  int rename(const char *oldFileName,
208  const char *newFileName,
209  XrdOucErrInfo &out_error,
210  const XrdSecClientName *client = 0,
211  const char *opaqueO = 0,
212  const char *opaqueN = 0);
213 
214  int stat(const char *Name,
215  struct stat *buf,
216  XrdOucErrInfo &out_error,
217  const XrdSecClientName *client = 0,
218  const char *opaque = 0);
219 
220  int stat(const char *Name,
221  mode_t &mode,
222  XrdOucErrInfo &out_error,
223  const XrdSecClientName *client = 0,
224  const char *opaque = 0)
225  {struct stat bfr;
226  int rc = stat(Name, &bfr, out_error, client);
227  if (!rc) mode = bfr.st_mode;
228  return rc;
229  }
230 
231  int truncate(const char *Name,
232  XrdSfsFileOffset fileOffset,
233  XrdOucErrInfo &out_error,
234  const XrdSecEntity *client = 0,
235  const char *opaque = 0);
236 
237 // Common functions
238 //
239 static int Mkpath(const char *path, mode_t mode,
240  const char *info=0);
241 
242 static int Emsg(const char *, XrdOucErrInfo&, int, const char *x,
243  const char *y="");
244 
246 virtual ~XrdSfsNative() {}
247 
248 private:
249 
251 };
252 #endif
#define XrdSecClientName
Definition: XrdSecEntity.hh:122
int rename(const char *oldFileName, const char *newFileName, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaqueO=0, const char *opaqueN=0)
static int Mkpath(const char *path, mode_t mode, const char *info=0)
char ateof
Definition: XrdSfsNative.hh:70
#define SFS_OK
Definition: XrdSfsInterface.hh:106
XrdSfsNativeFile(char *user=0, int monid=0)
Definition: XrdSfsNative.hh:137
int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
int XrdSfsXferSize
Definition: XrdSfsInterface.hh:129
int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, const char *y="")
XrdSfsFileExistence
Definition: XrdSfsInterface.hh:131
int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
const char * FName()
Definition: XrdSfsNative.hh:57
const char * nextEntry()
const char * getVersion()
XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
XrdSfsNative(XrdSysError *lp)
Definition: XrdSysError.hh:89
int truncate(XrdSfsFileOffset fileOffset)
XrdSfsNativeDirectory(char *user=0, int monid=0)
Definition: XrdSfsNative.hh:59
Definition: XrdSfsInterface.hh:238
XrdSfsXferSize readv(XrdOucIOVec *readV, int readCount)
long long XrdSfsFileOffset
Definition: XrdSfsInterface.hh:126
XrdSfsFile * newFile(char *user=0, int monid=0)
Definition: XrdSfsNative.hh:161
struct dirent * d_pnt
Definition: XrdSfsNative.hh:77
int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecClientName *client=0)
Definition: XrdSfsNative.hh:152
Definition: XrdOucErrInfo.hh:100
int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
Definition: XrdOucIOVec.hh:40
~XrdSfsNativeDirectory()
Definition: XrdSfsNative.hh:66
int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
int getCXinfo(char cxtype[4], int &cxrsz)
Definition: XrdSfsNative.hh:135
int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecClientName *client=0, const char *opaque=0)
Definition: XrdSfsNative.hh:45
struct dirent d_entry
Definition: XrdSfsNative.hh:73
struct XrdSfsNativeDirectory::@131 dirent_full
virtual ~XrdSfsNative()
Definition: XrdSfsNative.hh:246
int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
XrdSfsDirectory * newDir(char *user=0, int monid=0)
Definition: XrdSfsNative.hh:158
const char * FName()
Definition: XrdSfsNative.hh:104
int getStats(char *buff, int blen)
Definition: XrdSfsNative.hh:183
Definition: XrdSysLogger.hh:52
int stat(const char *Name, mode_t &mode, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
Definition: XrdSfsNative.hh:220
int getMmap(void **Addr, off_t &Size)
Definition: XrdSfsNative.hh:106
int stat(struct stat *buf)
int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecClientName *client=0)
Definition: XrdSfsNative.hh:193
Definition: XrdSfsNative.hh:87
char pad[MAXNAMLEN]
Definition: XrdSfsNative.hh:74
~XrdSfsNativeFile()
Definition: XrdSfsNative.hh:140
int XrdSfsMode
Definition: XrdSfsInterface.hh:128
int open(const char *dirName, const XrdSecClientName *client=0, const char *opaque=0)
char * fname
Definition: XrdSfsNative.hh:71
DIR * dh
Definition: XrdSfsNative.hh:69
Definition: XrdSecEntity.hh:63
Definition: XrdSfsAio.hh:58
static XrdSysError * eDest
Definition: XrdSfsNative.hh:250
Definition: XrdSfsInterface.hh:364
< Prepare parameters
Definition: XrdSfsInterface.hh:167
int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize preread_sz)
Definition: XrdSfsNative.hh:109
int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
int XrdSfsFileOpenMode
Definition: XrdSfsInterface.hh:127
char * fname
Definition: XrdSfsNative.hh:144
int oh
Definition: XrdSfsNative.hh:143