mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 10:37:03 +00:00
129 lines
3.9 KiB
C++
129 lines
3.9 KiB
C++
/* soapServer.cpp
|
|
Generated by gSOAP 2.7.10 from stub.h
|
|
Copyright(C) 2000-2008, Robert van Engelen, Genivia Inc. All Rights Reserved.
|
|
This part of the software is released under one of the following licenses:
|
|
GPL, the gSOAP public license, or Genivia's license for commercial use.
|
|
*/
|
|
#include "soapH.h"
|
|
|
|
SOAP_SOURCE_STAMP("@(#) soapServer.cpp ver 2.7.10 2010-02-18 18:41:56 GMT")
|
|
|
|
SOAP_FMAC5 int SOAP_FMAC6 soap_serve(struct soap* soap)
|
|
{
|
|
#ifndef WITH_FASTCGI
|
|
unsigned int k = soap->max_keep_alive;
|
|
#endif
|
|
|
|
do
|
|
{
|
|
#ifdef WITH_FASTCGI
|
|
if (FCGI_Accept() < 0)
|
|
{
|
|
soap->error = SOAP_EOF;
|
|
return soap_send_fault(soap);
|
|
}
|
|
#endif
|
|
|
|
soap_begin(soap);
|
|
|
|
#ifndef WITH_FASTCGI
|
|
if (soap->max_keep_alive > 0 && !--k)
|
|
{ soap->keep_alive = 0; }
|
|
#endif
|
|
|
|
if (soap_begin_recv(soap))
|
|
{
|
|
if (soap->error < SOAP_STOP)
|
|
{
|
|
#ifdef WITH_FASTCGI
|
|
soap_send_fault(soap);
|
|
#else
|
|
return soap_send_fault(soap);
|
|
#endif
|
|
}
|
|
soap_closesock(soap);
|
|
|
|
continue;
|
|
}
|
|
|
|
if (soap_envelope_begin_in(soap)
|
|
|| soap_recv_header(soap)
|
|
|| soap_body_begin_in(soap)
|
|
|| soap_serve_request(soap)
|
|
|| (soap->fserveloop && soap->fserveloop(soap)))
|
|
{
|
|
#ifdef WITH_FASTCGI
|
|
soap_send_fault(soap);
|
|
#else
|
|
return soap_send_fault(soap);
|
|
#endif
|
|
}
|
|
|
|
#ifdef WITH_FASTCGI
|
|
soap_destroy(soap);
|
|
soap_end(soap);
|
|
}
|
|
while (1);
|
|
#else
|
|
} while (soap->keep_alive);
|
|
#endif
|
|
return SOAP_OK;
|
|
}
|
|
|
|
#ifndef WITH_NOSERVEREQUEST
|
|
SOAP_FMAC5 int SOAP_FMAC6 soap_serve_request(struct soap* soap)
|
|
{
|
|
soap_peek_element(soap);
|
|
if (!soap_match_tag(soap, soap->tag, "ns1:executeCommand"))
|
|
{ return soap_serve_ns1__executeCommand(soap); }
|
|
return soap->error = SOAP_NO_METHOD;
|
|
}
|
|
#endif
|
|
|
|
SOAP_FMAC5 int SOAP_FMAC6 soap_serve_ns1__executeCommand(struct soap* soap)
|
|
{
|
|
struct ns1__executeCommand soap_tmp_ns1__executeCommand;
|
|
struct ns1__executeCommandResponse soap_tmp_ns1__executeCommandResponse;
|
|
char* soap_tmp_string;
|
|
soap_default_ns1__executeCommandResponse(soap, &soap_tmp_ns1__executeCommandResponse);
|
|
soap_tmp_string = NULL;
|
|
soap_tmp_ns1__executeCommandResponse.result = &soap_tmp_string;
|
|
soap_default_ns1__executeCommand(soap, &soap_tmp_ns1__executeCommand);
|
|
soap->encodingStyle = NULL;
|
|
if (!soap_get_ns1__executeCommand(soap, &soap_tmp_ns1__executeCommand, "ns1:executeCommand", NULL))
|
|
{ return soap->error; }
|
|
if (soap_body_end_in(soap)
|
|
|| soap_envelope_end_in(soap)
|
|
|| soap_end_recv(soap))
|
|
{ return soap->error; }
|
|
soap->error = ns1__executeCommand(soap, soap_tmp_ns1__executeCommand.command, &soap_tmp_string);
|
|
if (soap->error)
|
|
{ return soap->error; }
|
|
soap_serializeheader(soap);
|
|
soap_serialize_ns1__executeCommandResponse(soap, &soap_tmp_ns1__executeCommandResponse);
|
|
if (soap_begin_count(soap))
|
|
{ return soap->error; }
|
|
if (soap->mode & SOAP_IO_LENGTH)
|
|
{
|
|
if (soap_envelope_begin_out(soap)
|
|
|| soap_putheader(soap)
|
|
|| soap_body_begin_out(soap)
|
|
|| soap_put_ns1__executeCommandResponse(soap, &soap_tmp_ns1__executeCommandResponse, "ns1:executeCommandResponse", "")
|
|
|| soap_body_end_out(soap)
|
|
|| soap_envelope_end_out(soap))
|
|
{ return soap->error; }
|
|
};
|
|
if (soap_end_count(soap)
|
|
|| soap_response(soap, SOAP_OK)
|
|
|| soap_envelope_begin_out(soap)
|
|
|| soap_putheader(soap)
|
|
|| soap_body_begin_out(soap)
|
|
|| soap_put_ns1__executeCommandResponse(soap, &soap_tmp_ns1__executeCommandResponse, "ns1:executeCommandResponse", "")
|
|
|| soap_body_end_out(soap)
|
|
|| soap_envelope_end_out(soap)
|
|
|| soap_end_send(soap))
|
|
{ return soap->error; }
|
|
return soap_closesock(soap);
|
|
}
|
|
|
|
/* End of soapServer.cpp */
|