diff --git a/apps/examples/xmlrpc2di/XMLRPC2DI.cpp b/apps/examples/xmlrpc2di/XMLRPC2DI.cpp index 49bdd280..017ab5d9 100644 --- a/apps/examples/xmlrpc2di/XMLRPC2DI.cpp +++ b/apps/examples/xmlrpc2di/XMLRPC2DI.cpp @@ -106,7 +106,6 @@ void XMLRPC2DIServerSetLoglevelMethod::execute(XmlRpcValue& params, XmlRpcValue& result = "200 OK"; } - void XMLRPC2DIServerDIMethod::execute(XmlRpcValue& params, XmlRpcValue& result) { try { if (params.size() < 2) { @@ -148,16 +147,7 @@ void XMLRPC2DIServerDIMethod::execute(XmlRpcValue& params, XmlRpcValue& result) for (unsigned int i=0;i(a.asObject()); + if (NULL != arr) { + result[pos].setSize(arr->size()); + + for (unsigned int i=0;isize();i++) { + const AmArg& r = arr->get(i); + add2result(r, result[pos], i); + } + delete arr; + } else { + WARN("unsupported return value type of parameter %d (not AmArgArray)\n", pos); + } + } break; + default: { WARN("unsupported return value type %d\n", a.getType()); } break; + // TODO: do sth with the data here ? + } +} diff --git a/apps/examples/xmlrpc2di/XMLRPC2DI.h b/apps/examples/xmlrpc2di/XMLRPC2DI.h index 6689798e..e03608f9 100644 --- a/apps/examples/xmlrpc2di/XMLRPC2DI.h +++ b/apps/examples/xmlrpc2di/XMLRPC2DI.h @@ -48,7 +48,18 @@ public: \ DEF_XMLRPCSERVERMETHOD(XMLRPC2DIServerCallsMethod, "calls") DEF_XMLRPCSERVERMETHOD(XMLRPC2DIServerSetLoglevelMethod, "set_loglevel") DEF_XMLRPCSERVERMETHOD(XMLRPC2DIServerGetLoglevelMethod, "get_loglevel") -DEF_XMLRPCSERVERMETHOD(XMLRPC2DIServerDIMethod, "di") + +class XMLRPC2DIServerDIMethod + : public XmlRpcServerMethod { + +public: + XMLRPC2DIServerDIMethod(XmlRpcServer* s) : + XmlRpcServerMethod("di", s) { } + + void execute(XmlRpcValue& params, XmlRpcValue& result); + void add2result(const AmArg& a, XmlRpcValue& result, unsigned int pos); +}; + class XMLRPC2DIServer : public AmThread {