ultimatepp/uppdev/XmlRpcShorted/XmlRpcShorted.cpp
cxl 1b14f625c4 .uppdev
git-svn-id: svn://ultimatepp.org/upp/trunk@2204 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2010-03-10 07:40:36 +00:00

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);
}