2 #ifndef _XMLRPCSERVERCONNECTION_H_
3 #define _XMLRPCSERVERCONNECTION_H_
8 # pragma warning(disable:4786) // identifier was truncated in debug info
15 #include "xmlrpcpp/XmlRpcValue.h"
16 #include "xmlrpcpp/XmlRpcSource.h"
17 #include "xmlrpcpp/XmlRpcDecl.h"
24 class XmlRpcServerMethod;
27 class XMLRPCPP_DECL XmlRpcServerConnection :
public XmlRpcSource {
30 static const char METHODNAME_TAG[];
31 static const char PARAMS_TAG[];
32 static const char PARAMS_ETAG[];
33 static const char PARAM_TAG[];
34 static const char PARAM_ETAG[];
36 static const std::string SYSTEM_MULTICALL;
37 static const std::string METHODNAME;
38 static const std::string PARAMS;
40 static const std::string FAULTCODE;
41 static const std::string FAULTSTRING;
44 XmlRpcServerConnection(
int fd, XmlRpcServer*
server,
bool deleteOnClose =
false);
46 virtual ~XmlRpcServerConnection();
51 virtual unsigned handleEvent(
unsigned eventType);
60 virtual void executeRequest();
66 bool executeMethod(
const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
69 bool executeMulticall(
const std::string& methodName, XmlRpcValue& params, XmlRpcValue& result);
72 void generateResponse(std::string
const& resultXml);
73 void generateFaultResponse(std::string
const&
msg,
int errorCode = -1);
74 std::string generateHeader(std::string
const& body);
78 XmlRpcServer* _server;
81 enum ServerConnectionState { READ_HEADER, READ_REQUEST, WRITE_RESPONSE };
82 ServerConnectionState _connectionState;
94 std::string _response;
104 #endif // _XMLRPCSERVERCONNECTION_H_