BOSS 7.0.8
BESIII Offline Software System
Loading...
Searching...
No Matches
HelloServer.cpp
Go to the documentation of this file.
1// HelloServer.cpp : Simple XMLRPC server example. Usage: HelloServer serverPort
2//
3#include "XmlRpc.h"
4
5#include <iostream>
6#include <stdlib.h>
7
8using namespace XmlRpc;
9
10// The server
12
13// No arguments, result is "Hello".
15{
16public:
18
19 void execute(XmlRpcValue& params, XmlRpcValue& result)
20 {
21 result = "Hello";
22 }
23
24 std::string help() { return std::string("Say hello"); }
25
26} hello(&s); // This constructor registers the method with the server
27
29// One argument is passed, result is "Hello, " + arg.
31{
32public:
34
35 void execute(XmlRpcValue& params, XmlRpcValue& result)
36 {
37 std::string resultString = "Hello, ";
38 resultString += std::string(params[0]);
39 result = resultString;
40 }
41} helloName(&s);
42
44// A variable number of arguments are passed, all doubles, result is their sum.
45class Sum : public XmlRpcServerMethod
46{
47public:
49
50 void execute(XmlRpcValue& params, XmlRpcValue& result)
51 {
52 int nArgs = params.size();
53 double sum = 0.0;
54 for (int i=0; i<nArgs; ++i)
55 sum += double(params[i]);
56 result = sum;
57 }
58} sum(&s);
59
61int main(int argc, char* argv[])
62{
63 if (argc != 2) {
64 std::cerr << "Usage: HelloServer serverPort\n";
65 return -1;
66 }
67 int port = atoi(argv[1]);
68
70
71 // Create the server socket on the specified port
72 s.bindAndListen(port);
73
74 // Enable introspection
76
77 // Wait for requests indefinitely
78 s.work(-1.0);
79
80 return 0;
81}
82
XmlRpcServer s
Definition: HelloServer.cpp:11
HelloName(XmlRpcServer *s)
Definition: HelloServer.cpp:33
void execute(XmlRpcValue &params, XmlRpcValue &result)
Execute the method. Subclasses must provide a definition for this method.
Definition: HelloServer.cpp:35
void execute(XmlRpcValue &params, XmlRpcValue &result)
Execute the method. Subclasses must provide a definition for this method.
Definition: HelloServer.cpp:19
Hello(XmlRpcServer *s)
Definition: HelloServer.cpp:17
std::string help()
Definition: HelloServer.cpp:24
Sum(XmlRpcServer *s)
Definition: HelloServer.cpp:48
void execute(XmlRpcValue &params, XmlRpcValue &result)
Execute the method. Subclasses must provide a definition for this method.
Definition: HelloServer.cpp:50
Abstract class representing a single RPC method.
A class to handle XML RPC requests.
Definition: XmlRpcServer.h:33
bool bindAndListen(int port, int backlog=5)
void enableIntrospection(bool enabled=true)
Specify whether introspection is enabled or not. Default is not enabled.
void work(double msTime)
Process client requests for the specified time.
RPC method arguments and results are represented by Values.
Definition: XmlRpcValue.h:22
int size() const
Return the size for string, base64, array, and struct values.
Definition: XmlRpc.h:35
void setVerbosity(int level)
Sets log message verbosity. This is short for XmlRpcLogHandler::setVerbosity(level)
Definition: XmlRpcUtil.cpp:67
int main()
Definition: test_IFile.cxx:11