PPluginManager Class Reference

`#include <pluginmgr.h>`

Inheritance diagram for PPluginManager:

## Public Types

enum | NotificationCode { LoadingPlugIn, UnloadingPlugIn }
Public Types inherited from PObject
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
| Result of the comparison operation performed by the `Compare()` function. More...

## Public Member Functions

PBoolean | LoadPlugin (const PString &fileName)
void | LoadPluginDirectory (const PDirectory &dir)
void | OnShutdown ()
PStringArray | GetPluginTypes () const
PStringArray | 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
PStringArray | GetPluginsDeviceNames (const PString &serviceName, const PString &serviceType, int userData=0) const
PBoolean | GetPluginsDeviceCapabilities (const PString &serviceType, const PString &serviceName, const PString &deviceName, void *capabilities) const
PBoolean | RegisterService (const PString &serviceName, const PString &serviceType, PPluginServiceDescriptor *descriptor)
void | AddNotifier (const PNotifier &filterFunction, PBoolean existing=false)
| Add a notifier to the plugin manager. More...
void | RemoveNotifier (const PNotifier &filterFunction)
Public Member Functions inherited from PObject
virtual | ~PObject ()
virtual PObject * | Clone () const
| Create a copy of the class on the heap. More...
virtual PINDEX | HashFunction () const
| This function yields a hash value required by the `PDictionary` class. More...
virtual const char * | GetClass (unsigned ancestor=0) const
| Get the current dynamic type of the object instance. More...
PBoolean | IsClass (const char *cls) const
virtual PBoolean | InternalIsDescendant (const char *clsName) const
| Determine if the dynamic type of the current instance is a descendent of the specified class. More...
virtual Comparison | Compare (const PObject &obj) const
| Compare the two objects and return their relative rank. More...
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const
| Determine the byte wise comparison of two objects. More...
bool | operator== (const PObject &obj) const
| Compare the two objects. More...
bool | operator!= (const PObject &obj) const
| Compare the two objects. More...
bool | operator< (const PObject &obj) const
| Compare the two objects. More...
bool | operator> (const PObject &obj) const
| Compare the two objects. More...
bool | operator<= (const PObject &obj) const
| Compare the two objects. More...
bool | operator>= (const PObject &obj) const
| Compare the two objects. More...
virtual void | PrintOn (ostream &strm) const
| Output the contents of the object to the stream. More...
virtual void | ReadFrom (istream &strm)
| Input the contents of the object from the stream. More...

## Static Public Member Functions

static bool | AddPluginDirs (const PString &dirs)
static PStringArray | GetPluginDirs ()
static PPluginManager & | GetPluginManager ()
Static Public Member Functions inherited from PObject
static const char * | Class ()
| Get the name of the class as a C string. More...
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
| Internal function caled from CompareObjectMemoryDirect() More...

## Protected Member Functions

void | LoadPluginDirectory (const PDirectory &directory, const PStringList &suffixes)
void | CallNotifier (PDynaLink &dll, NotificationCode code)
Protected Member Functions inherited from PObject
| PObject ()
| Constructor for PObject, made protected so cannot ever create one on its own. More...

## Protected Attributes

PMutex | m_pluginsMutex
PArray< PDynaLink > | m_plugins
PMutex | m_servicesMutex
PArray< PPluginService > | m_services
PMutex | m_notifiersMutex
PList< PNotifier > | m_notifiers

## Member Enumeration Documentation

## NotificationCode

enum PPluginManager::NotificationCode

Enumerator
LoadingPlugIn |
UnloadingPlugIn |

## Member Function Documentation

## AddNotifier()

void PPluginManager::AddNotifier | ( | const PNotifier & | filterFunction,
|  | PBoolean | 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));

## AddPluginDirs()

static bool PPluginManager::AddPluginDirs | ( | const PString & | dirs | ) |

static

## CallNotifier()

void PPluginManager::CallNotifier | ( | PDynaLink & | dll,
|  | NotificationCode | code
| ) |  |

protected

## CreatePluginsDevice()

PObject* PPluginManager::CreatePluginsDevice | ( | const PString & | serviceName,
|  | const PString & | serviceType,
|  | int | userData = `0`
| ) |  | const

## CreatePluginsDeviceByName()

PObject* PPluginManager::CreatePluginsDeviceByName | ( | const PString & | deviceName,
|  | const PString & | serviceType,
|  | int | userData = `0`,
|  | const PString & | serviceName = `PString::Empty()`
| ) |  | const

## GetPluginDirs()

static PStringArray PPluginManager::GetPluginDirs | ( |  | ) |

static

## GetPluginManager()

static PPluginManager& PPluginManager::GetPluginManager | ( |  | ) |

static

## GetPluginsDeviceCapabilities()

PBoolean PPluginManager::GetPluginsDeviceCapabilities | ( | const PString & | serviceType,
|  | const PString & | serviceName,
|  | const PString & | deviceName,
|  | void * | capabilities
| ) |  | const

## GetPluginsDeviceNames()

PStringArray PPluginManager::GetPluginsDeviceNames | ( | const PString & | serviceName,
|  | const PString & | serviceType,
|  | int | userData = `0`
| ) |  | const

## GetPluginsProviding()

PStringArray PPluginManager::GetPluginsProviding | ( | const PString & | serviceType | ) | const

## GetPluginTypes()

PStringArray PPluginManager::GetPluginTypes | ( |  | ) | const

## GetServiceDescriptor()

PPluginServiceDescriptor* PPluginManager::GetServiceDescriptor | ( | const PString & | serviceName,
|  | const PString & | serviceType
| ) |  | const

## LoadPlugin()

PBoolean PPluginManager::LoadPlugin | ( | const PString & | fileName | ) |

## LoadPluginDirectory() [1/2]

void PPluginManager::LoadPluginDirectory | ( | const PDirectory & | dir | ) |

## LoadPluginDirectory() [2/2]

void PPluginManager::LoadPluginDirectory | ( | const PDirectory & | directory,
|  | const PStringList & | suffixes
| ) |  |

protected

## OnShutdown()

void PPluginManager::OnShutdown | ( |  | ) |

## RegisterService()

PBoolean PPluginManager::RegisterService | ( | const PString & | serviceName,
|  | const PString & | serviceType,
|  | PPluginServiceDescriptor * | descriptor
| ) |  |

## RemoveNotifier()

void PPluginManager::RemoveNotifier | ( | const PNotifier & | filterFunction | ) |

## Member Data Documentation

## m_notifiers

PList<PNotifier> PPluginManager::m_notifiers

protected

## m_notifiersMutex

PMutex PPluginManager::m_notifiersMutex

protected

## m_plugins

PArray<PDynaLink> PPluginManager::m_plugins

protected

## m_pluginsMutex

PMutex PPluginManager::m_pluginsMutex

protected

## m_services

PArray<PPluginService> PPluginManager::m_services

protected

## m_servicesMutex

PMutex PPluginManager::m_servicesMutex

protected

The documentation for this class was generated from the following file:

- pluginmgr.h