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

📄 gupnp-device-info.c

📁 另一 UPNP SDK 支持在UNIX/LINUX上运行。 UPnP是一种网络协议
💻 C
📖 第 1 页 / 共 3 页
字号:
/* * Copyright (C) 2006, 2007, 2008 OpenedHand Ltd. * * Author: Jorn Baayen <jorn@openedhand.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. *//** * SECTION:gupnp-device-info * @short_description: Base abstract class for querying device information. * * The #GUPnPDeviceInfo base abstract class provides methods for querying * device information. */#include <string.h>#include "gupnp-device-info.h"#include "gupnp-device-info-private.h"#include "gupnp-resource-factory-private.h"#include "xml-util.h"G_DEFINE_ABSTRACT_TYPE (GUPnPDeviceInfo,                        gupnp_device_info,                        G_TYPE_OBJECT);struct _GUPnPDeviceInfoPrivate {        GUPnPResourceFactory *factory;        GUPnPContext         *context;        char *location;        char *udn;        char *device_type;        SoupURI *url_base;        XmlDocWrapper *doc;        xmlNode *element;};enum {        PROP_0,        PROP_RESOURCE_FACTORY,        PROP_CONTEXT,        PROP_LOCATION,        PROP_UDN,        PROP_DEVICE_TYPE,        PROP_URL_BASE,        PROP_DOCUMENT,        PROP_ELEMENT};static voidgupnp_device_info_init (GUPnPDeviceInfo *info){        info->priv = G_TYPE_INSTANCE_GET_PRIVATE (info,                                                  GUPNP_TYPE_DEVICE_INFO,                                                  GUPnPDeviceInfoPrivate);}static voidgupnp_device_info_set_property (GObject      *object,                                guint         property_id,                                const GValue *value,                                GParamSpec   *pspec){        GUPnPDeviceInfo *info;        info = GUPNP_DEVICE_INFO (object);        switch (property_id) {        case PROP_RESOURCE_FACTORY:                info->priv->factory = 			GUPNP_RESOURCE_FACTORY (g_value_dup_object (value));                break;        case PROP_CONTEXT:                info->priv->context = g_object_ref (g_value_get_object (value));                break;        case PROP_LOCATION:                info->priv->location = g_value_dup_string (value);                break;        case PROP_UDN:                info->priv->udn = g_value_dup_string (value);                break;        case PROP_DEVICE_TYPE:                info->priv->device_type = g_value_dup_string (value);                break;        case PROP_URL_BASE:                info->priv->url_base = g_value_get_pointer (value);                if (info->priv->url_base)                        info->priv->url_base =                                soup_uri_copy (info->priv->url_base);                break;        case PROP_DOCUMENT:                info->priv->doc = g_value_get_object (value);                if (info->priv->doc)                        g_object_ref_sink (info->priv->doc);                break;        case PROP_ELEMENT:                info->priv->element = g_value_get_pointer (value);                break;        default:                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);                break;        }}static voidgupnp_device_info_get_property (GObject    *object,                                guint       property_id,                                GValue     *value,                                GParamSpec *pspec){        GUPnPDeviceInfo *info;        info = GUPNP_DEVICE_INFO (object);        switch (property_id) {        case PROP_RESOURCE_FACTORY:                g_value_set_object (value,                                    info->priv->factory);                break;        case PROP_CONTEXT:                g_value_set_object (value,                                    info->priv->context);                break;        case PROP_LOCATION:                g_value_set_string (value,                                    info->priv->location);                break;        case PROP_UDN:                g_value_set_string (value,                                    gupnp_device_info_get_udn (info));                break;        case PROP_DEVICE_TYPE:                g_value_set_string (value,                                    gupnp_device_info_get_device_type (info));                break;        case PROP_URL_BASE:                g_value_set_pointer (value,                                     info->priv->url_base);                break;        default:                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);                break;        }}static voidgupnp_device_info_dispose (GObject *object){        GUPnPDeviceInfo *info;        info = GUPNP_DEVICE_INFO (object);        if (info->priv->factory) {                g_object_unref (info->priv->factory);                info->priv->factory = NULL;        }        if (info->priv->context) {                g_object_unref (info->priv->context);                info->priv->context = NULL;        }        if (info->priv->doc) {                g_object_unref (info->priv->doc);                info->priv->doc = NULL;        }}static voidgupnp_device_info_finalize (GObject *object){        GUPnPDeviceInfo *info;        info = GUPNP_DEVICE_INFO (object);        g_free (info->priv->location);        g_free (info->priv->udn);        g_free (info->priv->device_type);        soup_uri_free (info->priv->url_base);}static voidgupnp_device_info_class_init (GUPnPDeviceInfoClass *klass){        GObjectClass *object_class;        object_class = G_OBJECT_CLASS (klass);        object_class->set_property = gupnp_device_info_set_property;        object_class->get_property = gupnp_device_info_get_property;        object_class->dispose      = gupnp_device_info_dispose;        object_class->finalize     = gupnp_device_info_finalize;        g_type_class_add_private (klass, sizeof (GUPnPDeviceInfoPrivate));        /**         * GUPnPDeviceInfo: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_READWRITE |                                      G_PARAM_CONSTRUCT_ONLY |                                      G_PARAM_STATIC_NAME |                                      G_PARAM_STATIC_NICK |                                      G_PARAM_STATIC_BLURB));        /**         * GUPnPDeviceInfo:context         *         * The #GUPnPContext to use.         **/        g_object_class_install_property                (object_class,                 PROP_CONTEXT,                 g_param_spec_object ("context",                                      "Context",                                      "The GUPnPContext",                                      GUPNP_TYPE_CONTEXT,                                      G_PARAM_READWRITE |                                      G_PARAM_CONSTRUCT_ONLY |                                      G_PARAM_STATIC_NAME |                                      G_PARAM_STATIC_NICK |                                      G_PARAM_STATIC_BLURB));        /**         * GUPnPDeviceInfo:location         *         * The location of the device description file.         **/        g_object_class_install_property                (object_class,                 PROP_LOCATION,                 g_param_spec_string ("location",                                      "Location",                                      "The location of the device description "                                      "file",                                      NULL,                                      G_PARAM_READWRITE |                                      G_PARAM_CONSTRUCT_ONLY |                                      G_PARAM_STATIC_NAME |                                      G_PARAM_STATIC_NICK |                                      G_PARAM_STATIC_BLURB));        /**         * GUPnPDeviceInfo:udn         *         * The UDN of this device.         **/        g_object_class_install_property                (object_class,                 PROP_UDN,                 g_param_spec_string ("udn",                                      "UDN",                                      "The UDN",                                      NULL,                                      G_PARAM_READWRITE |                                      G_PARAM_CONSTRUCT_ONLY |                                      G_PARAM_STATIC_NAME |                                      G_PARAM_STATIC_NICK |                                      G_PARAM_STATIC_BLURB));        /**         * GUPnPDeviceInfo:device-type         *         * The device type.         **/        g_object_class_install_property                (object_class,                 PROP_DEVICE_TYPE,                 g_param_spec_string ("device-type",                                      "Device type",                                      "The device type",                                      NULL,                                      G_PARAM_READWRITE |                                      G_PARAM_CONSTRUCT_ONLY |                                      G_PARAM_STATIC_NAME |                                      G_PARAM_STATIC_NICK |                                      G_PARAM_STATIC_BLURB));        /**         * GUPnPDeviceInfo:url-base         *         * The URL base (#SoupURI).         **/        g_object_class_install_property                (object_class,                 PROP_URL_BASE,                 g_param_spec_pointer ("url-base",                                       "URL base",                                       "The URL base",                                       G_PARAM_READWRITE |                                       G_PARAM_CONSTRUCT_ONLY |                                       G_PARAM_STATIC_NAME |                                       G_PARAM_STATIC_NICK |                                       G_PARAM_STATIC_BLURB));        /**         * GUPnPDeviceInfo:document         *         * Private property.         *         * Stability: Private         **/        g_object_class_install_property                (object_class,                 PROP_DOCUMENT,                 g_param_spec_object ("document",                                      "Document",                                      "The XML document related to this "                                      "device",                                      TYPE_XML_DOC_WRAPPER,                                      G_PARAM_WRITABLE |                                      G_PARAM_CONSTRUCT_ONLY |                                      G_PARAM_STATIC_NAME |                                      G_PARAM_STATIC_NICK |                                      G_PARAM_STATIC_BLURB));        /**         * GUPnPDeviceInfo:element         *         * Private property.         *         * Stability: Private         **/        g_object_class_install_property                (object_class,                 PROP_ELEMENT,                 g_param_spec_pointer ("element",                                       "Element",                                       "The XML element related to this "                                       "device",                                       G_PARAM_WRITABLE |                                       G_PARAM_CONSTRUCT_ONLY |                                       G_PARAM_STATIC_NAME |                                       G_PARAM_STATIC_NICK |                                       G_PARAM_STATIC_BLURB));}/** * gupnp_device_info_get_resource_factory * @device_info: A #GUPnPDeviceInfo * * Get the #GUPnPResourceFactory used by the @device_info. * * Returns: A #GUPnPResourceFactory. **/GUPnPResourceFactory *gupnp_device_info_get_resource_factory (GUPnPDeviceInfo *info){        g_return_val_if_fail (GUPNP_IS_DEVICE_INFO (info), NULL);        return info->priv->factory;}/** * gupnp_device_info_get_context * @info: A #GUPnPDeviceInfo * * Get the associated #GUPnPContext. * * Returns: A #GUPnPContext. **/GUPnPContext *gupnp_device_info_get_context (GUPnPDeviceInfo *info){        g_return_val_if_fail (GUPNP_IS_DEVICE_INFO (info), NULL);        return info->priv->context;}/** * gupnp_device_info_get_location * @info: A #GUPnPDeviceInfo * * Get the location of the device description file. * * Returns: A constant string. **/const char *gupnp_device_info_get_location (GUPnPDeviceInfo *info){        g_return_val_if_fail (GUPNP_IS_DEVICE_INFO (info), NULL);        return info->priv->location;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -