diff --git a/apps/examples/xmlrpc2di/XMLRPC2DI.cpp b/apps/examples/xmlrpc2di/XMLRPC2DI.cpp index 8886bdfd..49bdd280 100644 --- a/apps/examples/xmlrpc2di/XMLRPC2DI.cpp +++ b/apps/examples/xmlrpc2di/XMLRPC2DI.cpp @@ -31,14 +31,15 @@ #include "log.h" #include "AmConfigReader.h" #include "AmUtils.h" +#include "AmArg.h" #define MOD_NAME "xmlrpc2di" #define XMLRPC_PORT "8090" // default port EXPORT_PLUGIN_CLASS_FACTORY(XMLRPC2DI, MOD_NAME) -XMLRPC2DI::XMLRPC2DI(string mod_name) - : AmDynInvokeFactory(mod_name) + XMLRPC2DI::XMLRPC2DI(string mod_name) + : AmDynInvokeFactory(mod_name) { } @@ -107,57 +108,68 @@ void XMLRPC2DIServerSetLoglevelMethod::execute(XmlRpcValue& params, XmlRpcValue& void XMLRPC2DIServerDIMethod::execute(XmlRpcValue& params, XmlRpcValue& result) { - if (params.size() < 2) { - DBG("XMLRPC2DI: ERROR: need at least factory name and function name to call\n"); - throw XmlRpcException("need at least factory name and function name to call", 400); - } + try { + if (params.size() < 2) { + DBG("XMLRPC2DI: ERROR: need at least factory name and function name to call\n"); + throw XmlRpcException("need at least factory name and function name to call", 400); + } - string fact_name = params[0]; - string fct_name = params[1]; - - DBG("XMLRPC2DI: factory '%s' function '%s'\n", - fact_name.c_str(), fct_name.c_str()); - - // get args - AmArgArray args; - for (int i=2; igetFactory4Di(fact_name); - if(!di_f){ - throw XmlRpcException("could not get factory", 500); - } - AmDynInvoke* di = di_f->getInstance(); - if(!di){ - throw XmlRpcException("could not get instance from factory", 500); - } - AmArgArray ret; - di->invoke(fct_name, args, ret); + AmDynInvokeFactory* di_f = AmPlugIn::instance()->getFactory4Di(fact_name); + if(!di_f){ + throw XmlRpcException("could not get factory", 500); + } + AmDynInvoke* di = di_f->getInstance(); + if(!di){ + throw XmlRpcException("could not get instance from factory", 500); + } + AmArgArray ret; + di->invoke(fct_name, args, ret); - if (ret.size()) { - result.setSize(ret.size()); + if (ret.size()) { + result.setSize(ret.size()); - for (unsigned int i=0;i