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<INT>
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
#define PFACTORY_LOAD(ConcreteType)
Definition: pfactory.h:431
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
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