BOOL cg_upnpav_dms_queryreceived(CgUpnpStateVariable *statVar)
{
    CgUpnpDevice *dev;
    CgUpnpService *service;
    CgUpnpAvServer *dms;
    CG_UPNPAV_STATEVARIABLE_LISTNER userQueryListener;

    service = cg_upnp_statevariable_getservice(statVar);
    if (!service)
        return FALSE;

    dev = (CgUpnpDevice *)cg_upnp_service_getdevice(service);
    if (!dev)
        return FALSE;

    dms = (CgUpnpAvServer *)cg_upnp_device_getuserdata(dev);
    if (!dms)
        return FALSE;

    userQueryListener = cg_upnpav_dms_getquerylistener(dms);
    if (userQueryListener) {
        if (userQueryListener(statVar))
            return TRUE;
    }

    if (cg_streq(cg_upnp_service_getservicetype(service), CG_UPNPAV_DMS_CONTENTDIRECTORY_SERVICE_TYPE))
        return cg_upnpav_dms_condir_queryreceived(statVar);

    return FALSE;
}
示例#2
0
BOOL cg_upnpav_dmr_queryreceived(CgUpnpStateVariable* statVar)
{
  CgUpnpDevice* dev;
  CgUpnpService* service;
  CgUpnpAvRenderer* dmr;
  CG_UPNPAV_STATEVARIABLE_LISTNER userQueryListener;

  service = cg_upnp_statevariable_getservice(statVar);
  if (!service)
    return FALSE;

  dev = (CgUpnpDevice*)cg_upnp_service_getdevice(service);
  if (!dev)
    return FALSE;

  dmr = (CgUpnpAvRenderer*)cg_upnp_device_getuserdata(dev);
  if (!dmr)
    return FALSE;

  userQueryListener = cg_upnpav_dmr_getquerylistener(dmr);
  if (userQueryListener) {
    if (userQueryListener(statVar))
      return TRUE;
  }

  if (cg_streq(cg_upnp_service_getservicetype(service), CG_UPNPAV_DMR_AVTRANSPORT_SERVICE_TYPE))
    return cg_upnpav_dmr_avtransport_queryreceived(statVar);

  if (cg_streq(cg_upnp_service_getservicetype(service), CG_UPNPAV_DMR_RENDERINGCONTROL_SERVICE_TYPE))
    return cg_upnpav_dmr_renderingctrl_queryreceived(statVar);

  if (cg_streq(cg_upnp_service_getservicetype(service), CG_UPNPAV_DMR_CONNECTIONMANAGER_SERVICE_TYPE))
    return cg_upnpav_dmr_conmgr_queryreceived(statVar);

  return FALSE;
}
static void cg_upnp_statevariable_setvaluewithnotify(CgUpnpStateVariable *statVar, char *data, BOOL doNotify)
{
	CgUpnpService *service;

	cg_log_debug_l4("Entering...\n");

	cg_string_setvalue(statVar->value, data);

#if !defined(CG_UPNP_NOUSE_SUBSCRIPTION)
	/**** notify event ****/
	if (doNotify) {
		if (cg_upnp_statevariable_issendevents(statVar) == FALSE)
			return;

		service = cg_upnp_statevariable_getservice(statVar);
		if (service == NULL)
			return;

		cg_upnp_service_notify(service, statVar);
	}
#endif

	cg_log_debug_l4("Leaving...\n");
}