⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gupnp-control-point.c

📁 另一 UPNP SDK 支持在UNIX/LINUX上运行。 UPnP是一种网络协议
💻 C
📖 第 1 页 / 共 3 页
字号:
                                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 + -