int agentProxy::setCameraInfo(struct camera__info *_info, std::string &message) { struct soap *soap = this; struct agent__setCameraInfo soap_tmp_agent__setCameraInfo; struct agent__setCameraInfoResponse *soap_tmp_agent__setCameraInfoResponse; const char *soap_action = NULL; soap->encodingStyle = NULL; soap_tmp_agent__setCameraInfo._info = _info; soap_begin(soap); soap_serializeheader(soap); soap_serialize_agent__setCameraInfo(soap, &soap_tmp_agent__setCameraInfo); 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_agent__setCameraInfo(soap, &soap_tmp_agent__setCameraInfo, "agent:setCameraInfo", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put_agent__setCameraInfo(soap, &soap_tmp_agent__setCameraInfo, "agent:setCameraInfo", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!&message) return soap_closesock(soap); soap_default_std__string(soap, &message); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_tmp_agent__setCameraInfoResponse = soap_get_agent__setCameraInfoResponse(soap, NULL, "agent:setCameraInfoResponse", ""); if (soap->error) return soap_recv_fault(soap, 0); if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); message = soap_tmp_agent__setCameraInfoResponse->message; return soap_closesock(soap); }
SOAP_FMAC5 int SOAP_FMAC6 soap_call___ns3__wmImed_USCORESrvCertificacion(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct _ns1__wmImed_USCORESrvCertificacion *ns1__wmImed_USCORESrvCertificacion, struct _ns1__wmImed_USCORESrvCertificacionResponse *ns1__wmImed_USCORESrvCertificacionResponse) { struct __ns3__wmImed_USCORESrvCertificacion soap_tmp___ns3__wmImed_USCORESrvCertificacion; if (!soap_endpoint) soap_endpoint = "http://192.169.50.11/servicios/wsCertificacion.asmx"; if (!soap_action) soap_action = "http://tempuri.org/wmImed_SrvCertificacion"; soap->encodingStyle = NULL; soap_tmp___ns3__wmImed_USCORESrvCertificacion.ns1__wmImed_USCORESrvCertificacion = ns1__wmImed_USCORESrvCertificacion; soap_begin(soap); soap_serializeheader(soap); soap_serialize___ns3__wmImed_USCORESrvCertificacion(soap, &soap_tmp___ns3__wmImed_USCORESrvCertificacion); 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___ns3__wmImed_USCORESrvCertificacion(soap, &soap_tmp___ns3__wmImed_USCORESrvCertificacion, "-ns3:wmImed_SrvCertificacion", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put___ns3__wmImed_USCORESrvCertificacion(soap, &soap_tmp___ns3__wmImed_USCORESrvCertificacion, "-ns3:wmImed_SrvCertificacion", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!ns1__wmImed_USCORESrvCertificacionResponse) return soap_closesock(soap); soap_default__ns1__wmImed_USCORESrvCertificacionResponse(soap, ns1__wmImed_USCORESrvCertificacionResponse); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_get__ns1__wmImed_USCORESrvCertificacionResponse(soap, ns1__wmImed_USCORESrvCertificacionResponse, "ns1:wmImed_SrvCertificacionResponse", ""); if (soap->error) return soap_recv_fault(soap, 0); if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); return soap_closesock(soap); }
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ns__getQuote(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *symbol, float *Result) { struct ns__getQuote soap_tmp_ns__getQuote; struct ns__getQuoteResponse *soap_tmp_ns__getQuoteResponse; soap->encodingStyle = NULL; soap_tmp_ns__getQuote.symbol = symbol; soap_begin(soap); soap_serializeheader(soap); soap_serialize_ns__getQuote(soap, &soap_tmp_ns__getQuote); 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_ns__getQuote(soap, &soap_tmp_ns__getQuote, "ns:getQuote", "") || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put_ns__getQuote(soap, &soap_tmp_ns__getQuote, "ns:getQuote", "") || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); soap_default_float(soap, Result); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_tmp_ns__getQuoteResponse = soap_get_ns__getQuoteResponse(soap, NULL, "ns:getQuoteResponse", ""); if (soap->error) { if (soap->error == SOAP_TAG_MISMATCH && soap->level == 2) return soap_recv_fault(soap); return soap_closesock(soap); } if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); if (Result && soap_tmp_ns__getQuoteResponse->Result) *Result = *soap_tmp_ns__getQuoteResponse->Result; return soap_closesock(soap); }
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ns__GetCity(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *Secret, std::string *result) { struct ns__GetCity soap_tmp_ns__GetCity; struct ns__GetCityResponse *soap_tmp_ns__GetCityResponse; soap->encodingStyle = NULL; soap_tmp_ns__GetCity.Secret = Secret; soap_begin(soap); soap_serializeheader(soap); soap_serialize_ns__GetCity(soap, &soap_tmp_ns__GetCity); 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_ns__GetCity(soap, &soap_tmp_ns__GetCity, "ns:GetCity", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put_ns__GetCity(soap, &soap_tmp_ns__GetCity, "ns:GetCity", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!result) return soap_closesock(soap); soap_default_std__string(soap, result); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_tmp_ns__GetCityResponse = soap_get_ns__GetCityResponse(soap, NULL, "ns:GetCityResponse", ""); if (soap->error) return soap_recv_fault(soap, 0); if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); if (result && soap_tmp_ns__GetCityResponse->result) *result = *soap_tmp_ns__GetCityResponse->result; return soap_closesock(soap); }
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ims__haveFriends(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *user, int *result) { struct ims__haveFriends soap_tmp_ims__haveFriends; struct ims__haveFriendsResponse *soap_tmp_ims__haveFriendsResponse; soap->encodingStyle = NULL; soap_tmp_ims__haveFriends.user = user; soap_begin(soap); soap_serializeheader(soap); soap_serialize_ims__haveFriends(soap, &soap_tmp_ims__haveFriends); 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_ims__haveFriends(soap, &soap_tmp_ims__haveFriends, "ims:haveFriends", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put_ims__haveFriends(soap, &soap_tmp_ims__haveFriends, "ims:haveFriends", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!result) return soap_closesock(soap); soap_default_int(soap, result); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_tmp_ims__haveFriendsResponse = soap_get_ims__haveFriendsResponse(soap, NULL, "ims:haveFriendsResponse", ""); if (soap->error) return soap_recv_fault(soap, 0); if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); if (result && soap_tmp_ims__haveFriendsResponse->result) *result = *soap_tmp_ims__haveFriendsResponse->result; return soap_closesock(soap); }
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ims__getFriendshipRequest(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *user, struct _Struct_3 *friend_nick) { struct ims__getFriendshipRequest soap_tmp_ims__getFriendshipRequest; struct ims__getFriendshipRequestResponse *soap_tmp_ims__getFriendshipRequestResponse; soap->encodingStyle = NULL; soap_tmp_ims__getFriendshipRequest.user = user; soap_begin(soap); soap_serializeheader(soap); soap_serialize_ims__getFriendshipRequest(soap, &soap_tmp_ims__getFriendshipRequest); 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_ims__getFriendshipRequest(soap, &soap_tmp_ims__getFriendshipRequest, "ims:getFriendshipRequest", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put_ims__getFriendshipRequest(soap, &soap_tmp_ims__getFriendshipRequest, "ims:getFriendshipRequest", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!friend_nick) return soap_closesock(soap); soap_default_String(soap, friend_nick); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_tmp_ims__getFriendshipRequestResponse = soap_get_ims__getFriendshipRequestResponse(soap, NULL, "ims:getFriendshipRequestResponse", ""); if (soap->error) return soap_recv_fault(soap, 0); if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); if (friend_nick && soap_tmp_ims__getFriendshipRequestResponse->friend_nick) *friend_nick = *soap_tmp_ims__getFriendshipRequestResponse->friend_nick; return soap_closesock(soap); }
SOAP_FMAC5 int SOAP_FMAC6 soap_call___cwmp__TransferComplete(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct _cwmp__TransferComplete *cwmp__TransferComplete, struct _cwmp__TransferCompleteResponse *cwmp__TransferCompleteResponse) { struct __cwmp__TransferComplete soap_tmp___cwmp__TransferComplete; if (!soap_action) soap_action = "urn:dslforum-org:cwmp-1-1:transferCompleteIn"; soap->encodingStyle = NULL; soap_tmp___cwmp__TransferComplete.cwmp__TransferComplete = cwmp__TransferComplete; soap_begin(soap); soap_serializeheader(soap); soap_serialize___cwmp__TransferComplete(soap, &soap_tmp___cwmp__TransferComplete); 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___cwmp__TransferComplete(soap, &soap_tmp___cwmp__TransferComplete, "-cwmp:TransferComplete", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put___cwmp__TransferComplete(soap, &soap_tmp___cwmp__TransferComplete, "-cwmp:TransferComplete", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!cwmp__TransferCompleteResponse) return soap_closesock(soap); soap_default__cwmp__TransferCompleteResponse(soap, cwmp__TransferCompleteResponse); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_get__cwmp__TransferCompleteResponse(soap, cwmp__TransferCompleteResponse, "cwmp:TransferCompleteResponse", ""); if (soap->error) return soap_recv_fault(soap, 0); if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); return soap_closesock(soap); }
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ims__getLastMessage(struct soap *soap, const char *soap_endpoint, const char *soap_action, struct _Struct_1 *myMessage) { struct ims__getLastMessage soap_tmp_ims__getLastMessage; struct ims__getLastMessageResponse *soap_tmp_ims__getLastMessageResponse; soap->encodingStyle = NULL; soap_begin(soap); soap_serializeheader(soap); soap_serialize_ims__getLastMessage(soap, &soap_tmp_ims__getLastMessage); 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_ims__getLastMessage(soap, &soap_tmp_ims__getLastMessage, "ims:getLastMessage", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put_ims__getLastMessage(soap, &soap_tmp_ims__getLastMessage, "ims:getLastMessage", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!myMessage) return soap_closesock(soap); soap_default_Message(soap, myMessage); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_tmp_ims__getLastMessageResponse = soap_get_ims__getLastMessageResponse(soap, NULL, "ims:getLastMessageResponse", ""); if (soap->error) return soap_recv_fault(soap, 0); if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); if (myMessage && soap_tmp_ims__getLastMessageResponse->myMessage) *myMessage = *soap_tmp_ims__getLastMessageResponse->myMessage; return soap_closesock(soap); }
SOAP_FMAC5 int SOAP_FMAC6 soap_call_oph__ophExecuteMain(struct soap *soap, const char *soap_endpoint, const char *soap_action, char *ophExecuteMainRequest, struct oph__ophResponse *ophExecuteMainResponse) { struct oph__ophExecuteMain soap_tmp_oph__ophExecuteMain; if (soap_action == NULL) soap_action = ""; soap_tmp_oph__ophExecuteMain.ophExecuteMainRequest = ophExecuteMainRequest; soap_begin(soap); soap->encodingStyle = NULL; soap_serializeheader(soap); soap_serialize_oph__ophExecuteMain(soap, &soap_tmp_oph__ophExecuteMain); 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_oph__ophExecuteMain(soap, &soap_tmp_oph__ophExecuteMain, "oph:ophExecuteMain", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_url(soap, soap_endpoint, NULL), soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put_oph__ophExecuteMain(soap, &soap_tmp_oph__ophExecuteMain, "oph:ophExecuteMain", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!ophExecuteMainResponse) return soap_closesock(soap); soap_default_oph__ophResponse(soap, ophExecuteMainResponse); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_get_oph__ophResponse(soap, ophExecuteMainResponse, "oph:ophResponse", NULL); if (soap->error) return soap_recv_fault(soap, 0); if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); return soap_closesock(soap); }
int agentProxy::setCameraURI(struct camera__uri *_info, struct camera__info &_infoResponse) { struct soap *soap = this; struct agent__setCameraURI soap_tmp_agent__setCameraURI; const char *soap_action = NULL; soap->encodingStyle = NULL; soap_tmp_agent__setCameraURI._info = _info; soap_begin(soap); soap_serializeheader(soap); soap_serialize_agent__setCameraURI(soap, &soap_tmp_agent__setCameraURI); 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_agent__setCameraURI(soap, &soap_tmp_agent__setCameraURI, "agent:setCameraURI", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put_agent__setCameraURI(soap, &soap_tmp_agent__setCameraURI, "agent:setCameraURI", NULL) || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!&_infoResponse) return soap_closesock(soap); soap_default_camera__info(soap, &_infoResponse); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); soap_get_camera__info(soap, &_infoResponse, "camera:info", ""); if (soap->error) return soap_recv_fault(soap, 0); if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); return soap_closesock(soap); }
SOAP_FMAC5 int SOAP_FMAC6 soap_call___s0__Read(struct soap* soap, const char* soap_endpoint, const char* soap_action, _s0__Read* s0__Read, _s0__ReadResponse* s0__ReadResponse) { struct __s0__Read soap_tmp___s0__Read; if (!soap_action) soap_action = "http://opcfoundation.org/webservices/XMLDA/1.0/Read"; soap->encodingStyle = NULL; soap_tmp___s0__Read.s0__Read = s0__Read; soap_begin(soap); soap_serializeheader(soap); soap_serialize___s0__Read(soap, &soap_tmp___s0__Read); 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___s0__Read(soap, &soap_tmp___s0__Read, "-s0:Read", "") || soap_body_end_out(soap) || soap_envelope_end_out(soap)) return soap->error; } if (soap_end_count(soap)) return soap->error; if (soap_connect(soap, soap_endpoint, soap_action) || soap_envelope_begin_out(soap) || soap_putheader(soap) || soap_body_begin_out(soap) || soap_put___s0__Read(soap, &soap_tmp___s0__Read, "-s0:Read", "") || soap_body_end_out(soap) || soap_envelope_end_out(soap) || soap_end_send(soap)) return soap_closesock(soap); if (!s0__ReadResponse) return soap_closesock(soap); s0__ReadResponse->soap_default(soap); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) return soap_closesock(soap); s0__ReadResponse->soap_get(soap, "s0:ReadResponse", ""); if (soap->error) { if (soap->error == SOAP_TAG_MISMATCH && soap->level == 2) return soap_recv_fault(soap); return soap_closesock(soap); } if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) return soap_closesock(soap); return soap_closesock(soap); }
int soap_parser_decode(void *handle, const char *xml) { SoapParser *parser = (SoapParser *)handle; struct soap *soap; int fd[2]; if (parser == NULL) { return -1; } if (xml == NULL) { LOGE(LOG_TAG, "input xml is empty"); return -1; } soap = parser->soap; pipe(fd); /*soap_init(soap);*/ soap_init1(soap, SOAP_XML_IGNORENS); soap_set_namespaces(soap, namespaces); soap->socket = -1; soap->recvfd = fd[0]; write(fd[1], xml, strlen(xml)); close(fd[1]); if (soap_begin_recv(soap) != 0 || soap_envelope_begin_in(soap) != 0) { LOGE(LOG_TAG, "begin decode failed, error=%d", soap->error); return -1; } if (soap_recv_header(soap) != 0) { LOGE(LOG_TAG, "decode soap header failed, %d", soap->error); return -1; } _soap_header_parse(soap->header, &(parser->id), &(parser->hold_requests), &(parser->session_timeout), &(parser->supported_cwmp_versions), &(parser->use_cwmp_version)); if (soap_body_begin_in(soap) != 0) { LOGE(LOG_TAG, "decode soap body failed, %d", soap->error); return -1; } parser->_namespaces = _soap_namespaces_parse(soap); parser->namespaces = parser->_namespaces; parser->version = _soap_version_parse(xml, parser->namespaces); if (parser->version == CWMP_VERSION_1_2) { if (parser->supported_cwmp_versions != 0 && parser->use_cwmp_version != 0) { parser->version = CWMP_VERSION_1_4; } else if (parser->session_timeout > 0) { parser->version = CWMP_VERSION_1_3; } } if (soap_recv_fault(soap, 1) != 0) { parser->type = CWMP_MSG_FAULT; _soap_fault_dump(soap->fault); if (soap->fault != NULL && soap->fault->detail != NULL && soap->fault->detail->__type == SOAP_TYPE__cwmp__Fault) { struct _cwmp__Fault *cwmp_fault; cwmp_fault = (struct _cwmp__Fault *)soap->fault->detail->fault; if (cwmp_fault != NULL) { if (cwmp_fault->FaultCode != NULL) { parser->fault_code = atoi(cwmp_fault->FaultCode); } parser->fault_string = cwmp_fault->FaultString; parser->fault_body = cwmp_fault; parser->body = cwmp_fault; } } return 0; } int gsoap_type; parser->body = soap_getelement(soap, &gsoap_type); parser->type = _get_cwmp_type(gsoap_type); if (soap->error) { LOGE(LOG_TAG, "get cwmp body failed, error=%d", soap->error); return -1; } if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) { LOGE(LOG_TAG, "end decode failed, %d", soap->error); return -1; } close(fd[0]); return 0; }
/** * xml -> body * @param[in] handle: parser * @param[in] xml: the xml to be decoded * @param[out] id: cpe's id? I don't know * @param[out] hold_request: hold * @param[out] type: SOAP/RPC type * @param[out] body: the result get from xml */ int soap_parser_decode(void *handle, const char *xml, int *id, int *hold_requests, int *type, void **body) { struct soap_parser *parser = (struct soap_parser *)handle; struct soap *soap = parser->soap; int fd[2]; if (xml == NULL) { return -1; } /*LOGD(parser->tag, xml);*/ pipe(fd); *id = 0; *hold_requests = 0; *type = 0; *body = NULL; soap_init(soap); soap->socket = -1; soap->recvfd = fd[0]; write(fd[1], xml, strlen(xml)); close(fd[1]); if (soap_begin_recv(soap) || soap_envelope_begin_in(soap) || soap_recv_header(soap) || soap_body_begin_in(soap)) { return -1; } if (soap->header != NULL) { if (soap->header->__HoldRequests != NULL) { *hold_requests = soap->header->__HoldRequests->__item; } if (soap->header->__ID != NULL) { if (soap->header->__ID->__item != NULL) { *id = atoi(soap->header->__ID->__item); } } } if (soap_recv_fault(soap, 1)) { LOGE(parser->tag, "FaultCode=%s, FaultString=%s", soap->fault->faultcode, soap->fault->faultstring); *type = SOAP_TYPE__ns1__Fault; if (soap->fault != NULL && soap->fault->detail != NULL) { *body = soap->fault->detail->__any; } return 0; } *body = soap_getelement(soap, type); if (soap->error) { return -1; } if (soap_body_end_in(soap) || soap_envelope_end_in(soap) || soap_end_recv(soap)) { return -1; } ////soap_end(soap); //soap_free(soap); close(fd[0]); if (soap->header != NULL) { if (soap->header->__ID != NULL) { LOGV(parser->tag, "soap header: ID=%s(%s)", soap->header->__ID->__item, soap->header->__ID->SOAP_ENV__mustUnderstand); } if (soap->header->__HoldRequests != NULL) { LOGV(parser->tag, "soap header: HoldRequests=%s(%s)", soap->header->__HoldRequests->__item, soap->header->__HoldRequests->SOAP_ENV__mustUnderstand); } } return 0; }