aboutsummaryrefslogtreecommitdiff
path: root/dep/gsoap/soapServer.cpp
blob: e3eeb8fb3d77ab161875ee9412a479998235e9eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* 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 */