#include <pluginmgr.h>
Inheritance diagram for PPluginManager:
Public Member Functions | |
BOOL | LoadPlugin (const PString &fileName) |
void | LoadPluginDirectory (const PDirectory &dir) |
PStringList | GetPluginTypes () const |
PStringList | GetPluginsProviding (const PString &serviceType) const |
PPluginServiceDescriptor * | GetServiceDescriptor (const PString &serviceName, const PString &serviceType) const |
PObject * | CreatePluginsDevice (const PString &serviceName, const PString &serviceType, int userData=0) const |
PObject * | CreatePluginsDeviceByName (const PString &deviceName, const PString &serviceType, int userData=0, const PString &serviceName=PString::Empty()) const |
PStringList | GetPluginsDeviceNames (const PString &serviceName, const PString &serviceType, int userData=0) const |
BOOL | RegisterService (const PString &serviceName, const PString &serviceType, PPluginServiceDescriptor *descriptor) |
void | AddNotifier (const PNotifier &filterFunction, BOOL existing=FALSE) |
void | RemoveNotifier (const PNotifier &filterFunction) |
Static Public Member Functions | |
static PStringArray | GetPluginDirs () |
static PPluginManager & | GetPluginManager () |
Protected Member Functions | |
void | LoadPluginDirectory (const PDirectory &directory, const PStringList &suffixes) |
void | CallNotifier (PDynaLink &dll, INT code) |
Protected Attributes | |
PMutex | pluginListMutex |
PList< PDynaLink > | pluginList |
PMutex | serviceListMutex |
PList< PPluginService > | serviceList |
PMutex | notifierMutex |
PList< PNotifier > | notifierList |
BOOL PPluginManager::LoadPlugin | ( | const PString & | fileName | ) |
void PPluginManager::LoadPluginDirectory | ( | const PDirectory & | dir | ) |
PStringList PPluginManager::GetPluginTypes | ( | ) | const |
PStringList PPluginManager::GetPluginsProviding | ( | const PString & | serviceType | ) | const |
PPluginServiceDescriptor* PPluginManager::GetServiceDescriptor | ( | const PString & | serviceName, | |
const PString & | serviceType | |||
) | const |
PObject* PPluginManager::CreatePluginsDevice | ( | const PString & | serviceName, | |
const PString & | serviceType, | |||
int | userData = 0 | |||
) | const |
PObject* PPluginManager::CreatePluginsDeviceByName | ( | const PString & | deviceName, | |
const PString & | serviceType, | |||
int | userData = 0 , |
|||
const PString & | serviceName = PString::Empty() | |||
) | const |
PStringList PPluginManager::GetPluginsDeviceNames | ( | const PString & | serviceName, | |
const PString & | serviceType, | |||
int | userData = 0 | |||
) | const |
BOOL PPluginManager::RegisterService | ( | const PString & | serviceName, | |
const PString & | serviceType, | |||
PPluginServiceDescriptor * | descriptor | |||
) |
static PStringArray PPluginManager::GetPluginDirs | ( | ) | [static] |
static PPluginManager& PPluginManager::GetPluginManager | ( | ) | [static] |
void PPluginManager::AddNotifier | ( | const PNotifier & | filterFunction, | |
BOOL | existing = FALSE | |||
) |
Add a notifier to the plugin manager. The call back function is executed just after loading, or just after unloading, a plugin.
To use define: PDECLARE_NOTIFIER(PDynaLink, YourClass, YourFunction); and void YourClass::YourFunction(PDynaLink & dll, INT code) { code == 0 means loading code == 1 means unloading } and to connect to the plugin manager: PPluginManager & mgr = PPluginManager::GetPluginManager(); mgr->AddNotifier((PCREATE_NOTIFIER(YourFunction));
void PPluginManager::RemoveNotifier | ( | const PNotifier & | filterFunction | ) |
void PPluginManager::LoadPluginDirectory | ( | const PDirectory & | directory, | |
const PStringList & | suffixes | |||
) | [protected] |
void PPluginManager::CallNotifier | ( | PDynaLink & | dll, | |
INT | code | |||
) | [protected] |
PMutex PPluginManager::pluginListMutex [protected] |
PList<PDynaLink> PPluginManager::pluginList [protected] |
PMutex PPluginManager::serviceListMutex [protected] |
PList<PPluginService> PPluginManager::serviceList [protected] |
PMutex PPluginManager::notifierMutex [protected] |
PList<PNotifier> PPluginManager::notifierList [protected] |