xrootd
Loading...
Searching...
No Matches
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 <cstring>
34#include <dirent.h>
35
37
38class XrdSysError;
39class 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{
47public:
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
57const 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
67private:
68
69DIR *dh; // Directory stream handle
70char ateof;
71char *fname;
72
73struct {struct dirent d_entry;
74 char pad[MAXNAMLEN]; // This is only required for Solaris!
76
77struct 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
85class XrdSfsAio;
86
88{
89public:
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;}
141private:
142
143int oh;
144char *fname;
145
146};
147
148/******************************************************************************/
149/* X r d S f s N a t i v e */
150/******************************************************************************/
151
153{
154public:
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
185const 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//
239static int Mkpath(const char *path, mode_t mode,
240 const char *info=0);
241
242static int Emsg(const char *, XrdOucErrInfo&, int, const char *x,
243 const char *y="");
244
246virtual ~XrdSfsNative() {}
247
248private:
249
251};
252#endif
#define stat(a, b)
Definition XrdPosix.hh:96
#define XrdSecClientName
Definition XrdSecEntity.hh:124
int XrdSfsMode
Definition XrdSfsInterface.hh:129
XrdSfsFileExistence
Definition XrdSfsInterface.hh:133
int XrdSfsFileOpenMode
Definition XrdSfsInterface.hh:128
#define SFS_OK
Definition XrdSfsInterface.hh:107
long long XrdSfsFileOffset
Definition XrdSfsInterface.hh:127
int XrdSfsXferSize
Definition XrdSfsInterface.hh:130
Definition XrdOucErrInfo.hh:101
Definition XrdSecEntity.hh:65
Definition XrdSfsAio.hh:59
Definition XrdSfsInterface.hh:243
Definition XrdSfsInterface.hh:845
Definition XrdSfsInterface.hh:369
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
Definition XrdSfsNative.hh:46
const char * FName()
Definition XrdSfsNative.hh:57
const char * nextEntry()
struct dirent * d_pnt
Definition XrdSfsNative.hh:77
struct dirent d_entry
Definition XrdSfsNative.hh:73
char pad[MAXNAMLEN]
Definition XrdSfsNative.hh:74
DIR * dh
Definition XrdSfsNative.hh:69
char ateof
Definition XrdSfsNative.hh:70
int open(const char *dirName, const XrdSecClientName *client=0, const char *opaque=0)
~XrdSfsNativeDirectory()
Definition XrdSfsNative.hh:66
XrdSfsNativeDirectory(char *user=0, int monid=0)
Definition XrdSfsNative.hh:59
char * fname
Definition XrdSfsNative.hh:71
struct XrdSfsNativeDirectory::@140 dirent_full
Definition XrdSfsNative.hh:88
XrdSfsNativeFile(char *user=0, int monid=0)
Definition XrdSfsNative.hh:137
int read(XrdSfsAio *aioparm)
int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
~XrdSfsNativeFile()
Definition XrdSfsNative.hh:140
int oh
Definition XrdSfsNative.hh:143
int write(XrdSfsAio *aioparm)
int getCXinfo(char cxtype[4], int &cxrsz)
Definition XrdSfsNative.hh:135
char * fname
Definition XrdSfsNative.hh:144
XrdSfsXferSize readv(XrdOucIOVec *readV, int readCount)
int sync(XrdSfsAio *aiop)
const char * FName()
Definition XrdSfsNative.hh:104
int stat(struct stat *buf)
int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
XrdSfsXferSize read(XrdSfsFileOffset fileOffset, char *buffer, XrdSfsXferSize buffer_size)
int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize preread_sz)
Definition XrdSfsNative.hh:109
int truncate(XrdSfsFileOffset fileOffset)
int getMmap(void **Addr, off_t &Size)
Definition XrdSfsNative.hh:106
Definition XrdSfsNative.hh:153
int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecClientName *client=0)
Definition XrdSfsNative.hh:193
virtual ~XrdSfsNative()
Definition XrdSfsNative.hh:246
int getStats(char *buff, int blen)
Definition XrdSfsNative.hh:183
static int Emsg(const char *, XrdOucErrInfo &, int, const char *x, const char *y="")
XrdSfsNative(XrdSysError *lp)
int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsFile * newFile(char *user=0, int monid=0)
Definition XrdSfsNative.hh:161
int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
XrdSfsDirectory * newDir(char *user=0, int monid=0)
Definition XrdSfsNative.hh:158
int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
int rename(const char *oldFileName, const char *newFileName, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaqueO=0, const char *opaqueN=0)
int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecClientName *client=0)
static XrdSysError * eDest
Definition XrdSfsNative.hh:250
int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
int stat(const char *Name, mode_t &mode, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
Definition XrdSfsNative.hh:220
static int Mkpath(const char *path, mode_t mode, const char *info=0)
const char * getVersion()
int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecClientName *client=0, const char *opaque=0)
Definition XrdSysError.hh:90
Definition XrdSysLogger.hh:53
Definition XrdOucIOVec.hh:41
< Prepare parameters
Definition XrdSfsInterface.hh:172