xrootd
Loading...
Searching...
No Matches
XrdCmsFinder.hh
Go to the documentation of this file.
1#ifndef __CMS_FINDER__
2#define __CMS_FINDER__
3/******************************************************************************/
4/* */
5/* X r d C m s F i n d e r . h h */
6/* */
7/* (c) 2007 by the Board of Trustees of the Leland Stanford, Jr., University */
8/* All Rights Reserved */
9/* Produced by Andrew Hanushevsky for Stanford University under contract */
10/* DE-AC02-76-SFO0515 with the Department of Energy */
11/* */
12/* This file is part of the XRootD software suite. */
13/* */
14/* XRootD is free software: you can redistribute it and/or modify it under */
15/* the terms of the GNU Lesser General Public License as published by the */
16/* Free Software Foundation, either version 3 of the License, or (at your */
17/* option) any later version. */
18/* */
19/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22/* License for more details. */
23/* */
24/* You should have received a copy of the GNU Lesser General Public License */
25/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27/* */
28/* The copyright holder's institutional names and contributor's names may not */
29/* be used to endorse or promote products derived from this software without */
30/* specific prior written permission of the institution or contributor. */
31/******************************************************************************/
32
35
37
38class XrdCmsClientMan;
39class XrdOss;
40class XrdOucEnv;
41class XrdOucErrInfo;
42class XrdOucTList;
43struct XrdCmsData;
44class XrdCmsRRData;
45struct XrdSfsPrep;
46class XrdSysLogger;
47struct XrdVersionInfo;
48
49/******************************************************************************/
50/* R e m o t e F i n d e r */
51/******************************************************************************/
52
54{
55public:
56 void Added(const char *path, int Pend=0) {}
57
58 int Configure(const char *cfn, char *Args, XrdOucEnv *EnvInfo);
59
60 int Forward(XrdOucErrInfo &Resp, const char *cmd,
61 const char *arg1=0, const char *arg2=0,
62 XrdOucEnv *Env1=0, XrdOucEnv *Env2=0);
63
64 int Locate(XrdOucErrInfo &Resp, const char *path, int flags,
65 XrdOucEnv *Info=0);
66
68
69 int Prepare(XrdOucErrInfo &Resp, XrdSfsPrep &pargs,
70 XrdOucEnv *Info=0);
71
72 void Removed(const char *path) {}
73
74 void setSS(XrdOss *thess) {}
75
76 int Space(XrdOucErrInfo &Resp, const char *path, XrdOucEnv *Info=0);
77
78static bool VCheck(XrdVersionInfo &urVersion);
79
80 XrdCmsFinderRMT(XrdSysLogger *lp, int whoami=0, int Port=0);
82
83static const int MaxMan = 15;
84
85private:
86int Decode(char **resp);
87void Inform(XrdCmsClientMan *xman, struct iovec xmsg[], int xnum);
91int send2Man(XrdOucErrInfo &, const char *, struct iovec *, int);
93
99char *CMSPath;
110unsigned char SMode;
111unsigned char sendID;
112unsigned char savePath;
113};
114
115/******************************************************************************/
116/* T a r g e t F i n d e r */
117/******************************************************************************/
118
119class XrdOucStream;
120class XrdOucTList;
121
123{
124public:
125 void Added(const char *path, int Pend=0);
126
127 int Configure(const char *cfn, char *Args, XrdOucEnv *EnvInfo);
128
129 int Locate(XrdOucErrInfo &Resp, const char *path, int flags,
130 XrdOucEnv *Info=0);
131
133 XrdOucEnv *Info=0) {return 0;}
134
136
137 void PutInfo(XrdCmsPerfMon::PerfInfo &perfInfo, bool alert=false);
138
139 void Removed(const char *path);
140
141 void Resume (int Perm=1);
142 void Suspend(int Perm=1);
143
144 int Resource(int n);
145 int Reserve (int n);
146 int Release (int n);
147
148 int RunAdmin(char *Path, const char *vnid);
149
150 void *RunPM();
151
152 int Space(XrdOucErrInfo &Resp, const char *path, XrdOucEnv *envP=0)
153 {return 0;}
154
155 void *Start();
156
157 void Utilization(unsigned int util, bool alert=false);
158
159static bool VCheck(XrdVersionInfo &urVersion);
160
161 XrdCmsFinderTRG(XrdSysLogger *, int, int, XrdOss *theSS=0);
163
164private:
165
166void Hookup();
168
171char *Login;
184};
185#endif
Definition XrdCmsClientMan.hh:48
Definition XrdCmsClient.hh:116
Definition XrdCmsFinder.hh:54
XrdCmsClientMan * SelectManager(XrdOucErrInfo &Resp, const char *path)
int isMeta
Definition XrdCmsFinder.hh:106
unsigned char SMode
Definition XrdCmsFinder.hh:110
int send2Man(XrdOucErrInfo &, const char *, struct iovec *, int)
XrdOucTList * Managers()
Definition XrdCmsFinder.hh:67
int RepNone
Definition XrdCmsFinder.hh:102
int LocLocal(XrdOucErrInfo &Resp, XrdOucEnv *Env)
int isTarget
Definition XrdCmsFinder.hh:108
int myPort
Definition XrdCmsFinder.hh:109
XrdOucTList * myManList
Definition XrdCmsFinder.hh:96
int Forward(XrdOucErrInfo &Resp, const char *cmd, const char *arg1=0, const char *arg2=0, XrdOucEnv *Env1=0, XrdOucEnv *Env2=0)
XrdCmsClientMan * myManTable[MaxMan]
Definition XrdCmsFinder.hh:94
void Inform(XrdCmsClientMan *xman, struct iovec xmsg[], int xnum)
void setSS(XrdOss *thess)
Definition XrdCmsFinder.hh:74
int ConWait
Definition XrdCmsFinder.hh:100
int Decode(char **resp)
XrdSysMutex myData
Definition XrdCmsFinder.hh:98
XrdCmsClientMan * myManagers
Definition XrdCmsFinder.hh:95
static const int MaxMan
Definition XrdCmsFinder.hh:83
void Added(const char *path, int Pend=0)
Definition XrdCmsFinder.hh:56
unsigned char savePath
Definition XrdCmsFinder.hh:112
void Removed(const char *path)
Definition XrdCmsFinder.hh:72
int Locate(XrdOucErrInfo &Resp, const char *path, int flags, XrdOucEnv *Info=0)
int PrepWait
Definition XrdCmsFinder.hh:105
int isProxy
Definition XrdCmsFinder.hh:107
int RepDelay
Definition XrdCmsFinder.hh:101
int Prepare(XrdOucErrInfo &Resp, XrdSfsPrep &pargs, XrdOucEnv *Info=0)
static bool VCheck(XrdVersionInfo &urVersion)
int Space(XrdOucErrInfo &Resp, const char *path, XrdOucEnv *Info=0)
int Configure(const char *cfn, char *Args, XrdOucEnv *EnvInfo)
unsigned char sendID
Definition XrdCmsFinder.hh:111
XrdCmsFinderRMT(XrdSysLogger *lp, int whoami=0, int Port=0)
char * CMSPath
Definition XrdCmsFinder.hh:99
int myManCount
Definition XrdCmsFinder.hh:97
int RepWait
Definition XrdCmsFinder.hh:103
int FwdWait
Definition XrdCmsFinder.hh:104
int StartManagers(XrdOucTList *)
void SelectManFail(XrdOucErrInfo &Resp)
Definition XrdCmsFinder.hh:123
XrdCmsFinderTRG(XrdSysLogger *, int, int, XrdOss *theSS=0)
void Resume(int Perm=1)
int Process(XrdCmsRRData &Data)
int Release(int n)
XrdOss * SS
Definition XrdCmsFinder.hh:169
int Locate(XrdOucErrInfo &Resp, const char *path, int flags, XrdOucEnv *Info=0)
int myPort
Definition XrdCmsFinder.hh:178
XrdOucStream * CMSp
Definition XrdCmsFinder.hh:173
int resCur
Definition XrdCmsFinder.hh:177
void PutInfo(XrdCmsPerfMon::PerfInfo &perfInfo, bool alert=false)
void Utilization(unsigned int util, bool alert=false)
char * Login
Definition XrdCmsFinder.hh:171
int Space(XrdOucErrInfo &Resp, const char *path, XrdOucEnv *envP=0)
Definition XrdCmsFinder.hh:152
XrdOucTList * Managers()
Definition XrdCmsFinder.hh:135
int Prepare(XrdOucErrInfo &Resp, XrdSfsPrep &pargs, XrdOucEnv *Info=0)
Definition XrdCmsFinder.hh:132
void Removed(const char *path)
int perfInt
Definition XrdCmsFinder.hh:183
XrdSysMutex myData
Definition XrdCmsFinder.hh:174
int isRedir
Definition XrdCmsFinder.hh:179
XrdSysMutex rrMutex
Definition XrdCmsFinder.hh:175
int isProxy
Definition XrdCmsFinder.hh:180
XrdCmsPerfMon * perfMon
Definition XrdCmsFinder.hh:182
char * CMSPath
Definition XrdCmsFinder.hh:170
static bool VCheck(XrdVersionInfo &urVersion)
void Suspend(int Perm=1)
int Reserve(int n)
XrdOucTList * myManList
Definition XrdCmsFinder.hh:172
int Active
Definition XrdCmsFinder.hh:181
int RunAdmin(char *Path, const char *vnid)
void Added(const char *path, int Pend=0)
int Resource(int n)
int resMax
Definition XrdCmsFinder.hh:176
int Configure(const char *cfn, char *Args, XrdOucEnv *EnvInfo)
Definition XrdCmsPerfMon.hh:46
Definition XrdCmsRRData.hh:52
Definition XrdOss.hh:498
Definition XrdOucEnv.hh:42
Definition XrdOucErrInfo.hh:101
Definition XrdOucStream.hh:47
Definition XrdOucTList.hh:42
Definition XrdSysLogger.hh:53
Definition XrdSysPthread.hh:165
Structure used for reporting performance metrics.
Definition XrdCmsPerfMon.hh:81
< Prepare parameters
Definition XrdSfsInterface.hh:172