Пример #1
0
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");
}
Пример #2
0
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;
}
Пример #3
0
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;
}