📄 gupnp-control-point.c
字号:
g_list_delete_link (control_point->priv->services, cur_l); g_signal_emit (control_point, signals[SERVICE_PROXY_UNAVAILABLE], 0, proxy); g_object_unref (proxy); } } else { l = control_point->priv->devices; while (l) { GUPnPDeviceInfo *info; GUPnPDeviceProxy *proxy; info = GUPNP_DEVICE_INFO (l->data); if (strcmp (udn, gupnp_device_info_get_udn (info)) != 0) { l = l->next; continue; } /* Remove proxy */ proxy = GUPNP_DEVICE_PROXY (info); cur_l = l; l = l->next; control_point->priv->devices = g_list_delete_link (control_point->priv->devices, cur_l); g_signal_emit (control_point, signals[DEVICE_PROXY_UNAVAILABLE], 0, proxy); g_object_unref (proxy); } } g_free (udn); g_free (service_type);}static voidgupnp_control_point_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec){ GUPnPControlPoint *control_point; control_point = GUPNP_CONTROL_POINT (object); switch (property_id) { case PROP_RESOURCE_FACTORY: control_point->priv->factory = GUPNP_RESOURCE_FACTORY (g_value_dup_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; }}static voidgupnp_control_point_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec){ GUPnPControlPoint *control_point; control_point = GUPNP_CONTROL_POINT (object); switch (property_id) { case PROP_RESOURCE_FACTORY: g_value_set_object (value, control_point->priv->factory); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; }}static voidgupnp_control_point_class_init (GUPnPControlPointClass *klass){ GObjectClass *object_class; GSSDPResourceBrowserClass *browser_class; object_class = G_OBJECT_CLASS (klass); object_class->set_property = gupnp_control_point_set_property; object_class->get_property = gupnp_control_point_get_property; object_class->dispose = gupnp_control_point_dispose; object_class->finalize = gupnp_control_point_finalize; browser_class = GSSDP_RESOURCE_BROWSER_CLASS (klass); browser_class->resource_available = gupnp_control_point_resource_available; browser_class->resource_unavailable = gupnp_control_point_resource_unavailable; g_type_class_add_private (klass, sizeof (GUPnPControlPointPrivate)); /** * GUPnPControlPoint:resource-factory * * The resource factory to use. Set to NULL for default factory. **/ g_object_class_install_property (object_class, PROP_RESOURCE_FACTORY, g_param_spec_object ("resource-factory", "Resource Factory", "The resource factory to use", GUPNP_TYPE_RESOURCE_FACTORY, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); /** * GUPnPControlPoint::device-proxy-available * @control_point: The #GUPnPControlPoint that received the signal * @proxy: The now available #GUPnPDeviceProxy * * The ::device-proxy-available signal is emitted whenever a new * device has become available. **/ signals[DEVICE_PROXY_AVAILABLE] = g_signal_new ("device-proxy-available", GUPNP_TYPE_CONTROL_POINT, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GUPnPControlPointClass, device_proxy_available), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GUPNP_TYPE_DEVICE_PROXY); /** * GUPnPControlPoint::device-proxy-unavailable * @control_point: The #GUPnPControlPoint that received the signal * @proxy: The now unavailable #GUPnPDeviceProxy * * The ::device-proxy-unavailable signal is emitted whenever a * device is not available any more. **/ signals[DEVICE_PROXY_UNAVAILABLE] = g_signal_new ("device-proxy-unavailable", GUPNP_TYPE_CONTROL_POINT, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GUPnPControlPointClass, device_proxy_unavailable), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GUPNP_TYPE_DEVICE_PROXY); /** * GUPnPControlPoint::service-proxy-available * @control_point: The #GUPnPControlPoint that received the signal * @proxy: The now available #GUPnPServiceProxy * * The ::service-proxy-available signal is emitted whenever a new * service has become available. **/ signals[SERVICE_PROXY_AVAILABLE] = g_signal_new ("service-proxy-available", GUPNP_TYPE_CONTROL_POINT, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GUPnPControlPointClass, service_proxy_available), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GUPNP_TYPE_SERVICE_PROXY); /** * GUPnPControlPoint::service-proxy-unavailable * @control_point: The #GUPnPControlPoint that received the signal * @proxy: The now unavailable #GUPnPServiceProxy * * The ::service-proxy-unavailable signal is emitted whenever a * service is not available any more. **/ signals[SERVICE_PROXY_UNAVAILABLE] = g_signal_new ("service-proxy-unavailable", GUPNP_TYPE_CONTROL_POINT, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GUPnPControlPointClass, service_proxy_unavailable), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GUPNP_TYPE_SERVICE_PROXY);}/** * gupnp_control_point_new * @context: A #GUPnPContext * @target: The search target * * Create a new #GUPnPControlPoint with the specified @context and @target. * * @target should be a service or device name, such as * <literal>urn:schemas-upnp-org:service:WANIPConnection:1</literal> or * <literal>urn:schemas-upnp-org:device:MediaRenderer:1</literal>. * * Return value: A new #GUPnPControlPoint object. **/GUPnPControlPoint *gupnp_control_point_new (GUPnPContext *context, const char *target){ GUPnPResourceFactory *factory; factory = gupnp_resource_factory_get_default (); return gupnp_control_point_new_full (context, factory, target);}/** * gupnp_control_point_new_full * @context: A #GUPnPContext * @factory: A #GUPnPResourceFactory * @target: The search target * * Create a new #GUPnPControlPoint with the specified @context, @factory and * @target. * * @target should be a service or device name, such as * <literal>urn:schemas-upnp-org:service:WANIPConnection:1</literal> or * <literal>urn:schemas-upnp-org:device:MediaRenderer:1</literal>. * * Return value: A new #GUPnPControlPoint object. **/GUPnPControlPoint *gupnp_control_point_new_full (GUPnPContext *context, GUPnPResourceFactory *factory, const char *target){ g_return_val_if_fail (GUPNP_IS_CONTEXT (context), NULL); g_return_val_if_fail (GUPNP_IS_RESOURCE_FACTORY (factory), NULL); g_return_val_if_fail (target, NULL); return g_object_new (GUPNP_TYPE_CONTROL_POINT, "client", context, "target", target, "resource-factory", factory, NULL);}/** * gupnp_control_point_get_context * @control_point: A #GUPnPControlPoint * * Get the #GUPnPControlPoint associated with @control_point. * * Return value: The #GUPnPContext. **/GUPnPContext *gupnp_control_point_get_context (GUPnPControlPoint *control_point){ GSSDPClient *client; g_return_val_if_fail (GUPNP_IS_CONTROL_POINT (control_point), NULL); client = gssdp_resource_browser_get_client (GSSDP_RESOURCE_BROWSER (control_point)); return GUPNP_CONTEXT (client);}/** * gupnp_control_point_list_device_proxies * @control_point: A #GUPnPControlPoint * * Get the #GList of discovered #GUPnPDeviceProxy objects. Do not free the list * nor its elements. * * Return value: a #GList of #GUPnPDeviceProxy objects. **/const GList *gupnp_control_point_list_device_proxies (GUPnPControlPoint *control_point){ g_return_val_if_fail (GUPNP_IS_CONTROL_POINT (control_point), NULL); return (const GList *) control_point->priv->devices;}/** * gupnp_control_point_list_service_proxies * @control_point: A #GUPnPControlPoint * * Get the #GList of discovered #GUPnPServiceProxy objects. Do not free the list * nor its elements. * * Return value: a #GList of #GUPnPServiceProxy objects. **/const GList *gupnp_control_point_list_service_proxies (GUPnPControlPoint *control_point){ g_return_val_if_fail (GUPNP_IS_CONTROL_POINT (control_point), NULL); return (const GList *) control_point->priv->services;}/** * gupnp_control_point_get_resource_factory * @control_point: A #GUPnPControlPoint * * Get the #GUPnPResourceFactory used by the @control_point. * * Return value: A #GUPnPResourceFactory. **/GUPnPResourceFactory *gupnp_control_point_get_resource_factory (GUPnPControlPoint *control_point){ g_return_val_if_fail (GUPNP_IS_CONTROL_POINT (control_point), NULL); return control_point->priv->factory;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -