15 #ifndef PTLIB_PLUGINMGR_H 16 #define PTLIB_PLUGINMGR_H 30 PTRACE(4,
"Cannot open plugin directory " << dir);
33 PTRACE(4,
"Enumerating plugin directory " << dir);
38 PLoadPluginDirectory<C>(obj, entry, suffix);
44 (suffix == NULL) || (fn.
GetTitle().
Right(strlen(suffix)) *= suffix)
47 obj.LoadPlugin(entry);
64 void LoadPluginDirectory (
const PDirectory & dir);
72 PObject * CreatePluginsDevice(
const PString & serviceName,
const PString & serviceType,
int userData = 0)
const;
75 PBoolean GetPluginsDeviceCapabilities(
const PString & serviceType,
const PString & serviceName,
const PString & deviceName,
void * capabilities)
const;
81 static bool AddPluginDirs(
const PString & dirs);
147 {
if (pluginMgr == NULL)
return false;
else return pluginMgr->LoadPlugin(fileName); }
150 {
if (pluginMgr != NULL) pluginMgr->LoadPluginDirectory(directory); }
156 {
return pluginDLLs; }
173 #define PLUGIN_LOADER_STARTUP_NAME "PluginLoaderStartup" 178 #endif // PTLIB_PLUGINMGR_H virtual PluginListType GetPluginList() const
Definition: pluginmgr.h:155
#define PDECLARE_NOTIFIER(notifier, notifiee, func)
Declare PNotifier derived class with INT parameter. Uses PDECLARE_NOTIFIER2 macro.
Definition: notifier.h:174
void PLoadPluginDirectory(C &obj, const PDirectory &directory, const char *suffix=NULL)
Definition: pluginmgr.h:26
#define PCLASSINFO(cls, par)
Declare all the standard PTLib class information.
Definition: object.h:1049
PBoolean Next()
Move to the next file in the directory scan.
Class specialisation for PNotifierTemplate<INT>
static PString GetExtension()
Get the extension used by this platform for dynamic link libraries.
Definition: pluginmgr.h:57
Definition: pluginmgr.h:139
This class describes a full description for a file on the particular platform.
Definition: filepath.h:65
Definition: pluginmgr.h:90
PMutex m_notifiersMutex
Definition: pluginmgr.h:130
PMutex m_pluginsMutex
Definition: pluginmgr.h:124
PString Right(PINDEX len) const
Extract a portion of the string into a new string.
This is an array collection class of PString objects.
Definition: pstring.h:2024
#define PTRACE(level, args)
Output trace.
Definition: object.h:530
PDictionary< PString, PDynaLink > PluginListType
Definition: pluginmgr.h:142
virtual PBoolean Open(int scanMask=PFileInfo::AllFiles)
Open the directory for scanning its list of files.
BOOL PBoolean
Definition: object.h:102
Class to represent a directory in the operating system file system.
Definition: pdirect.h:182
virtual void OnShutdown()
Definition: pluginmgr.h:160
PPluginManager * pluginMgr
Definition: pluginmgr.h:169
const char * signatureFunctionName
Definition: pluginmgr.h:168
The character string class.
Definition: pstring.h:108
PArray< PPluginService > m_services
Definition: pluginmgr.h:128
void LoadPluginDirectory(const PDirectory &directory)
Definition: pluginmgr.h:149
PluginListType pluginDLLs
Definition: pluginmgr.h:164
A dynamic link library.
Definition: dynalink.h:51
static PString Empty()
Return an empty string.
virtual PFilePathString GetEntryName() const
Get the name (without the volume or directory path) of the current entry in the directory scan...
virtual void OnStartup()
Definition: pluginmgr.h:158
Definition: pluginmgr.h:20
This is a list collection class of PString objects.
Definition: pstring.h:2184
PFACTORY_LOAD(PluginLoaderStartup)
PMutex m_servicesMutex
Definition: pluginmgr.h:127
NotificationCode
Definition: pluginmgr.h:89
PFilePathString GetTitle() const
Get the title component of the full file specification, eg for the DOS file "C:\SRC\PWLIB\FRED.DAT" this would be "FRED".
PArray< PDynaLink > m_plugins
Definition: pluginmgr.h:125
PBoolean LoadPlugin(const PString &fileName)
Definition: pluginmgr.h:146
PList< PNotifier > m_notifiers
Definition: pluginmgr.h:131
virtual void OnLoadPlugin(PDynaLink &, INT)
Definition: pluginmgr.h:152
Ultimate parent class for all objects in the class library.
Definition: object.h:1118
PFilePathString GetType() const
Get the file type of the file.