1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#ifndef DISABLE_NETWORK
#ifndef __xmlrpc_h_
#define __xmlrpc_h_
#include <asm/types.h>
#include <map>
#include <vector>
#include <xmltree.h>
#include <string>
#include <lib/base/eptrlist.h>
#include <lib/network/httpd.h>
#define INSERT(KEY,VALUE) insert(std::pair<std::string, eXMLRPCVariant*>(KEY,VALUE))
class eXMLRPCVariant
{
std::map<std::string,eXMLRPCVariant*> *_struct;
std::vector<eXMLRPCVariant> *_array;
__s32 *_i4;
bool *_boolean;
std::string *_string;
double *_double;
// QDateTime *_datetime;
// QByteArray *_base64;
void zero();
public:
eXMLRPCVariant(std::map<std::string,eXMLRPCVariant*> *_struct);
eXMLRPCVariant(std::vector<eXMLRPCVariant> *_array);
eXMLRPCVariant(__s32 *_i4);
eXMLRPCVariant(bool *_boolean);
eXMLRPCVariant(std::string *_string);
eXMLRPCVariant(double *_double);
// eXMLRPCVariant(QDateTime *_datetime);
// eXMLRPCVariant(QByteArray *_base64);
eXMLRPCVariant(const eXMLRPCVariant &c);
~eXMLRPCVariant();
std::map<std::string,eXMLRPCVariant*> *getStruct();
std::vector<eXMLRPCVariant> *getArray();
__s32 *getI4();
bool *getBoolean();
std::string *getString();
double *getDouble();
// QDateTime *getDatetime();
// QByteArray *getBase64();
void toXML(std::string &);
};
class eXMLRPCResponse: public eHTTPDataSource
{
XMLTreeParser parser;
std::string result;
int size;
int wptr;
int doCall();
public:
eXMLRPCResponse(eHTTPConnection *c);
~eXMLRPCResponse();
int doWrite(int);
void haveData(void *data, int len);
};
void xmlrpc_initialize(eHTTPD *httpd);
void xmlrpc_addMethod(std::string methodName, int (*)(std::vector<eXMLRPCVariant>&, ePtrList<eXMLRPCVariant>&));
void xmlrpc_fault(ePtrList<eXMLRPCVariant> &res, int faultCode, std::string faultString);
int xmlrpc_checkArgs(std::string args, std::vector<eXMLRPCVariant>&, ePtrList<eXMLRPCVariant> &res);
class eHTTPXMLRPCResolver: public iHTTPPathResolver
{
DECLARE_REF(eHTTPXMLRPCResolver);
public:
eHTTPXMLRPCResolver();
eHTTPDataSource *getDataSource(std::string request, std::string path, eHTTPConnection *conn);
};
#endif
#endif //DISABLE_NETWORK
|