#include <module.h>
Öffentliche Methoden | |
int | register_module (module *m) |
int | unregister_module (module *m) |
int | unload_all (void) |
int | broadcast (const char *msg) |
module * | get_module (const char *name, int id=-1) |
module * | get_module (int id) |
Öffentliche, statische Methoden | |
static module_master & | ptr (void) |
Private Methoden | |
module_master (void) | |
Erstellt die einzige Instanz des Singletons. | |
module_master (const module_master &) | |
Private Attribute | |
vector< module_info > | db |
module_master::module_master | ( | void | ) | [private] |
Erstellt die einzige Instanz des Singletons.
module_master::module_master | ( | const module_master & | ) | [private] |
int module_master::broadcast | ( | const char * | msg | ) |
Reicht eine Nachricht an alle Module weiter. Wie diese darauf reagieren, ist in handle_msg festgelegt.
msg | Die zu sendende Nachricht |
module* module_master::get_module | ( | int | id | ) |
module * module_master::get_module | ( | const char * | name, | |
int | id = -1 | |||
) |
Liefert die Adresse eines bestimmten Moduls. Wenn eine ID von -1 angegeben wird, was standardmäßig der Fall ist, geht das Programm davon aus, dass das erste Modul, das den selben Namen trägt, gefunden werden soll.
name | Der Name des Moduls, beispielsweise "module_net_tcp" | |
id | Die ID des Moduls. Momentan ungenutzt. |
module_master & module_master::ptr | ( | void | ) | [static] |
Liefert eine Instanz des Singletons. Wenn der Singleton auf diese Weise (über eine statische Instanz) erzeugt wird, hat dies den Vorteil, dass man Konstruktoren/Destruktoren verwenden kann und sich nicht um Speicherverwaltung kümmern muss.
int module_master::register_module | ( | module * | m | ) |
Registriert ein Modul, indem dieses zur Datenbank hinzugefügt wird. Die Anzahl der Module kann beliebig groß sein, sofern das RAM mitmacht. Beim Registrieren wird das Modul durch einen Aufruf von mod_load() gleich geladen.
m | Das zu registrierende Modul. |
int module_master::unload_all | ( | void | ) |
Beendet alle Module.
int module_master::unregister_module | ( | module * | m | ) |
Entfernt die Regstrierung eines Moduls aus der Datenbank. Das Modul wird dabei auch gleich beendet, sodass z.B. benutzter Speicher wieder freigegeben wird.
m | Das zu entfernende Modul |
vector<module_info> module_master::db [private] |