xrootd
XrdFrmConfig.hh
Go to the documentation of this file.
1#ifndef _XRD_FRMCONFIG_H
2#define _XRD_FRMCONFIG_H
3/******************************************************************************/
4/* */
5/* X r d F r m C o n f i g . h h */
6/* */
7/* (C) 2009 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 <string.h>
33#include <unistd.h>
34
35#include "XrdOss/XrdOssSpace.hh"
36
37class XrdCks;
38class XrdNetCmsNotify;
39class XrdOfsConfigPI;
40class XrdOss;
41class XrdOucMsubs;
42class XrdOucName2Name;
43class XrdOucProg;
44class XrdOucStream;
45class XrdOucTList;
46class XrdSysLogger;
47
48class XrdFrmConfigSE;
49
50struct XrdVersionInfo;
51struct stat;
52
54{
55public:
56
57const char *myProg;
58const char *myName;
59const char *myInst;
60const char *mySite;
61const char *myFrmid;
62const char *myFrmID;
63const char *lockFN;
65char *QPath;
66char *PidPath;
69char *MSSCmd;
71
72struct Cmd
73 {const char *Desc;
74 char *theCmd;
76 int TLimit;
77 int Opts;
78 } xfrCmd[4];
79static const int cmdAlloc = 0x0001;
80static const int cmdMDP = 0x0002;
81static const int cmdStats = 0x0004;
82static const int cmdXPD = 0x0008;
83static const int cmdRME = 0x0010;
84
87
88XrdOfsConfigPI *OfsCfg; // -> Plugin Configurator
89XrdCks *CksMan; // -> Checksum Manager
90XrdOucName2Name *the_N2N; // -> File mapper object
93uid_t myUid;
94gid_t myGid;
95long long cmdFree;
107int Fix;
111int runOld; // Backward compatability
112int runNew; // Forward compatability
113int nonXA; // Backward compatability for noXA spaces
114int hasCache; // Backward compatability for noXA spaces
115char **vectArg;
118
119struct VPInfo
121 char *Name;
123 int Val;
124 VPInfo(char *n, int m=0, struct VPInfo *p=0)
125 : Next(p), Name(strdup(n)), Dir(0), Val(m) {}
126 ~VPInfo() {} // Deletes are not important
128VPInfo *pathList; // Migr/Purg list of paths
129XrdOucTList *spacList; // Migr/Purg list of spaces
130
131struct Policy
132 {long long minFree;
133 long long maxFree;
134 int Hold;
135 int Ext;
138 Policy(const char *snv, long long minV, long long maxV,
139 int hV, int xV) : minFree(minV), maxFree(maxV),
140 Hold(hV), Ext(xV), Next(0) {strcpy(Sname, snv);}
142 };
144
146int pVecNum; // Number of policy variables
147static const int pVecMax=8;
149char *pProg;
152
155
156int Configure(int argc, char **argv, int (*ppf)());
157
158int LocalPath (const char *oldp, char *newp, int newpsz);
159
160int LogicalPath(const char *oldp, char *newp, int newpsz);
161
162int NeedsCTA(const char *Lfn);
163
164unsigned
165long long PathOpts(const char *Lfn);
166
167int RemotePath (const char *oldp, char *newp, int newpsz);
168
169XrdOucTList *Space(const char *Name, const char *Path=0);
170
171int Stat(const char *xLfn, const char *xPfn, struct stat *buff);
172
174
175 XrdFrmConfig(SubSys ss, const char *vopts, const char *uinfo);
177
178private:
179XrdOucMsubs *ConfigCmd(const char *cname, char *cdata);
180int ConfigMum(XrdFrmConfigSE &theSE);
182int ConfigMon(int isxfr);
183int ConfigMP(const char *);
185int ConfigOTO(char *Parms);
187void ConfigPF(const char *pFN);
189int ConfigXeq(char *var, int mbok);
191int getTime(const char *, const char *, int *, int mnv=-1, int mxv=-1);
192int Grab(const char *var, char **Dest, int nosubs);
193XrdOucTList *InsertPL(XrdOucTList *pP, const char *Path, int Plen, int isRW);
194void InsertXD(const char *Path);
195void Usage(int rc);
196int xapath();
197int xcks();
198int xcnsd();
199int xcopy();
200int xcopy(int &TLim);
201int xcmax();
202int xdpol();
203int xitm(const char *What, int &tDest);
204int xnml();
205int xmon();
206int xpol();
208int xqchk();
209int xsit();
210int xspace(int isPrg=0, int isXA=1);
211void xspaceBuild(char *grp, char *fn, int isxa);
212int xxfr();
213
218XrdVersionInfo *myVersion;
219
222const char *pfxDTS;
223const char *vOpts;
224const char *uInfo;
225char *N2N_Lib; // -> Name2Name Library Path
226char *N2N_Parms; // -> Name2Name Object Parameters
227XrdOucName2Name *lcl_N2N; // -> File mapper for local files
228XrdOucName2Name *rmt_N2N; // -> File mapper for remote files
230};
231namespace XrdFrm
232{
233extern XrdFrmConfig Config;
234}
235#endif
#define stat(a, b)
Definition: XrdPosix.hh:96
Definition: XrdCks.hh:49
Definition: XrdFrmConfig.hh:54
PPVar
Definition: XrdFrmConfig.hh:153
@ PP_tspace
Definition: XrdFrmConfig.hh:154
@ PP_sname
Definition: XrdFrmConfig.hh:154
@ PP_usage
Definition: XrdFrmConfig.hh:154
@ PP_fspace
Definition: XrdFrmConfig.hh:153
@ PP_fname
Definition: XrdFrmConfig.hh:153
@ PP_atime
Definition: XrdFrmConfig.hh:153
@ PP_mtime
Definition: XrdFrmConfig.hh:154
@ PP_fsize
Definition: XrdFrmConfig.hh:153
@ PP_ctime
Definition: XrdFrmConfig.hh:153
@ PP_pfn
Definition: XrdFrmConfig.hh:154
struct XrdFrmConfig::Cmd xfrCmd[4]
XrdOucTList * Space(const char *Name, const char *Path=0)
int LogicalPath(const char *oldp, char *newp, int newpsz)
int xspace(int isPrg=0, int isXA=1)
XrdOucMsubs * ConfigCmd(const char *cname, char *cdata)
int WaitQChk
Definition: XrdFrmConfig.hh:102
int NeedsCTA(const char *Lfn)
XrdOucTList * InsertPL(XrdOucTList *pP, const char *Path, int Plen, int isRW)
int hasCache
Definition: XrdFrmConfig.hh:114
char * RemoteRoot
Definition: XrdFrmConfig.hh:216
void InsertXD(const char *Path)
int Verbose
Definition: XrdFrmConfig.hh:110
char * QPath
Definition: XrdFrmConfig.hh:65
SubSys ssID
Definition: XrdFrmConfig.hh:229
int xfrFdln
Definition: XrdFrmConfig.hh:151
XrdOfsConfigPI * OfsCfg
Definition: XrdFrmConfig.hh:88
char * pProg
Definition: XrdFrmConfig.hh:149
XrdNetCmsNotify * cmsPath
Definition: XrdFrmConfig.hh:92
int getTime(const char *, const char *, int *, int mnv=-1, int mxv=-1)
int ConfigMum(XrdFrmConfigSE &theSE)
int xfrOUT
Definition: XrdFrmConfig.hh:86
int xitm(const char *What, int &tDest)
static const int cmdStats
Definition: XrdFrmConfig.hh:81
static const int cmdAlloc
Definition: XrdFrmConfig.hh:79
gid_t myGid
Definition: XrdFrmConfig.hh:94
int cmdHold
Definition: XrdFrmConfig.hh:96
struct XrdFrmConfig::VPInfo * VPList
const char * myInst
Definition: XrdFrmConfig.hh:59
XrdOucProg * MSSProg
Definition: XrdFrmConfig.hh:70
XrdVersionInfo * myVersion
Definition: XrdFrmConfig.hh:218
XrdCks * CksMan
Definition: XrdFrmConfig.hh:89
char * StopPurge
Definition: XrdFrmConfig.hh:68
int ConfigMon(int isxfr)
int numcArg
Definition: XrdFrmConfig.hh:117
int runNew
Definition: XrdFrmConfig.hh:112
int ConfigPaths()
int haveCMS
Definition: XrdFrmConfig.hh:105
static const int cmdRME
Definition: XrdFrmConfig.hh:83
void ConfigPF(const char *pFN)
const char * pfxDTS
Definition: XrdFrmConfig.hh:222
int RemotePath(const char *oldp, char *newp, int newpsz)
char * myInstance
Definition: XrdFrmConfig.hh:67
void xspaceBuild(char *grp, char *fn, int isxa)
int FailHold
Definition: XrdFrmConfig.hh:100
int isOTO
Definition: XrdFrmConfig.hh:106
~XrdFrmConfig()
Definition: XrdFrmConfig.hh:176
XrdOss * ossFS
Definition: XrdFrmConfig.hh:91
void Usage(int rc)
XrdOucStream * cFile
Definition: XrdFrmConfig.hh:217
int WaitMigr
Definition: XrdFrmConfig.hh:104
const char * mySite
Definition: XrdFrmConfig.hh:60
VPInfo * pathList
Definition: XrdFrmConfig.hh:128
char * N2N_Lib
Definition: XrdFrmConfig.hh:225
XrdOucName2Name * rmt_N2N
Definition: XrdFrmConfig.hh:228
static const int cmdXPD
Definition: XrdFrmConfig.hh:82
unsigned long long PathOpts(const char *Lfn)
const char * vOpts
Definition: XrdFrmConfig.hh:223
XrdFrmConfig(SubSys ss, const char *vopts, const char *uinfo)
int xfrIN
Definition: XrdFrmConfig.hh:85
const char * uInfo
Definition: XrdFrmConfig.hh:224
int xfrMax
Definition: XrdFrmConfig.hh:99
const char * myFrmID
Definition: XrdFrmConfig.hh:62
int xcopy(int &TLim)
int nextArg
Definition: XrdFrmConfig.hh:116
int plnDTS
Definition: XrdFrmConfig.hh:221
int IdleHold
Definition: XrdFrmConfig.hh:101
XrdOucTList * spacList
Definition: XrdFrmConfig.hh:129
char * xfrFdir
Definition: XrdFrmConfig.hh:150
char * LocalRoot
Definition: XrdFrmConfig.hh:215
const char * myFrmid
Definition: XrdFrmConfig.hh:61
bool doStatPF
Definition: XrdFrmConfig.hh:220
int ConfigXeq(char *var, int mbok)
int Stat(const char *xLfn, const char *xPfn, struct stat *buff)
int runOld
Definition: XrdFrmConfig.hh:111
int Test
Definition: XrdFrmConfig.hh:108
char ** vectArg
Definition: XrdFrmConfig.hh:115
int ConfigMP(const char *)
char pVec[pVecMax]
Definition: XrdFrmConfig.hh:148
int ConfigProc()
char * MSSCmd
Definition: XrdFrmConfig.hh:69
int WaitPurge
Definition: XrdFrmConfig.hh:103
int Fix
Definition: XrdFrmConfig.hh:107
long long cmdFree
Definition: XrdFrmConfig.hh:95
int nonXA
Definition: XrdFrmConfig.hh:113
static const int cmdMDP
Definition: XrdFrmConfig.hh:80
static const int pVecMax
Definition: XrdFrmConfig.hh:147
XrdOucName2Name * lcl_N2N
Definition: XrdFrmConfig.hh:227
SubSys
Definition: XrdFrmConfig.hh:173
@ ssMigr
Definition: XrdFrmConfig.hh:173
@ ssPstg
Definition: XrdFrmConfig.hh:173
@ ssPurg
Definition: XrdFrmConfig.hh:173
@ ssAdmin
Definition: XrdFrmConfig.hh:173
@ ssXfr
Definition: XrdFrmConfig.hh:173
char * N2N_Parms
Definition: XrdFrmConfig.hh:226
int TrackDC
Definition: XrdFrmConfig.hh:109
XrdOucName2Name * the_N2N
Definition: XrdFrmConfig.hh:90
int LocalPath(const char *oldp, char *newp, int newpsz)
Policy dfltPolicy
Definition: XrdFrmConfig.hh:143
char * ConfigFN
Definition: XrdFrmConfig.hh:214
int isAgent
Definition: XrdFrmConfig.hh:98
int AdminMode
Definition: XrdFrmConfig.hh:97
uid_t myUid
Definition: XrdFrmConfig.hh:93
char * PidPath
Definition: XrdFrmConfig.hh:66
const char * myProg
Definition: XrdFrmConfig.hh:57
int ConfigOTO(char *Parms)
char * AdminPath
Definition: XrdFrmConfig.hh:64
int Configure(int argc, char **argv, int(*ppf)())
int dirHold
Definition: XrdFrmConfig.hh:145
int pVecNum
Definition: XrdFrmConfig.hh:146
int Grab(const char *var, char **Dest, int nosubs)
const char * lockFN
Definition: XrdFrmConfig.hh:63
const char * myName
Definition: XrdFrmConfig.hh:58
Definition: XrdNetCmsNotify.hh:37
Definition: XrdOfsConfigPI.hh:56
static const int minSNbsz
Definition: XrdOssSpace.hh:44
Definition: XrdOss.hh:174
Definition: XrdOucMsubs.hh:91
Definition: XrdOucName2Name.hh:49
Definition: XrdOucProg.hh:38
Definition: XrdOucStream.hh:46
Definition: XrdOucTList.hh:42
Definition: XrdSysLogger.hh:53
Definition: XrdFrmAdmin.hh:246
XrdFrmConfig Config
Definition: XrdFrmConfig.hh:73
XrdOucMsubs * theVec
Definition: XrdFrmConfig.hh:75
char * theCmd
Definition: XrdFrmConfig.hh:74
int Opts
Definition: XrdFrmConfig.hh:77
const char * Desc
Definition: XrdFrmConfig.hh:73
int TLimit
Definition: XrdFrmConfig.hh:76
Definition: XrdFrmConfig.hh:132
~Policy()
Definition: XrdFrmConfig.hh:141
Policy(const char *snv, long long minV, long long maxV, int hV, int xV)
Definition: XrdFrmConfig.hh:138
long long maxFree
Definition: XrdFrmConfig.hh:133
int Hold
Definition: XrdFrmConfig.hh:134
char Sname[XrdOssSpace::minSNbsz]
Definition: XrdFrmConfig.hh:137
long long minFree
Definition: XrdFrmConfig.hh:132
int Ext
Definition: XrdFrmConfig.hh:135
Policy * Next
Definition: XrdFrmConfig.hh:136
Definition: XrdFrmConfig.hh:120
int Val
Definition: XrdFrmConfig.hh:123
char * Name
Definition: XrdFrmConfig.hh:121
VPInfo * Next
Definition: XrdFrmConfig.hh:120
VPInfo(char *n, int m=0, struct VPInfo *p=0)
Definition: XrdFrmConfig.hh:124
XrdOucTList * Dir
Definition: XrdFrmConfig.hh:122
~VPInfo()
Definition: XrdFrmConfig.hh:126