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);
173 #define PLUGIN_LOADER_STARTUP_NAME "PluginLoaderStartup"
178 #endif // PTLIB_PLUGINMGR_H
void PLoadPluginDirectory(C &obj, const PDirectory &directory, const char *suffix=NULL)
Definition: pluginmgr.h:26
PPluginServiceDescriptor * GetServiceDescriptor(const PString &serviceName, const PString &serviceType) const
PBoolean Next()
Move to the next file in the directory scan.
Class specialisation for PNotifierTemplate
static PString GetExtension()
Get the extension used by this platform for dynamic link libraries.
Definition: pluginmgr.h:57
static PPluginManager & GetPluginManager()
PObject * CreatePluginsDevice(const PString &serviceName, const PString &serviceType, int userData=0) const
Definition: pluginmgr.h:139
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".
virtual PFilePathString GetEntryName() const
Get the name (without the volume or directory path) of the current entry in the directory scan...
This class describes a full description for a file on the particular platform.
Definition: filepath.h:65
Definition: pluginmgr.h:90
PBoolean LoadPlugin(const PString &fileName)
PMutex m_notifiersMutex
Definition: pluginmgr.h:130
PMutex m_pluginsMutex
Definition: pluginmgr.h:124
PObject * CreatePluginsDeviceByName(const PString &deviceName, const PString &serviceType, int userData=0, const PString &serviceName=PString::Empty()) const
This is an array collection class of PString objects.
Definition: pstring.h:2024
PString Right(PINDEX len) const
Extract a portion of the string into a new string.
#define PTRACE(level, args)
Output trace.
Definition: object.h:530
static bool AddPluginDirs(const PString &dirs)
PDictionary< PString, PDynaLink > PluginListType
Definition: pluginmgr.h:142
virtual PBoolean Open(int scanMask=PFileInfo::AllFiles)
Open the directory for scanning its list of files.
virtual PluginListType GetPluginList() const
Definition: pluginmgr.h:155
BOOL PBoolean
Definition: object.h:102
Class to represent a directory in the operating system file system.
Definition: pdirect.h:182
void LoadPluginDirectory(const PDirectory &dir)
PPluginModuleManager(const char *signatureFunctionName, PPluginManager *pluginMgr=NULL)
virtual void OnShutdown()
Definition: pluginmgr.h:160
PPluginManager * pluginMgr
Definition: pluginmgr.h:169
PBoolean GetPluginsDeviceCapabilities(const PString &serviceType, const PString &serviceName, const PString &deviceName, void *capabilities) const
const char * signatureFunctionName
Definition: pluginmgr.h:168
PStringArray GetPluginsProviding(const PString &serviceType) const
PStringArray GetPluginTypes() const
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
Definition: pluginmgr.h:91
A dynamic link library.
Definition: dynalink.h:51
void RemoveNotifier(const PNotifier &filterFunction)
static PString Empty()
Return an empty string.
virtual void OnStartup()
Definition: pluginmgr.h:158
void CallNotifier(PDynaLink &dll, NotificationCode code)
Definition: pluginmgr.h:20
This is a list collection class of PString objects.
Definition: pstring.h:2184
PFACTORY_LOAD(PluginLoaderStartup)
PFilePathString GetType() const
Get the file type of the file.
PDECLARE_NOTIFIER(PDynaLink, PPluginModuleManager, OnLoadModule)
PMutex m_servicesMutex
Definition: pluginmgr.h:127
NotificationCode
Definition: pluginmgr.h:89
PArray< PDynaLink > m_plugins
Definition: pluginmgr.h:125
static PStringArray GetPluginDirs()
PBoolean LoadPlugin(const PString &fileName)
Definition: pluginmgr.h:146
PList< PNotifier > m_notifiers
Definition: pluginmgr.h:131
void AddNotifier(const PNotifier &filterFunction, PBoolean existing=false)
Add a notifier to the plugin manager.
virtual void OnLoadPlugin(PDynaLink &, INT)
Definition: pluginmgr.h:152
Ultimate parent class for all objects in the class library.
Definition: object.h:1118
PBoolean RegisterService(const PString &serviceName, const PString &serviceType, PPluginServiceDescriptor *descriptor)
PStringArray GetPluginsDeviceNames(const PString &serviceName, const PString &serviceType, int userData=0) const