diff options
Diffstat (limited to 'test/HelloServer.cpp')
-rw-r--r-- | test/HelloServer.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/test/HelloServer.cpp b/test/HelloServer.cpp new file mode 100644 index 0000000..ff81ad8 --- /dev/null +++ b/test/HelloServer.cpp @@ -0,0 +1,82 @@ +// HelloServer.cpp : Simple XMLRPC server example. Usage: HelloServer serverPort +// +#include "XmlRpc.h" + +#include <iostream> +#include <stdlib.h> + +using namespace XmlRpc; + +// The server +XmlRpcServer s; + +// No arguments, result is "Hello". +class Hello : public XmlRpcServerMethod +{ +public: + Hello(XmlRpcServer* s) : XmlRpcServerMethod("Hello", s) {} + + void execute(XmlRpcValue& params, XmlRpcValue& result) + { + result = "Hello"; + } + + std::string help() { return std::string("Say hello"); } + +} hello(&s); // This constructor registers the method with the server + + +// One argument is passed, result is "Hello, " + arg. +class HelloName : public XmlRpcServerMethod +{ +public: + HelloName(XmlRpcServer* s) : XmlRpcServerMethod("HelloName", s) {} + + void execute(XmlRpcValue& params, XmlRpcValue& result) + { + std::string resultString = "Hello, "; + resultString += std::string(params[0]); + result = resultString; + } +} helloName(&s); + + +// A variable number of arguments are passed, all doubles, result is their sum. +class Sum : public XmlRpcServerMethod +{ +public: + Sum(XmlRpcServer* s) : XmlRpcServerMethod("Sum", s) {} + + void execute(XmlRpcValue& params, XmlRpcValue& result) + { + int nArgs = params.size(); + double sum = 0.0; + for (int i=0; i<nArgs; ++i) + sum += double(params[i]); + result = sum; + } +} sum(&s); + + +int main(int argc, char* argv[]) +{ + if (argc != 2) { + std::cerr << "Usage: HelloServer serverPort\n"; + return -1; + } + int port = atoi(argv[1]); + + XmlRpc::setVerbosity(5); + + // Create the server socket on the specified port + s.bindAndListen(port); + + // Enable introspection + s.enableIntrospection(true); + + // Wait for requests indefinitely + s.work(-1.0); + + return 0; +} + |