23 #include <tools/plugin/plugin_tool.h> 25 #include <netcomm/fawkes/client.h> 26 #include <plugin/net/messages.h> 27 #include <plugin/net/list_message.h> 28 #include <utils/system/argparser.h> 55 plugin_name = argp->
arg(
"l");
56 }
else if ( argp->
has_arg(
"u") ) {
58 plugin_name = argp->
arg(
"u");
59 }
else if ( argp->
has_arg(
"R") ) {
61 plugin_name = argp->
arg(
"R");
62 }
else if ( argp->
has_arg(
"w") ) {
64 }
else if ( argp->
has_arg(
"a") ) {
65 opmode = M_LIST_AVAIL;
67 opmode = M_LIST_LOADED;
103 printf(
"Usage: %s [-l plugin|-u plugin|-R plugin|-w|-a|-L] [-r host[:port]]\n" 104 " -l plugin Load plugin with given name\n" 105 " -u plugin Unload plugin with given name\n" 106 " -R plugin Reload plugin with given name\n" 107 " -w Watch all load/unload operations\n" 108 " -a List available plugins\n" 109 " -L List loaded plugins (default)\n\n" 110 " -r host[:port] Remote host (and optionally port) to connect to\n\n" 111 " If called without any option list currently loaded plugins\n\n",
123 this->plugin_name = plugin_name;
136 this->plugin_name = plugin_name;
157 opmode = M_LIST_LOADED;
167 c->wake(FAWKES_CID_PLUGINMANAGER);
176 printf(
"Requesting loading of plugin %s\n", plugin_name);
178 strncpy(l->
name, plugin_name, PLUGIN_MSG_NAME_LENGTH);
186 c->wait(FAWKES_CID_PLUGINMANAGER);
195 printf(
"Requesting unloading of plugin %s\n", plugin_name);
197 strncpy(m->
name, plugin_name, PLUGIN_MSG_NAME_LENGTH);
205 c->wait(FAWKES_CID_PLUGINMANAGER);
212 PluginTool::list_avail()
214 printf(
"Request the list of all available plugins\n");
220 c->wait(FAWKES_CID_PLUGINMANAGER);
227 PluginTool::list_loaded()
230 printf(
"Request the list of all loaded plugins\n");
236 c->wait(FAWKES_CID_PLUGINMANAGER);
248 printf(
"Watching for plugin events\n");
249 printf(
"%-10s %-40s\n",
"Event",
"Plugin Name/ID");
251 c->wait(FAWKES_CID_PLUGINMANAGER);
263 PluginTool::deregistered(
unsigned int id)
throw()
274 unsigned int id)
throw()
276 if (msg->
cid() != FAWKES_CID_PLUGINMANAGER)
return;
280 printf(
"Invalid message size (load succeeded)\n");
283 if ( opmode == M_WATCH ) {
284 printf(
"%-10s %s\n",
"loaded", m->
name);
286 if ( strncmp(m->
name, plugin_name, PLUGIN_MSG_NAME_LENGTH) == 0 ) {
287 printf(
"Loading of %s succeeded\n", plugin_name);
294 printf(
"Invalid message size (load failed)\n");
297 if ( opmode == M_WATCH ) {
298 printf(
"%-10s %s\n",
"loadfail", m->
name);
300 if ( strncmp(m->
name, plugin_name, PLUGIN_MSG_NAME_LENGTH) == 0 ) {
301 printf(
"Loading of %s failed, see log for reason\n", plugin_name);
308 printf(
"Invalid message size (unload succeeded)\n");
311 if ( opmode == M_WATCH ) {
312 printf(
"%-10s %s\n",
"unloaded", m->
name);
314 if ( strncmp(m->
name, plugin_name, PLUGIN_MSG_NAME_LENGTH) == 0 ) {
315 printf(
"Unloading of %s succeeded\n", plugin_name);
322 printf(
"Invalid message size (unload failed)\n");
325 if ( opmode == M_WATCH ) {
326 printf(
"%-10s %s\n",
"unloadfail", m->
name);
328 if ( strncmp(m->
name, plugin_name, PLUGIN_MSG_NAME_LENGTH) == 0 ) {
329 printf(
"Unloading of %s failed, see log for reason\n", plugin_name);
337 printf(
"Available plugins:\n");
339 char *plugin_name = plm->
next();
340 char *plugin_desc = NULL;
342 plugin_desc = plm->
next();
344 throw Exception(
"Invalid plugin list received");
346 printf(
" %-16s (%s)\n", plugin_name, plugin_desc);
351 printf(
"No plugins available\n");
358 printf(
"Loaded plugins:\n");
360 char *p = plm->
next();
365 printf(
"No plugins loaded\n");
370 printf(
"Obtaining list of available plugins failed\n");
372 printf(
"Obtaining list of loaded plugins failed\n");
378 PluginTool::connection_established(
unsigned int id)
throw()
385 PluginTool::connection_died(
unsigned int id)
throw()
387 printf(
"Connection died, exiting\n");
395 c->register_handler(
this, FAWKES_CID_PLUGINMANAGER);
425 print_usage(__program_name);
428 c->deregister_handler(FAWKES_CID_PLUGINMANAGER);
const char * program_name() const
Get name of program.
void * payload() const
Get payload buffer.
char * next()
Get next plugin from list.
request list of available plugins
plugin unloaded (plugin_unloaded_msg_t)
listing available plugins failed
Unsubscribe from watching load/unload events.
const char * arg(const char *argn)
Get argument value.
Simple Fawkes network client.
unsigned short int cid() const
Get component ID.
char name[PLUGIN_MSG_NAME_LENGTH]
name of the plugin that has been loaded
Fawkes library namespace.
Representation of a message that is sent over the network.
Parse command line arguments.
MT * msgc() const
Get correctly parsed output.
char name[PLUGIN_MSG_NAME_LENGTH]
name of the plugin to load.
list of loaded plugins (plugin_list_msg_t)
plugin unload failed (plugin_unload_failed_msg_t)
char name[PLUGIN_MSG_NAME_LENGTH]
name of plugin that could not be unloaded
plugin loaded (plugin_loaded_msg_t)
char name[PLUGIN_MSG_NAME_LENGTH]
name of plugin that could not be unloaded
request plugin unload (plugin_unload_msg_t)
list of available plugins (plugin_list_msg_t)
Base class for exceptions in Fawkes.
listing loaded plugins failed
char name[PLUGIN_MSG_NAME_LENGTH]
name of the plugin that has been unloaded
bool has_next()
Check if more list elements are available.
unsigned short int msgid() const
Get message type ID.
request lif of loaded plugins
request plugin load (plugin_load_msg_t)
Subscribe for watching load/unload events.
plugin load failed (plugin_load_failed_msg_t)
bool has_arg(const char *argn)
Check if argument has been supplied.
char name[PLUGIN_MSG_NAME_LENGTH]
name of te plugin to unload.
size_t payload_size() const
Get payload size.