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

Contents of /smsdaemon/PluginManager.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 188 - (show 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
2 #include "PluginManager.h"
3
4 #include "Logger.h"
5
6 #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 #include "plugins/HostStatusPlugin.h"
13 #include "plugins/WeatherPlugin.h"
14
15 typedef std::map<std::string, Plugin*>::iterator MapIterator;
16
17 PluginManager::PluginManager()
18 {
19 }
20
21 PluginManager::~PluginManager()
22 {
23 }
24
25
26 void PluginManager::AddPlugin(Plugin* plugin)
27 {
28 if (plugin != 0)
29 {
30 if (plugin->IsHelper())
31 {
32 _helper_plugins.push_back(plugin);
33 }
34 else
35 {
36 std::string command = plugin->GetCommand();
37
38 if ( _plugins[ command ] == 0)
39 _plugins[ command ] = plugin;
40 else
41 Logger::logMessage( std::string("AddPlugin() -- already have a plugin called ") + command);
42 }
43 }
44 else
45 {
46 Logger::logMessage("AddPlugin() -- cannot register a null pointer");
47 }
48 }
49
50 void PluginManager::LoadPlugins()
51 {
52 static EchoPlugin echo;
53
54 static SpamPlugin spam;
55
56 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
59 static TogPlugin tog;
60
61 static StatusPlugin status;
62
63 static ListPlugin list;
64
65 static HostStatusPlugin hoststatus;
66
67 static WeatherPlugin weather;
68
69 for(MapIterator it = _plugins.begin(); it != _plugins.end(); ++it)
70 {
71 Plugin* pl = (*it).second;
72 if (pl != 0)
73 Logger::logMessage( std::string("Loaded plugin \"") + pl->GetCommand() + "\" - " + pl->GetDescription() );
74 }
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