xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
XrdOucPinLoader.hh
Go to the documentation of this file.
1 #ifndef __XRDOUCPINLOADER_HH__
2 #define __XRDOUCPINLOADER_HH__
3 /******************************************************************************/
4 /* */
5 /* X r d O u c P i n L o a d e r . h h */
6 /* */
7 /* (c) 2014 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 //------------------------------------------------------------------------------
34 //------------------------------------------------------------------------------
35 
36 //------------------------------------------------------------------------------
43 //------------------------------------------------------------------------------
44 
45 class XrdSysError;
46 class XrdSysPlugin;
47 struct XrdVersionInfo;
48 
50 {
51 public:
52 
53 //------------------------------------------------------------------------------
60 //------------------------------------------------------------------------------
61 
62 XrdSysPlugin *Export() {XrdSysPlugin *tmp = piP; piP = 0; return tmp;}
63 
64 //------------------------------------------------------------------------------
70 //------------------------------------------------------------------------------
71 
72 void Global(bool glbl) {global = glbl;}
73 
74 //------------------------------------------------------------------------------
79 //------------------------------------------------------------------------------
80 
81 const char *LastMsg() {return (errBP ? errBP : "");}
82 
83 //------------------------------------------------------------------------------
89 //------------------------------------------------------------------------------
90 
91 const char *Path() {return theLib;}
92 
93 //------------------------------------------------------------------------------
101 //------------------------------------------------------------------------------
102 
103 void *Resolve(const char *symbl, int mcnt=1);
104 
105 //------------------------------------------------------------------------------
111 //------------------------------------------------------------------------------
112 
113 void Unload(bool dodel=false);
114 
115 //------------------------------------------------------------------------------
125 //------------------------------------------------------------------------------
126 
128  XrdVersionInfo *vInfo,
129  const char *drctv,
130  const char *plib);
131 
132 //------------------------------------------------------------------------------
141 //------------------------------------------------------------------------------
142 
143  XrdOucPinLoader(char *eBuff,
144  int eBlen,
145  XrdVersionInfo *vInfo,
146  const char *drctv,
147  const char *plib);
148 
149 //------------------------------------------------------------------------------
157 //------------------------------------------------------------------------------
158 
159  XrdOucPinLoader(XrdVersionInfo *vInfo,
160  const char *drctv,
161  const char *plib);
162 
163 //------------------------------------------------------------------------------
167 //------------------------------------------------------------------------------
168 
170 
171 private:
172 void Inform(const char *txt1, const char *txt2=0,
173  const char *txt3=0, const char *txt4=0,
174  const char *txt5=0);
175 void Init(const char *drctv, const char *plib);
176 bool LoadLib(int mcnt);
177 
180 XrdVersionInfo *viP;
181 const char *dName;
182 char *theLib;
183 char *altLib;
184 char *errBP;
185 int errBL;
186 bool global;
187 bool frBuff;
188 bool badLib;
189 };
190 #endif
char * altLib
Definition: XrdOucPinLoader.hh:183
char * theLib
Definition: XrdOucPinLoader.hh:182
int errBL
Definition: XrdOucPinLoader.hh:185
const char * dName
Definition: XrdOucPinLoader.hh:181
XrdSysPlugin * Export()
Definition: XrdOucPinLoader.hh:62
void Unload(bool dodel=false)
XrdSysError * eDest
Definition: XrdOucPinLoader.hh:178
char * errBP
Definition: XrdOucPinLoader.hh:184
Definition: XrdOucPinLoader.hh:49
const char * LastMsg()
Definition: XrdOucPinLoader.hh:81
Definition: XrdSysError.hh:89
void Global(bool glbl)
Definition: XrdOucPinLoader.hh:72
Definition: XrdSysPlugin.hh:52
void * Resolve(const char *symbl, int mcnt=1)
bool frBuff
Definition: XrdOucPinLoader.hh:187
XrdOucPinLoader(XrdSysError *errP, XrdVersionInfo *vInfo, const char *drctv, const char *plib)
void Init(const char *drctv, const char *plib)
const char * Path()
Definition: XrdOucPinLoader.hh:91
void Inform(const char *txt1, const char *txt2=0, const char *txt3=0, const char *txt4=0, const char *txt5=0)
bool LoadLib(int mcnt)
bool badLib
Definition: XrdOucPinLoader.hh:188
XrdSysPlugin * piP
Definition: XrdOucPinLoader.hh:179
bool global
Definition: XrdOucPinLoader.hh:186
XrdVersionInfo * viP
Definition: XrdOucPinLoader.hh:180