Network

[gsoap] recv, send 함수 흐름

behonestar 2015. 2. 27. 16:01

Request

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsdl="http://www.onvif.org/ver10/device/wsdl">
   <soap:Header/>
   <soap:Body>
      <wsdl:GetNetworkProtocols/>
   </soap:Body>
</soap:Envelope>


Response

<SOAP-ENV:Envelope xmlns:SOAP-ENV="...">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <tds:GetNetworkProtocolsResponse>
         <tds:NetworkProtocols>
            <tt:Name>RTSP</tt:Name>
            <tt:Enabled>false</tt:Enabled>
            <tt:Port>5555</tt:Port>
         </tds:NetworkProtocols>
         <tds:NetworkProtocols>
            <tt:Name>HTTP</tt:Name>
            <tt:Enabled>false</tt:Enabled>
            <tt:Port>8082</tt:Port>
         </tds:NetworkProtocols>
      </tds:GetNetworkProtocolsResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


gsoap 함수 흐름

soap_serve

soap_begin_serve

FCGI_Accept()

soap_begin

soap_begin_recv

soap->fparse(soap); // http header 존재하면 파싱

soap_envelope_begin_in <soap:Envelope ...

soap_recv_header <soap:Header ...

soap_body_begin_in <soap:Body ...


soap_serve_request

soap_serve___tev2__CreatePullPointSubscription

soap_body_end_in </soap:Body>

soap_envelope_end_in </soap:Envelope>

soap_end_recv


soap_begin_send

soap_envelope_begin_out <SOAP-ENV:Envelope

soap_putheader <SOAP-ENV:Header/>

soap_body_begin_out <SOAP-ENV:Body...

soap_put__tev__CreatePullPointSubscriptionResponse

soap_body_end_out </SOAP-ENV:Body>

soap_envelope_end_out </SOAP-ENV:Envelope>

soap_end_send

soap_destroy

soap_end