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!
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 
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
XrdSfsNativeDirectory::nextEntry
const char * nextEntry()
SFS_OK
#define SFS_OK
Definition: XrdSfsInterface.hh:99
XrdSfsNativeFile::fctl
int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
XrdSfsInterface.hh
XrdSfsNativeFile::stat
int stat(struct stat *buf)
XrdSfsNative
Definition: XrdSfsNative.hh:153
XrdSfsNativeDirectory::~XrdSfsNativeDirectory
~XrdSfsNativeDirectory()
Definition: XrdSfsNative.hh:66
XrdSfsNativeFile::close
int close()
XrdSfsNative::XrdSfsNative
XrdSfsNative(XrdSysError *lp)
XrdSfsNative::newFile
XrdSfsFile * newFile(char *user=0, int monid=0)
Definition: XrdSfsNative.hh:161
XrdSfsNative::chmod
int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsFileSystem
Definition: XrdSfsInterface.hh:210
XrdSfsNativeFile::fname
char * fname
Definition: XrdSfsNative.hh:144
XrdSfsNativeFile::~XrdSfsNativeFile
~XrdSfsNativeFile()
Definition: XrdSfsNative.hh:140
XrdSfsNativeFile::sync
int sync()
XrdSfsNativeDirectory::dh
DIR * dh
Definition: XrdSfsNative.hh:69
XrdSfsNativeFile::open
int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsNative::stat
int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsNativeDirectory::close
int close()
XrdSecClientName
#define XrdSecClientName
Definition: XrdSecEntity.hh:97
XrdSfsNative::exists
int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsNativeFile::read
XrdSfsXferSize read(XrdSfsFileOffset fileOffset, char *buffer, XrdSfsXferSize buffer_size)
XrdSfsXferSize
int XrdSfsXferSize
Definition: XrdSfsInterface.hh:122
XrdSfsNative::fsctl
int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecClientName *client=0)
XrdSfsFileExistence
XrdSfsFileExistence
Definition: XrdSfsInterface.hh:125
XrdSfsNativeDirectory::fname
char * fname
Definition: XrdSfsNative.hh:71
XrdSfsNativeFile::write
XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
XrdSfsNativeDirectory::open
int open(const char *dirName, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsNativeFile
Definition: XrdSfsNative.hh:88
XrdSfsFile
Definition: XrdSfsInterface.hh:652
XrdSfsFileOffset
long long XrdSfsFileOffset
Definition: XrdSfsInterface.hh:119
XrdSfsNativeDirectory::dirent_full
struct XrdSfsNativeDirectory::@102 dirent_full
XrdOucIOVec
Definition: XrdOucIOVec.hh:41
XrdSfsNative::truncate
int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
XrdSfsNativeFile::write
int write(XrdSfsAio *aioparm)
XrdSfsNative::newDir
XrdSfsDirectory * newDir(char *user=0, int monid=0)
Definition: XrdSfsNative.hh:158
XrdSfsNativeFile::read
int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize preread_sz)
Definition: XrdSfsNative.hh:109
XrdSfsNativeDirectory::ateof
char ateof
Definition: XrdSfsNative.hh:70
XrdSfsNative::prepare
int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecClientName *client=0)
Definition: XrdSfsNative.hh:193
XrdSfsDirectory
Definition: XrdSfsInterface.hh:995
XrdSfsNativeFile::getCXinfo
int getCXinfo(char cxtype[4], int &cxrsz)
Definition: XrdSfsNative.hh:135
XrdSfsNative::stat
int stat(const char *Name, mode_t &mode, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
Definition: XrdSfsNative.hh:220
XrdSfsNativeFile::read
int read(XrdSfsAio *aioparm)
XrdSfsNativeFile::sync
int sync(XrdSfsAio *aiop)
XrdSfsNativeFile::FName
const char * FName()
Definition: XrdSfsNative.hh:104
XrdSfsNativeFile::readv
XrdSfsXferSize readv(XrdOucIOVec *readV, int readCount)
XrdSfsNativeDirectory
Definition: XrdSfsNative.hh:46
XrdSfsNative::rem
int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsNativeDirectory::XrdSfsNativeDirectory
XrdSfsNativeDirectory(char *user=0, int monid=0)
Definition: XrdSfsNative.hh:59
XrdSysLogger
Definition: XrdSysLogger.hh:53
XrdSfsNative::Emsg
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, const char *y="")
XrdSfsFile::fctl
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
XrdSfsMode
int XrdSfsMode
Definition: XrdSfsInterface.hh:121
XrdSfsNativeDirectory::d_entry
struct dirent d_entry
Definition: XrdSfsNative.hh:73
XrdSfsNative::getStats
int getStats(char *buff, int blen)
Definition: XrdSfsNative.hh:183
XrdSfsNative::~XrdSfsNative
virtual ~XrdSfsNative()
Definition: XrdSfsNative.hh:246
XrdSfsPrep
< Prepare parameters
Definition: XrdSfsInterface.hh:161
XrdSfsNative::rename
int rename(const char *oldFileName, const char *newFileName, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaqueO=0, const char *opaqueN=0)
XrdSfsNativeFile::XrdSfsNativeFile
XrdSfsNativeFile(char *user=0, int monid=0)
Definition: XrdSfsNative.hh:137
XrdSfsFileOpenMode
int XrdSfsFileOpenMode
Definition: XrdSfsInterface.hh:120
XrdSfsNative::remdir
int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsNative::eDest
static XrdSysError * eDest
Definition: XrdSfsNative.hh:250
XrdSecEntity
Definition: XrdSecEntity.hh:52
XrdSfsAio
Definition: XrdSfsAio.hh:58
XrdOucErrInfo
Definition: XrdOucErrInfo.hh:100
XrdSfsNative::Mkpath
static int Mkpath(const char *path, mode_t mode, const char *info=0)
XrdSfsNative::getVersion
const char * getVersion()
XrdSfsNative::mkdir
int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsNativeFile::getMmap
int getMmap(void **Addr, off_t &Size)
Definition: XrdSfsNative.hh:106
XrdSysError
Definition: XrdSysError.hh:90
XrdSfsNativeFile::truncate
int truncate(XrdSfsFileOffset fileOffset)
XrdSfsNativeFile::oh
int oh
Definition: XrdSfsNative.hh:143
XrdSfsNativeDirectory::pad
char pad[MAXNAMLEN]
Definition: XrdSfsNative.hh:74
XrdSfsNativeDirectory::d_pnt
struct dirent * d_pnt
Definition: XrdSfsNative.hh:77
XrdSfsNativeDirectory::FName
const char * FName()
Definition: XrdSfsNative.hh:57