X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d63d2c3c6cbbd574dda4f8b00ebe6c661735edd5..5c517e1d40eac9531b1efffee24c70d297867112:/lib/network/xmlrpc.cpp diff --git a/lib/network/xmlrpc.cpp b/lib/network/xmlrpc.cpp index a53b50a8..3d981d51 100644 --- a/lib/network/xmlrpc.cpp +++ b/lib/network/xmlrpc.cpp @@ -1,9 +1,10 @@ #ifndef DISABLE_NETWORK #include +#include -static std::map&, ePtrList&)> rpcproc; +static std::map&, ePtrList&)> rpcproc; void eXMLRPCVariant::zero() { @@ -17,7 +18,7 @@ void eXMLRPCVariant::zero() // _base64=0; } -eXMLRPCVariant::eXMLRPCVariant(std::map *__struct) +eXMLRPCVariant::eXMLRPCVariant(std::map *__struct) { zero(); _struct=__struct; @@ -41,7 +42,7 @@ eXMLRPCVariant::eXMLRPCVariant(bool *__boolean) _boolean=__boolean; } -eXMLRPCVariant::eXMLRPCVariant(eString *__string) +eXMLRPCVariant::eXMLRPCVariant(std::string *__string) { zero(); _string=__string; @@ -73,15 +74,15 @@ eXMLRPCVariant::eXMLRPCVariant(const eXMLRPCVariant &c) if (c._boolean) _boolean=new bool(*c._boolean); if (c._string) - _string=new eString(*c._string); + _string=new std::string(*c._string); if (c._double) _double=new double(*c._double); // datetime, base64 if (c._struct) { - _struct=new std::map; - for (std::map::iterator b(c._struct->begin()); b != c._struct->end(); ++b) - _struct->insert(std::pair(b->first, new eXMLRPCVariant(*b->second))); + _struct=new std::map; + for (std::map::iterator b(c._struct->begin()); b != c._struct->end(); ++b) + _struct->insert(std::pair(b->first, new eXMLRPCVariant(*b->second))); } if (c._array) _array = new std::vector(*c._array); @@ -91,7 +92,7 @@ eXMLRPCVariant::~eXMLRPCVariant() { if (_struct) { - for (std::map::iterator i(_struct->begin()); i != _struct->end(); ++i) + for (std::map::iterator i(_struct->begin()); i != _struct->end(); ++i) delete i->second; delete _struct; @@ -112,7 +113,7 @@ eXMLRPCVariant::~eXMLRPCVariant() delete _base64;*/ } -std::map *eXMLRPCVariant::getStruct() +std::map *eXMLRPCVariant::getStruct() { return _struct; } @@ -132,7 +133,7 @@ bool *eXMLRPCVariant::getBoolean() return _boolean; } -eString *eXMLRPCVariant::getString() +std::string *eXMLRPCVariant::getString() { return _string; } @@ -152,61 +153,62 @@ double *eXMLRPCVariant::getDouble() return _base64; } */ -void eXMLRPCVariant::toXML(eString &result) +void eXMLRPCVariant::toXML(std::string &result) { if (getArray()) { - static eString s1(""); + static std::string s1(""); result+=s1; for (unsigned int i=0; isize(); i++) { - static eString s(" "); + static std::string s(" "); result+=s; (*getArray())[i].toXML(result); - static eString s1("\n"); + static std::string s1("\n"); result+=s1; } - static eString s2("\n"); + static std::string s2("\n"); result+=s2; } else if (getStruct()) { - static eString s1(""); + static std::string s1(""); result+=s1; - for (std::map::iterator i(_struct->begin()); i != _struct->end(); ++i) + for (std::map::iterator i(_struct->begin()); i != _struct->end(); ++i) { - static eString s1(" "); + static std::string s1(" "); result+=s1; result+=i->first; - static eString s2(""); + static std::string s2(""); result+=s2; i->second->toXML(result); - static eString s3("\n"); + static std::string s3("\n"); result+=s3; } - static eString s2("\n"); + static std::string s2("\n"); result+=s2; } else if (getI4()) { - static eString s1(""); + static std::string s1(""); result+=s1; - result+=eString().setNum(*getI4()); - static eString s2(""); + result+=getNum(*getI4()); + static std::string s2(""); result+=s2; } else if (getBoolean()) { - static eString s0("0"); - static eString s1("1"); + static std::string s0("0"); + static std::string s1("1"); result+=(*getBoolean())?s1:s0; } else if (getString()) { - static eString s1(""); - static eString s2(""); + static std::string s1(""); + static std::string s2(""); result+=s1; result+=*getString(); result+=s2; } else if (getDouble()) { - result+=eString().sprintf("%lf", *getDouble()); +// result+=std::string().sprintf("%lf", *getDouble()); +#warning double support removed } else eFatal("couldn't append"); } @@ -224,11 +226,11 @@ static eXMLRPCVariant *fromXML(XMLTreeNode *n) else if (!strcmp(n->GetType(), "boolean")) return new eXMLRPCVariant(new bool(atoi(data))); else if (!strcmp(n->GetType(), "string")) - return new eXMLRPCVariant(new eString(data)); + return new eXMLRPCVariant(new std::string(data)); else if (!strcmp(n->GetType(), "double")) return new eXMLRPCVariant(new double(atof(data))); else if (!strcmp(n->GetType(), "struct")) { - std::map *s=new std::map; + std::map *s=new std::map; for (n=n->GetChild(); n; n=n->GetNext()) { if (strcmp(data, "member")) @@ -236,12 +238,12 @@ static eXMLRPCVariant *fromXML(XMLTreeNode *n) delete s; return 0; } - eString name=0; + std::string name=0; eXMLRPCVariant *value; for (XMLTreeNode *v=n->GetChild(); v; v=v->GetNext()) { if (!strcmp(v->GetType(), "name")) - name=eString(v->GetData()); + name=std::string(v->GetData()); else if (!strcmp(v->GetType(), "value")) value=fromXML(v); } @@ -256,7 +258,8 @@ static eXMLRPCVariant *fromXML(XMLTreeNode *n) } else if (!strcmp(n->GetType(), "array")) { ePtrList l; - l.setAutoDelete(true); + #warning autodelete removed +// l.setAutoDelete(true); n=n->GetChild(); if (strcmp(data, "data")) return 0; @@ -291,7 +294,7 @@ int eXMLRPCResponse::doCall() eDebug("doing call"); result=""; // get method name - eString methodName=0; + std::string methodName=0; if (connection->remote_header["Content-Type"]!="text/xml") { @@ -312,12 +315,13 @@ int eXMLRPCResponse::doCall() } ePtrList params; - params.setAutoDelete(true); +// params.setAutoDelete(true); +#warning params autodelete remove for (XMLTreeNode *c=methodCall->GetChild(); c; c=c->GetNext()) { if (!strcmp(c->GetType(), "methodName")) - methodName=eString(c->GetData()); + methodName=std::string(c->GetData()); else if (!strcmp(c->GetType(), "params")) { for (XMLTreeNode *p=c->GetChild(); p; p=p->GetNext()) @@ -342,7 +346,8 @@ int eXMLRPCResponse::doCall() ""; ePtrList ret; - ret.setAutoDelete(true); +// ret.setAutoDelete(true); +#warning autodelete removed int (*proc)(std::vector&, ePtrList &)=rpcproc[methodName]; int fault; @@ -438,24 +443,24 @@ void xmlrpc_initialize(eHTTPD *httpd) httpd->addResolver(new eHTTPXMLRPCResolver); } -void xmlrpc_addMethod(eString methodName, int (*proc)(std::vector&, ePtrList&)) +void xmlrpc_addMethod(std::string methodName, int (*proc)(std::vector&, ePtrList&)) { rpcproc[methodName]=proc; } -void xmlrpc_fault(ePtrList &res, int faultCode, eString faultString) +void xmlrpc_fault(ePtrList &res, int faultCode, std::string faultString) { - std::map *s=new std::map; + std::map *s=new std::map; s->INSERT("faultCode", new eXMLRPCVariant(new __s32(faultCode))); - s->INSERT("faultString", new eXMLRPCVariant(new eString(faultString))); + s->INSERT("faultString", new eXMLRPCVariant(new std::string(faultString))); res.push_back(new eXMLRPCVariant(s)); } -int xmlrpc_checkArgs(eString args, std::vector &parm, ePtrList &res) +int xmlrpc_checkArgs(std::string args, std::vector &parm, ePtrList &res) { if (parm.size() != args.length()) { - xmlrpc_fault(res, -500, eString().sprintf("parameter count mismatch (found %d, expected %d)", parm.size(), args.length())); + xmlrpc_fault(res, -500, std::string().sprintf("parameter count mismatch (found %d, expected %d)", parm.size(), args.length())); return 1; } @@ -496,7 +501,7 @@ int xmlrpc_checkArgs(eString args, std::vector &parm, ePtrList