You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.7 KiB
82 lines
1.7 KiB
// 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; |
|
} |
|
|
|
|