/[projects]/smsdaemon/PluginManager.cpp
ViewVC logotype

Annotation of /smsdaemon/PluginManager.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 35 - (hide annotations) (download)
Tue Jun 10 14:38:59 2008 UTC (15 years, 11 months ago) by torben
File size: 1508 byte(s)
Finished PluginManager::AddPlugin() so that the plugins can register them selves.

Added a plugin for executing an external program.


1 torben 26
2     #include "PluginManager.h"
3    
4     #include "common.h"
5    
6 torben 27 #include "EchoPlugin.h"
7 torben 28 #include "SpamPlugin.h"
8 torben 35 #include "ShellExecPlugin.h"
9 torben 26
10 torben 35
11 torben 26 typedef std::map<std::string, Plugin*>::iterator MapIterator;
12    
13     PluginManager::PluginManager()
14     {
15     }
16    
17     PluginManager::~PluginManager()
18     {
19     }
20    
21    
22 torben 28 void PluginManager::AddPlugin(Plugin* plugin)
23     {
24 torben 35 Common* cmn = Common::instance();
25    
26     if (plugin != 0)
27     {
28     std::string command = plugin->GetCommand();
29    
30     if ( _plugins[ command ] == 0)
31     _plugins[ command ] = plugin;
32     else
33     cmn->logMessage( std::string("AddPlugin() -- already have a plugin called ") + command);
34     }
35     else
36     {
37     cmn->logMessage("AddPlugin() -- cannot register a null pointer");
38     }
39 torben 28 }
40    
41 torben 26 void PluginManager::LoadPlugins()
42     {
43     Common* cmn = Common::instance();
44    
45     static EchoPlugin echo;
46 torben 28
47     static SpamPlugin spam;
48 torben 26
49 torben 35 static ShellExecPlugin wake("wake", "/home/torben/bin/wake");
50    
51    
52 torben 26 for(MapIterator it = _plugins.begin(); it != _plugins.end(); ++it)
53     {
54     Plugin* pl = (*it).second;
55 torben 35 if (pl != 0)
56     cmn->logMessage( std::string("Loaded plugin \"") + pl->GetCommand() + "\" - " + pl->GetDescription() );
57 torben 26 }
58     }
59    
60     Plugin* PluginManager::GetPlugin(const std::string& pluginname)
61     {
62     return _plugins[ pluginname ];
63     }
64    
65    
66     std::vector<Plugin*> PluginManager::GetPluginList()
67     {
68     typedef std::map<std::string, Plugin*>::iterator MapIterator;
69     std::vector<Plugin*> plugin_list;
70    
71     for (MapIterator it = _plugins.begin(); it != _plugins.end(); ++it)
72     {
73     Plugin* pl = (*it).second;
74     plugin_list.push_back(pl);
75     }
76    
77    
78     return plugin_list;
79     }

  ViewVC Help
Powered by ViewVC 1.1.20