XrdCmsConfig.hh

Go to the documentation of this file.
00001 #ifndef _CMS_CONFIG_H_
00002 #define _CMS_CONFIG_H_
00003 /******************************************************************************/
00004 /*                                                                            */
00005 /*                       X r d C m s C o n f i g . h h                        */
00006 /*                                                                            */
00007 /* (c) 2007 by the Board of Trustees of the Leland Stanford, Jr., University  */
00008 /*                            All Rights Reserved                             */
00009 /*   Produced by Andrew Hanushevsky for Stanford University under contract    */
00010 /*              DE-AC02-76-SFO0515 with the Department of Energy              */
00011 /******************************************************************************/
00012 
00013 //         $Id: XrdCmsConfig.hh 34000 2010-06-21 06:49:56Z ganis $
00014 
00015 #include <stdlib.h>
00016 #include <sys/socket.h>
00017 
00018 #include "Xrd/XrdJob.hh"
00019 #include "XrdCms/XrdCmsPList.hh"
00020 #include "XrdCms/XrdCmsTypes.hh"
00021 #include "XrdOuc/XrdOucPList.hh"
00022 #include "XrdOuc/XrdOucTList.hh"
00023   
00024 class XrdInet;
00025 class XrdScheduler;
00026 class XrdNetSecurity;
00027 class XrdNetSocket;
00028 class XrdOss;
00029 class XrdSysError;
00030 class XrdOucName2Name;
00031 class XrdOucProg;
00032 class XrdOucStream;
00033 class XrdCmsAdmin;
00034 class XrdCmsXmi;
00035 
00036 class XrdCmsConfig : public XrdJob
00037 {
00038 public:
00039 
00040 int   Configure1(int argc, char **argv, char *cfn);
00041 int   Configure2();
00042 int   ConfigXeq(char *var, XrdOucStream &CFile, XrdSysError *eDest);
00043 void  DoIt();
00044 int   GenLocalPath(const char *oldp, char *newp);
00045 int   asManager() {return isManager;}
00046 int   asPeer()    {return isPeer;}
00047 int   asProxy()   {return isProxy;}
00048 int   asServer()  {return isServer;}
00049 int   asSolo()    {return isSolo;}
00050 
00051 int         LUPDelay;     // Maximum delay at look-up
00052 int         LUPHold;      // Maximum hold  at look-up (in millisconds)
00053 int         DRPDelay;     // Maximum delay for dropping an offline server
00054 int         PSDelay;      // Maximum delay time before peer is selected
00055 int         RWDelay;      // R/W lookup delay handling (0 | 1 | 2)
00056 int         SRVDelay;     // Minimum delay at startup
00057 int         SUPCount;     // Minimum server count
00058 int         SUPLevel;     // Minimum server count as floating percentage
00059 int         SUPDelay;     // Maximum delay when server count falls below min
00060 int         SUSDelay;     // Maximum delay when suspended
00061 int         MaxLoad;      // Maximum load
00062 int         MaxDelay;     // Maximum load delay
00063 int         MsgTTL;       // Maximum msg lifetime
00064 int         RefReset;     // Min seconds    before a global ref count reset
00065 int         RefTurn;      // Min references before a global ref count reset
00066 int         AskPerf;      // Seconds between perf queries
00067 int         AskPing;      // Number of ping requests per AskPerf window
00068 int         LogPerf;      // AskPerf intervals before logging perf
00069 
00070 int         PortTCP;      // TCP Port to  listen on
00071 XrdInet    *NetTCP;       // -> Network Object
00072 
00073 int         P_cpu;        // % CPU Capacity in load factor
00074 int         P_dsk;        // % DSK Capacity in load factor
00075 int         P_fuzz;       // %     Capacity to fuzz when comparing
00076 int         P_io;         // % I/O Capacity in load factor
00077 int         P_load;       // % MSC Capacity in load factor
00078 int         P_mem;        // % MEM Capacity in load factor
00079 int         P_pag;        // % PAG Capacity in load factor
00080 
00081 int         DiskMin;      // Minimum MB needed of space in a partition
00082 int         DiskHWM;      // Minimum MB needed of space to requalify
00083 short       DiskMinP;     // Minimum MB needed of space in a partition as %
00084 short       DiskHWMP;     // Minimum MB needed of space to requalify   as %
00085 int         DiskLinger;   // Manager Only
00086 int         DiskAsk;      // Seconds between disk space reclaculations
00087 int         DiskWT;       // Seconds to defer client while waiting for space
00088 int         DiskSS;       // This is a staging server
00089 int         DiskOK;       // This configuration has data
00090 
00091 int         sched_RR;     // 1 -> Simply do round robin scheduling
00092 int         doWait;       // 1 -> Wait for a data end-point
00093 
00094 XrdOucName2Name *xeq_N2N; // Server or Manager (non-null if library loaded)
00095 XrdOucName2Name *lcl_N2N; // Server Only
00096 
00097 char        *ossLib;      // -> oss library
00098 char        *ossParms;    // -> oss library parameters
00099 char        *N2N_Lib;     // Server Only
00100 char        *N2N_Parms;   // Server Only
00101 char        *LocalRoot;   // Server Only
00102 char        *RemotRoot;   // Manager
00103 char        *myPaths;     // Exported paths
00104 const char  *myProg;
00105 const char  *myName;
00106 const char  *myDomain;
00107 const char  *myInsName;
00108 const char  *myInstance;
00109 const char  *mySID;
00110 XrdOucTList *ManList;     // From manager directive
00111 XrdOucTList *NanList;     // From manager directive (managers only)
00112 
00113 XrdOss      *ossFS;       // The filsesystem interface
00114 XrdOucProg  *ProgCH;      // Server only chmod
00115 XrdOucProg  *ProgMD;      // Server only mkdir
00116 XrdOucProg  *ProgMP;      // Server only mkpath
00117 XrdOucProg  *ProgMV;      // Server only mv
00118 XrdOucProg  *ProgRD;      // Server only rmdir
00119 XrdOucProg  *ProgRM;      // Server only rm
00120 XrdOucProg  *ProgTR;      // Server only trunc
00121 
00122 unsigned long long DirFlags;
00123 XrdCmsPList_Anchor PathList;
00124 XrdOucPListAnchor  PexpList;
00125 XrdNetSocket      *AdminSock;
00126 XrdNetSocket      *AnoteSock;
00127 XrdNetSocket      *RedirSock;
00128 XrdNetSecurity    *Police;
00129 struct sockaddr    myAddr;
00130 
00131       XrdCmsConfig() : XrdJob("cmsd startup") {ConfigDefaults();}
00132      ~XrdCmsConfig() {}
00133 
00134 private:
00135 
00136 void ConfigDefaults(void);
00137 int  ConfigN2N(void);
00138 int  ConfigOSS(void);
00139 int  ConfigProc(int getrole=0);
00140 int  isExec(XrdSysError *eDest, const char *ptype, char *prog);
00141 int  MergeP(void);
00142 int  PidFile(void);
00143 int  setupManager(void);
00144 int  setupServer(void);
00145 char *setupSid();
00146 int  setupXmi(void);
00147 void Usage(int rc);
00148 int  xapath(XrdSysError *edest, XrdOucStream &CFile);
00149 int  xallow(XrdSysError *edest, XrdOucStream &CFile);
00150 int  Fsysadd(XrdSysError *edest, int chk, char *fn);
00151 int  xdelay(XrdSysError *edest, XrdOucStream &CFile);
00152 int  xdefs(XrdSysError *edest, XrdOucStream &CFile);
00153 int  xexpo(XrdSysError *edest, XrdOucStream &CFile);
00154 int  xfsxq(XrdSysError *edest, XrdOucStream &CFile);
00155 int  xfxhld(XrdSysError *edest, XrdOucStream &CFile);
00156 int  xlclrt(XrdSysError *edest, XrdOucStream &CFile);
00157 int  xmang(XrdSysError *edest, XrdOucStream &CFile);
00158 int  xnml(XrdSysError *edest, XrdOucStream &CFile);
00159 int  xolib(XrdSysError *edest, XrdOucStream &CFile);
00160 int  xperf(XrdSysError *edest, XrdOucStream &CFile);
00161 int  xpidf(XrdSysError *edest, XrdOucStream &CFile);
00162 int  xping(XrdSysError *edest, XrdOucStream &CFile);
00163 int  xprep(XrdSysError *edest, XrdOucStream &CFile);
00164 int  xprepm(XrdSysError *edest, XrdOucStream &CFile);
00165 int  xrmtrt(XrdSysError *edest, XrdOucStream &CFile);
00166 int  xrole(XrdSysError *edest, XrdOucStream &CFile);
00167 int  xsched(XrdSysError *edest, XrdOucStream &CFile);
00168 int  xsecl(XrdSysError *edest, XrdOucStream &CFile);
00169 int  xspace(XrdSysError *edest, XrdOucStream &CFile);
00170 int  xtrace(XrdSysError *edest, XrdOucStream &CFile);
00171 int  xxmi(XrdSysError *edest, XrdOucStream &CFile);
00172 
00173 XrdInet          *NetTCPr;     // Network for supervisors
00174 char             *AdminPath;
00175 int               AdminMode;
00176 char             *pidPath;
00177 char             *ConfigFN;
00178 char            **inArgv;
00179 int               inArgc;
00180 char             *SecLib;
00181 char             *XmiPath;
00182 char             *XmiParms;
00183 int               isManager;
00184 int               isMeta;
00185 int               isPeer;
00186 int               isProxy;
00187 int               isServer;
00188 int               isSolo;
00189 char             *myRole;
00190 char             *perfpgm;
00191 int               perfint;
00192 int               cachelife;
00193 int               pendplife;
00194 };
00195 namespace XrdCms
00196 {
00197 extern XrdCmsAdmin   Admin;
00198 extern XrdCmsConfig  Config;
00199 extern XrdScheduler *Sched;
00200 extern XrdCmsXmi    *Xmi_Chmod;
00201 extern XrdCmsXmi    *Xmi_Load;
00202 extern XrdCmsXmi    *Xmi_Mkdir;
00203 extern XrdCmsXmi    *Xmi_Mkpath;
00204 extern XrdCmsXmi    *Xmi_Prep;
00205 extern XrdCmsXmi    *Xmi_Rename;
00206 extern XrdCmsXmi    *Xmi_Remdir;
00207 extern XrdCmsXmi    *Xmi_Remove;
00208 extern XrdCmsXmi    *Xmi_Select;
00209 extern XrdCmsXmi    *Xmi_Space;
00210 extern XrdCmsXmi    *Xmi_Stat;
00211 }
00212 #endif

Generated on Tue Jul 5 14:46:24 2011 for ROOT_528-00b_version by  doxygen 1.5.1