xrootd
Loading...
Searching...
No Matches
XrdBwm.hh
Go to the documentation of this file.
1#ifndef __BWM_API_H__
2#define __BWM_API_H__
3/******************************************************************************/
4/* */
5/* X r d B w m . h h */
6/* */
7/* (c) 2008 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
39
40class XrdOucEnv;
41class XrdSysError;
42class XrdSysLogger;
43class XrdOucStream;
44class XrdSfsAio;
45
46struct XrdVersionInfo;
47
48/******************************************************************************/
49/* X r d B w m D i r e c t o r y */
50/******************************************************************************/
51
53{
54public:
55
56 int open(const char *dirName,
57 const XrdSecEntity *client,
58 const char *opaque = 0);
59
60 const char *nextEntry();
61
62 int close();
63
64inline void copyError(XrdOucErrInfo &einfo) {einfo = error;}
65
66const char *FName() {return "";}
67
68 XrdBwmDirectory(const char *user, int monid)
69 : XrdSfsDirectory(user, monid),
70 tident(user ? user : "") {}
71
72virtual ~XrdBwmDirectory() {}
73
74protected:
75const char *tident;
76};
77
78/******************************************************************************/
79/* X r d B w m F i l e */
80/******************************************************************************/
81
82class XrdBwmFile : public XrdSfsFile
83{
84public:
85
86 int open(const char *fileName,
87 XrdSfsFileOpenMode openMode,
88 mode_t createMode,
89 const XrdSecEntity *client,
90 const char *opaque = 0);
91
92 int close();
93
94 using XrdSfsFile::fctl;
95
96 int fctl(const int cmd,
97 const char *args,
98 XrdOucErrInfo &out_error);
99
100 const char *FName() {return (oh ? oh->Name() : "?");}
101
102 int getMmap(void **Addr, off_t &Size);
103
104 int read(XrdSfsFileOffset fileOffset, // Preread only
105 XrdSfsXferSize amount);
106
108 char *buffer,
109 XrdSfsXferSize buffer_size);
110
111 int read(XrdSfsAio *aioparm);
112
114 const char *buffer,
115 XrdSfsXferSize buffer_size);
116
117 int write(XrdSfsAio *aioparm);
118
119 int sync();
120
121 int sync(XrdSfsAio *aiop);
122
123 int stat(struct stat *buf);
124
125 int truncate(XrdSfsFileOffset fileOffset);
126
127 int getCXinfo(char cxtype[4], int &cxrsz);
128
129 XrdBwmFile(const char *user, int monid);
130
131virtual ~XrdBwmFile() {if (oh) close();}
132
133protected:
134 const char *tident;
135
136private:
137
139};
140
141/******************************************************************************/
142/* C l a s s X r d B w m */
143/******************************************************************************/
144
145class XrdAccAuthorize;
146class XrdBwmLogger;
147class XrdBwmPolicy;
148
150{
151friend class XrdBwmDirectory;
152friend class XrdBwmFile;
153
154public:
155
156// Object allocation
157//
158 XrdSfsDirectory *newDir(char *user=0, int monid=0)
159 {return (XrdSfsDirectory *)new XrdBwmDirectory(user,monid);}
160
161 XrdSfsFile *newFile(char *user=0, int monid=0)
162 {return (XrdSfsFile *)new XrdBwmFile(user,monid);}
163
164// Other functions
165//
166 int chmod(const char *Name,
167 XrdSfsMode Mode,
168 XrdOucErrInfo &out_error,
169 const XrdSecEntity *client,
170 const char *opaque = 0);
171
172 int exists(const char *fileName,
173 XrdSfsFileExistence &exists_flag,
174 XrdOucErrInfo &out_error,
175 const XrdSecEntity *client,
176 const char *opaque = 0);
177
178 int fsctl(const int cmd,
179 const char *args,
180 XrdOucErrInfo &out_error,
181 const XrdSecEntity *client);
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 XrdSecEntity *client,
191 const char *opaque = 0);
192
193 int prepare( XrdSfsPrep &pargs,
194 XrdOucErrInfo &out_error,
195 const XrdSecEntity *client = 0);
196
197 int rem(const char *path,
198 XrdOucErrInfo &out_error,
199 const XrdSecEntity *client,
200 const char *info = 0)
201 {return remove('f', path, out_error, client, info);}
202
203 int remdir(const char *dirName,
204 XrdOucErrInfo &out_error,
205 const XrdSecEntity *client,
206 const char *info = 0)
207 {return remove('d',dirName,out_error,client,info);}
208
209 int rename(const char *oldFileName,
210 const char *newFileName,
211 XrdOucErrInfo &out_error,
212 const XrdSecEntity *client,
213 const char *infoO = 0,
214 const char *infoN = 0);
215
216 int stat(const char *Name,
217 struct stat *buf,
218 XrdOucErrInfo &out_error,
219 const XrdSecEntity *client,
220 const char *opaque = 0);
221
222 int stat(const char *Name,
223 mode_t &mode,
224 XrdOucErrInfo &out_error,
225 const XrdSecEntity *client,
226 const char *opaque = 0);
227
228 int truncate(const char *Name,
229 XrdSfsFileOffset fileOffset,
230 XrdOucErrInfo &out_error,
231 const XrdSecEntity *client = 0,
232 const char *opaque = 0);
233// Management functions
234//
235virtual int Configure(XrdSysError &);
236
238virtual ~XrdBwm() {} // Too complicate to delete :-)
239
240/******************************************************************************/
241/* C o n f i g u r a t i o n V a l u e s */
242/******************************************************************************/
243
244XrdVersionInfo *myVersion; // ->Version compiled with
245
246char *ConfigFN; // ->Configuration filename
247char *HostName; // ->Our hostname
248char *HostPref; // ->Our hostname with domain removed
249char *myDomain; // ->Our domain name
250int myDomLen; //
252char Reserved[7];
253
254/******************************************************************************/
255/* P r o t e c t e d I t e m s */
256/******************************************************************************/
257
258protected:
259
260virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &);
261 int Emsg(const char *, XrdOucErrInfo &, int,
262 const char *, const char *y="");
263 int Emsg(const char *, XrdOucErrInfo &, const char *,
264 const char *, const char *y="");
265 int Stall(XrdOucErrInfo &, int, const char *);
266
267/******************************************************************************/
268/* P r i v a t e C o n f i g u r a t i o n */
269/******************************************************************************/
270
271private:
272
273XrdAccAuthorize *Authorization; // ->Authorization Service
274char *AuthLib; // ->Authorization Library
275char *AuthParm; // ->Authorization Parameters
276XrdBwmLogger *Logger; // ->Logger
277XrdBwmPolicy *Policy; // ->Policy
278char *PolLib;
280char *locResp; // ->Locate Response
281int locRlen; // Length of locResp;
284
286XrdSysMutex ocMutex; // Global mutex for open/close
287
288/******************************************************************************/
289/* O t h e r D a t a */
290/******************************************************************************/
291
292int remove(const char type, const char *path,
293 XrdOucErrInfo &out_error, const XrdSecEntity *client,
294 const char *opaque);
295// Function used during Configuration
296//
303};
304#endif
#define stat(a, b)
Definition XrdPosix.hh:96
int XrdSfsMode
Definition XrdSfsInterface.hh:129
XrdSfsFileExistence
Definition XrdSfsInterface.hh:133
int XrdSfsFileOpenMode
Definition XrdSfsInterface.hh:128
long long XrdSfsFileOffset
Definition XrdSfsInterface.hh:127
int XrdSfsXferSize
Definition XrdSfsInterface.hh:130
Definition XrdAccAuthorize.hh:68
Definition XrdBwm.hh:53
void copyError(XrdOucErrInfo &einfo)
Definition XrdBwm.hh:64
const char * tident
Definition XrdBwm.hh:75
const char * FName()
Definition XrdBwm.hh:66
XrdBwmDirectory(const char *user, int monid)
Definition XrdBwm.hh:68
int open(const char *dirName, const XrdSecEntity *client, const char *opaque=0)
virtual ~XrdBwmDirectory()
Definition XrdBwm.hh:72
const char * nextEntry()
Definition XrdBwm.hh:83
int write(XrdSfsAio *aioparm)
virtual ~XrdBwmFile()
Definition XrdBwm.hh:131
XrdBwmHandle * oh
Definition XrdBwm.hh:138
int fctl(const int cmd, const char *args, XrdOucErrInfo &out_error)
int truncate(XrdSfsFileOffset fileOffset)
int getMmap(void **Addr, off_t &Size)
int read(XrdSfsFileOffset fileOffset, XrdSfsXferSize amount)
XrdBwmFile(const char *user, int monid)
int open(const char *fileName, XrdSfsFileOpenMode openMode, mode_t createMode, const XrdSecEntity *client, const char *opaque=0)
int sync(XrdSfsAio *aiop)
XrdSfsXferSize read(XrdSfsFileOffset fileOffset, char *buffer, XrdSfsXferSize buffer_size)
int stat(struct stat *buf)
XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
int read(XrdSfsAio *aioparm)
const char * tident
Definition XrdBwm.hh:134
const char * FName()
Definition XrdBwm.hh:100
int getCXinfo(char cxtype[4], int &cxrsz)
Definition XrdBwmHandle.hh:42
const char * Name()
Definition XrdBwmHandle.hh:57
Definition XrdBwmLogger.hh:41
Definition XrdBwmPolicy.hh:34
Definition XrdBwm.hh:150
int xalib(XrdOucStream &, XrdSysError &)
int chmod(const char *Name, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
XrdSfsDirectory * newDir(char *user=0, int monid=0)
Definition XrdBwm.hh:158
friend class XrdBwmDirectory
Definition XrdBwm.hh:151
XrdVersionInfo * myVersion
Definition XrdBwm.hh:244
int stat(const char *Name, struct stat *buf, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
virtual ~XrdBwm()
Definition XrdBwm.hh:238
char * myDomain
Definition XrdBwm.hh:249
int getStats(char *buff, int blen)
Definition XrdBwm.hh:183
int myDomLen
Definition XrdBwm.hh:250
char * AuthParm
Definition XrdBwm.hh:275
XrdAccAuthorize * Authorization
Definition XrdBwm.hh:273
int xtrace(XrdOucStream &, XrdSysError &)
int remdir(const char *dirName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition XrdBwm.hh:203
int Emsg(const char *, XrdOucErrInfo &, const char *, const char *, const char *y="")
char * ConfigFN
Definition XrdBwm.hh:246
XrdBwmLogger * Logger
Definition XrdBwm.hh:276
friend class XrdBwmFile
Definition XrdBwm.hh:152
int fsctl(const int cmd, const char *args, XrdOucErrInfo &out_error, const XrdSecEntity *client)
char * locResp
Definition XrdBwm.hh:280
int PolSlotsOut
Definition XrdBwm.hh:283
char * HostPref
Definition XrdBwm.hh:248
XrdBwmPolicy * Policy
Definition XrdBwm.hh:277
int xlog(XrdOucStream &, XrdSysError &)
int setupAuth(XrdSysError &)
virtual int ConfigXeq(char *var, XrdOucStream &, XrdSysError &)
char * PolLib
Definition XrdBwm.hh:278
int truncate(const char *Name, XrdSfsFileOffset fileOffset, XrdOucErrInfo &out_error, const XrdSecEntity *client=0, const char *opaque=0)
const char * getVersion()
char * PolParm
Definition XrdBwm.hh:279
char * HostName
Definition XrdBwm.hh:247
int mkdir(const char *dirName, XrdSfsMode Mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
char Authorize
Definition XrdBwm.hh:251
int stat(const char *Name, mode_t &mode, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
char Reserved[7]
Definition XrdBwm.hh:252
int locRlen
Definition XrdBwm.hh:281
int rename(const char *oldFileName, const char *newFileName, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *infoO=0, const char *infoN=0)
virtual int Configure(XrdSysError &)
int prepare(XrdSfsPrep &pargs, XrdOucErrInfo &out_error, const XrdSecEntity *client=0)
int PolSlotsIn
Definition XrdBwm.hh:282
int setupPolicy(XrdSysError &)
int Emsg(const char *, XrdOucErrInfo &, int, const char *, const char *y="")
XrdSysMutex ocMutex
Definition XrdBwm.hh:286
int exists(const char *fileName, XrdSfsFileExistence &exists_flag, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque=0)
int rem(const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *info=0)
Definition XrdBwm.hh:197
int xpol(XrdOucStream &, XrdSysError &)
int remove(const char type, const char *path, XrdOucErrInfo &out_error, const XrdSecEntity *client, const char *opaque)
XrdSfsFile * newFile(char *user=0, int monid=0)
Definition XrdBwm.hh:161
static XrdBwmHandle * dummyHandle
Definition XrdBwm.hh:285
char * AuthLib
Definition XrdBwm.hh:274
int Stall(XrdOucErrInfo &, int, const char *)
Definition XrdOucEnv.hh:42
Definition XrdOucErrInfo.hh:101
Definition XrdOucStream.hh:47
Definition XrdSecEntity.hh:65
Definition XrdSfsAio.hh:59
Definition XrdSfsInterface.hh:243
XrdOucErrInfo & error
Definition XrdSfsInterface.hh:251
Definition XrdSfsInterface.hh:845
Definition XrdSfsInterface.hh:369
virtual int fctl(const int cmd, const char *args, XrdOucErrInfo &eInfo)=0
Definition XrdSysError.hh:90
Definition XrdSysLogger.hh:53
Definition XrdSysPthread.hh:165
< Prepare parameters
Definition XrdSfsInterface.hh:172