]> git.ipfire.org Git - thirdparty/squid.git/blame - src/LoadableModule.h
Prep for 3.3.12 and 3.4.4
[thirdparty/squid.git] / src / LoadableModule.h
CommitLineData
57afc994
AR
1#ifndef SQUID_LOADABLE_MODULE_H
2#define SQUID_LOADABLE_MODULE_H
3
4#include "SquidString.h"
5
6// wrapper for dlopen(3), libltdl, and friends
26ac0430
AJ
7class LoadableModule
8{
57afc994
AR
9public:
10 enum LoadMode { lmNow, lmLazy };
11
12public:
13 LoadableModule(const String &aName);
14 ~LoadableModule(); // unloads if loaded
15
16 bool loaded() const;
17 const String &name() const { return theName; }
18 const String &error() const { return theError; }
19
20 void load(int mode = lmNow); // throws Texc
21 void unload(); // throws Texc
22
23protected:
24 String theName;
25 String theError;
26 void *theHandle;
27
28private:
29 void *openModule(int mode);
30 bool closeModule();
31 const char *errorMsg();
32};
33
34#endif