25 |
|
|
26 |
#include <list> |
#include <list> |
27 |
#include <string> |
#include <string> |
28 |
|
#include <map> |
29 |
#include "Plugin.h" |
#include "Plugin.h" |
30 |
#include "ConnectionPlugin.h" |
#include "ConnectionPlugin.h" |
31 |
|
#include "PluginManagerInterface.h" |
32 |
|
|
33 |
using std::list; |
using std::list; |
34 |
using std::string; |
using std::string; |
35 |
|
|
36 |
class PluginManager { |
class PluginManager : public PluginManagerInterface { |
37 |
|
|
38 |
typedef struct { |
typedef struct { |
39 |
Plugin* plugin; |
Plugin* plugin; |
40 |
void* handler; |
void* handler; |
41 |
} Data; |
} Data; |
42 |
|
|
43 |
|
typedef struct { |
44 |
|
Plugin* plugin; |
45 |
|
int id; |
46 |
|
} ComRef; |
47 |
|
|
48 |
|
typedef std::map<const char*,ComRef> CommandMap; |
49 |
|
|
50 |
public: |
public: |
51 |
PluginManager(); |
PluginManager(); |
52 |
~PluginManager(); |
~PluginManager(); |
53 |
|
|
54 |
void loadPluginsDirectory(const char* dir_name); |
void loadPluginsDirectory(const char* dir_name); |
55 |
Plugin* loadPluginFile(const char* file_name); |
Plugin* loadPluginFile(const char* file_name); |
56 |
void loadConnectionPluginFile(const char* file_name); |
void loadConnectionPluginFile(const char* file_name); |
57 |
|
|
58 |
|
void receiveMsg(const string&); |
59 |
|
void emitMsg(const string&); |
60 |
|
|
61 |
// access to required plugins |
// access to required plugins |
62 |
ConnectionPlugin* connectionPlugin(); |
ConnectionPlugin* connectionPlugin(); |
63 |
Plugin* databasePlugin(); |
Plugin* databasePlugin(); |
64 |
Plugin* defaultPlugin(); |
Plugin* defaultPlugin(); |
65 |
|
void registerCommand(Plugin* plugin, const char* prefix, int id); |
66 |
|
|
67 |
private: |
private: |
68 |
list<Data> active; |
list<Data> active; |
69 |
ConnectionPlugin *connect; |
ConnectionPlugin *connect; |
70 |
|
CommandMap available_commands; |
71 |
}; |
}; |
72 |
|
|
73 |
#endif // PLUGINMANAGER_H |
#endif // PLUGINMANAGER_H |