From bdca51edfdac1865d31af8ce864bf15034e0ab1b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Voc=C5=AF?= Date: Tue, 9 Feb 2010 13:11:03 +0000 Subject: [PATCH] plugin configuration parsing --- org.glite.lb.logger/src/activemq_cpp_plugin.cpp | 35 ++++++++++++++++++++++--- org.glite.lb.logger/src/interlogd.c | 2 +- org.glite.lb.logger/src/interlogd.h | 4 +-- org.glite.lb.logger/src/plugin_mgr.c | 2 +- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/org.glite.lb.logger/src/activemq_cpp_plugin.cpp b/org.glite.lb.logger/src/activemq_cpp_plugin.cpp index 104dd50..19a324c 100644 --- a/org.glite.lb.logger/src/activemq_cpp_plugin.cpp +++ b/org.glite.lb.logger/src/activemq_cpp_plugin.cpp @@ -29,7 +29,7 @@ #include #include #include - +#include class OutputPlugin : public cms::ExceptionListener { @@ -311,10 +311,39 @@ event_queue_close(struct event_queue *eq) extern "C" int -plugin_init(const char *config) +plugin_init(char *config) { + char *s, *p; + char key[MAXPATHLEN], val[MAXPATHLEN]; + int ret; std::string brokerURI; + s = strstr(config, "[msg]"); + if(s == NULL) { + set_error(IL_DL, ENOENT, "plugin_init: missing required configuration section [msg]\n"); + return -1; + } + s = strchr(s, '\n'); + if(s) s++; + while(s) { + if(*s == 0 || *s == '[') + break; + p = strchr(s, '\n'); + if(p) *p = 0; + ret = sscanf(s, " %s =%s", key, val); + if(p) *p = '\n'; + if(ret == 2) { + if(strcmp(key, "broker") == 0) { + brokerURI.assign(val); + } + } + s = p; + } + if(brokerURI.length() == 0) { + set_error(IL_DL, ENOENT, "plugin_init: broker uri not configured\n"); + return -1; + } + try { activemq::library::ActiveMQCPP::initializeLibrary(); @@ -332,8 +361,8 @@ plugin_init(const char *config) OutputPlugin::connectionFactory = NULL; } } catch(cms::CMSException &e) { - } + set_error(IL_DL, 0, (char*)e.what()); return -1; } diff --git a/org.glite.lb.logger/src/interlogd.c b/org.glite.lb.logger/src/interlogd.c index ce63029..d364693 100644 --- a/org.glite.lb.logger/src/interlogd.c +++ b/org.glite.lb.logger/src/interlogd.c @@ -535,7 +535,7 @@ main (int argc, char **argv) if(p) *p = '\n'; if(ret > 0) { glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_INFO, " loading plugin %s\n", name); - if(plugin_init(name, config) < 0) { + if(plugin_mgr_init(name, config) < 0) { glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_ERROR, "Failed to load plugin %s: %s\n", name, error_get_msg()); } } diff --git a/org.glite.lb.logger/src/interlogd.h b/org.glite.lb.logger/src/interlogd.h index e35f727..43bc527 100644 --- a/org.glite.lb.logger/src/interlogd.h +++ b/org.glite.lb.logger/src/interlogd.h @@ -206,7 +206,7 @@ struct il_output_plugin { int (*event_queue_connect)(struct event_queue *); int (*event_queue_send)(struct event_queue *); int (*event_queue_close)(struct event_queue *); - int (*plugin_init)(const char *); + int (*plugin_init)(char *); int (*plugin_supports_scheme)(const char *); }; @@ -290,7 +290,7 @@ int receive_http(void *, int (*)(void *, char *, const int), il_http_message_t * #endif /* plugin functions */ -int plugin_init(const char *, const char *); +int plugin_mgr_init(const char *, char *); struct il_output_plugin *plugin_get(const char *); /* master main loop */ diff --git a/org.glite.lb.logger/src/plugin_mgr.c b/org.glite.lb.logger/src/plugin_mgr.c index 49bb075..9d32a58 100644 --- a/org.glite.lb.logger/src/plugin_mgr.c +++ b/org.glite.lb.logger/src/plugin_mgr.c @@ -23,7 +23,7 @@ static struct plugin_list *plugins = NULL; return -1; \ } -int plugin_init(const char *plugin_name, const char *cfg) +int plugin_mgr_init(const char *plugin_name, char *cfg) { char err[256]; void *dl_handle; -- 1.8.2.3