blob: 2318ef8617a20ef101a34a813ab900eac8a0b53d [file] [log] [blame]
/** Demo of a calculator gsoap service implemented as a shared library that can be loaded from Apache Http Server.
* @author Christian Aberger (http://www.aberger.at)
* @file calculator.cpp
*/
#include <float.h>
#include <string.h>
#include "soapH.h"
#include "apache_gsoap.h"
#include "calc.nsmap" // link the namespace
IMPLEMENT_GSOAP_SERVER() ///< this macro defines the necessary exports from the dll.
int ns__add(struct soap *soap, int a, int b, int *result) {
*result = a + b;
return SOAP_OK;
}
int ns__subtract(struct soap *, int a, int b, int *result) {
*result = a - b;
return SOAP_OK;
}
int ns__mutiply(struct soap *, int a, int b, int *result) {
*result = a * b;
return SOAP_OK;
}
int ns__divide(struct soap * soap, int a, int b, int *result) {
if (fabs(a) > DBL_EPSILON) {
*result = a / b;
} else {
return soap_receiver_fault(soap, "divide by zero in ns__divide", "make sure divisor is > 0");
}
return SOAP_OK;
}
/*
int main(void) {
struct soap soap;
soap_init(&soap);
int master = soap_bind(&soap, "localhost", 8080, 100);
if (master < 0) {
soap_print_fault(&soap, stderr);
exit(-1);
}
fprintf(stderr, "Socket connection success\n");
while(1) {
int client = soap_accept(&soap);
if (client < 0) {
soap_print_fault(&soap, stderr);
exit(-2);
}
fprintf(stderr, "Client connected\n");
soap_serve(&soap);
soap_end(&soap);
}
}
*/