mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
59 lines
1,006 B
C++
59 lines
1,006 B
C++
#include <XmlRpc/XmlRpc.h>
|
|
|
|
using namespace Upp;
|
|
|
|
XMLRPC_METHOD(compute)
|
|
{
|
|
double a, b;
|
|
String op;
|
|
rpc >> a >> op >> b;
|
|
Cout() << "Request: " << a << op << b << '\n';
|
|
if(op.GetCount() == 1)
|
|
switch(*op) {
|
|
case '+':
|
|
rpc << a + b;
|
|
return;
|
|
case '-':
|
|
rpc << a - b;
|
|
return;
|
|
case '/':
|
|
if(b == 0)
|
|
rpc << ErrorValue("division by zero");
|
|
else
|
|
rpc << a / b;
|
|
return;
|
|
case '*':
|
|
rpc << a * b;
|
|
return;
|
|
}
|
|
rpc << ErrorValue("unknown operator");
|
|
}
|
|
|
|
XMLRPC_METHOD(ping)
|
|
{
|
|
rpc << GetSysTime();
|
|
}
|
|
|
|
void Compute(double a, String op, double b)
|
|
{
|
|
double result;
|
|
Cout() << a << op << b << '=';
|
|
XmlRpcCall call(NULL);
|
|
if(call("compute", a, op, b) >> result)
|
|
Cout() << result;
|
|
else
|
|
Cout() << " error: " << call.GetError();
|
|
Cout() << '\n';
|
|
}
|
|
|
|
CONSOLE_APP_MAIN
|
|
{
|
|
Time tm;
|
|
XmlRpcCall(NULL)("ping") >> tm;
|
|
Cout() << tm << '\n';
|
|
|
|
Compute(12, "+", 12);
|
|
Compute(12, "*", 12);
|
|
Compute(12, "+56", 12);
|
|
Compute(12, "/", 0);
|
|
}
|