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

Annotation of /smsdaemon/PluginManager.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 188 - (hide annotations) (download)
Mon Dec 15 13:27:53 2008 UTC (15 years, 5 months ago) by torben
File size: 2004 byte(s)
First version of a a weather plugin

1 torben 26
2     #include "PluginManager.h"
3    
4 torben 157 #include "Logger.h"
5 torben 26
6 torben 132 #include "plugins/EchoPlugin.h"
7     #include "plugins/SpamPlugin.h"
8     #include "plugins/ShellExecPlugin.h"
9     #include "plugins/TogPlugin.h"
10     #include "plugins/StatusPlugin.h"
11     #include "plugins/ListPlugin.h"
12 torben 137 #include "plugins/HostStatusPlugin.h"
13 torben 188 #include "plugins/WeatherPlugin.h"
14 torben 26
15     typedef std::map<std::string, Plugin*>::iterator MapIterator;
16    
17     PluginManager::PluginManager()
18     {
19     }
20    
21     PluginManager::~PluginManager()
22     {
23     }
24    
25    
26 torben 28 void PluginManager::AddPlugin(Plugin* plugin)
27     {
28 torben 35 if (plugin != 0)
29     {
30 torben 184 if (plugin->IsHelper())
31     {
32     _helper_plugins.push_back(plugin);
33     }
34     else
35     {
36     std::string command = plugin->GetCommand();
37 torben 35
38 torben 184 if ( _plugins[ command ] == 0)
39     _plugins[ command ] = plugin;
40     else
41     Logger::logMessage( std::string("AddPlugin() -- already have a plugin called ") + command);
42     }
43 torben 35 }
44     else
45     {
46 torben 157 Logger::logMessage("AddPlugin() -- cannot register a null pointer");
47 torben 35 }
48 torben 28 }
49    
50 torben 26 void PluginManager::LoadPlugins()
51     {
52     static EchoPlugin echo;
53 torben 28
54     static SpamPlugin spam;
55 torben 26
56 torben 107 static ShellExecPlugin wake("wake", "/home/torben/bin/wake", false, false);
57     static ShellExecPlugin ping("ping", "nmap -sP 192.168.10.1-255 | grep appears | awk '{print $2}'", false,true);
58 torben 35
59 torben 49 static TogPlugin tog;
60    
61 torben 101 static StatusPlugin status;
62    
63 torben 114 static ListPlugin list;
64    
65 torben 137 static HostStatusPlugin hoststatus;
66    
67 torben 188 static WeatherPlugin weather;
68    
69 torben 26 for(MapIterator it = _plugins.begin(); it != _plugins.end(); ++it)
70     {
71     Plugin* pl = (*it).second;
72 torben 35 if (pl != 0)
73 torben 157 Logger::logMessage( std::string("Loaded plugin \"") + pl->GetCommand() + "\" - " + pl->GetDescription() );
74 torben 26 }
75     }
76    
77     Plugin* PluginManager::GetPlugin(const std::string& pluginname)
78     {
79     return _plugins[ pluginname ];
80     }
81    
82    
83     std::vector<Plugin*> PluginManager::GetPluginList()
84     {
85     typedef std::map<std::string, Plugin*>::iterator MapIterator;
86     std::vector<Plugin*> plugin_list;
87    
88     for (MapIterator it = _plugins.begin(); it != _plugins.end(); ++it)
89     {
90     Plugin* pl = (*it).second;
91     plugin_list.push_back(pl);
92     }
93    
94    
95     return plugin_list;
96     }

  ViewVC Help
Powered by ViewVC 1.1.20