void mupnp_control_action_response_setresponse(mUpnpActionResponse *actionRes, mUpnpAction *action) { mUpnpSoapResponse *soapRes; mUpnpHttpResponse *httpRes; mUpnpXmlNode *bodyNode; mUpnpXmlNode *resNode; mUpnpXmlNode *envNode; mupnp_log_debug_l4("Entering...\n"); soapRes = mupnp_control_action_response_getsoapresponse(actionRes); httpRes = mupnp_soap_response_gethttpresponse(soapRes); mupnp_http_response_setstatuscode(httpRes, MUPNP_HTTP_STATUS_OK); mupnp_control_soap_response_initializeenvelopenode(soapRes); bodyNode = mupnp_soap_response_getbodynode(soapRes); resNode = mupnp_control_action_response_createresponsenode(action); mupnp_xml_node_addchildnode(bodyNode, resNode); envNode = mupnp_soap_response_getenvelopenode(soapRes); mupnp_soap_response_setcontent(soapRes, envNode); mupnp_log_debug_l4("Leaving...\n"); }
bool mupnp_action_performlistner(mUpnpAction *action, mUpnpActionRequest *actionReq) { MUPNP_ACTION_LISTNER listener; mUpnpActionResponse *actionRes; mUpnpHttpRequest *actionReqHttpReq; mUpnpHttpResponse *actionResHttpRes; mupnp_log_debug_l4("Entering...\n"); listener = mupnp_action_getlistner(action); if (listener == NULL) return false; actionRes = mupnp_control_action_response_new(); mupnp_action_setstatuscode(action, MUPNP_STATUS_INVALID_ACTION); mupnp_action_setstatusdescription(action, mupnp_status_code2string(MUPNP_STATUS_INVALID_ACTION)); mupnp_action_clearoutputargumentvalues(action); if (listener(action) == true) mupnp_control_action_response_setresponse(actionRes, action); else mupnp_control_soap_response_setfaultresponse(mupnp_control_action_response_getsoapresponse(actionRes), mupnp_action_getstatuscode(action), mupnp_action_getstatusdescription(action)); actionReqHttpReq = mupnp_soap_request_gethttprequest(mupnp_control_action_request_getsoaprequest(actionReq)); actionResHttpRes = mupnp_soap_response_gethttpresponse(mupnp_control_action_response_getsoapresponse(actionRes)); mupnp_http_request_postresponse(actionReqHttpReq, actionResHttpRes); mupnp_control_action_response_delete(actionRes); mupnp_log_debug_l4("Leaving...\n"); return true; }
bool mupnp_statevariable_performlistner(mUpnpStateVariable* statVar, mUpnpQueryRequest* queryReq) { MUPNP_STATEVARIABLE_LISTNER listener; mUpnpQueryResponse* queryRes; mUpnpHttpRequest* queryReqHttpReq; mUpnpHttpResponse* queryResHttpRes; mupnp_log_debug_l4("Entering...\n"); listener = mupnp_statevariable_getlistener(statVar); if (listener == NULL) return false; queryRes = mupnp_control_query_response_new(); mupnp_statevariable_setstatuscode(statVar, MUPNP_STATUS_INVALID_ACTION); mupnp_statevariable_setstatusdescription(statVar, mupnp_status_code2string(MUPNP_STATUS_INVALID_ACTION)); mupnp_statevariable_setvalue(statVar, ""); if (listener(statVar) == true) mupnp_control_query_response_setresponse(queryRes, statVar); else mupnp_control_soap_response_setfaultresponse(mupnp_control_query_response_getsoapresponse(queryRes), mupnp_statevariable_getstatuscode(statVar), mupnp_statevariable_getstatusdescription(statVar)); queryReqHttpReq = mupnp_soap_request_gethttprequest(mupnp_control_query_request_getsoaprequest(queryReq)); queryResHttpRes = mupnp_soap_response_gethttpresponse(mupnp_control_query_response_getsoapresponse(queryRes)); mupnp_http_request_postresponse(queryReqHttpReq, queryResHttpRes); mupnp_control_query_response_delete(queryRes); mupnp_log_debug_l4("Leaving...\n"); return true; }