<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <include name="GSSDP" version="1.2"/>
  <include name="Gio" version="2.0"/>
  <include name="Soup" version="2.4"/>
  <include name="libxml2" version="2.0"/>
  <package name="gupnp-1.2"/>
  <c:include name="libgupnp/gupnp.h"/>
  <namespace name="GUPnP"
             version="1.2"
             shared-library="libgupnp-1.2.so.1"
             c:identifier-prefixes="GUPnP"
             c:symbol-prefixes="gupnp">
    <alias name="WhiteList"
           c:type="GUPnPWhiteList"
           deprecated="1"
           deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="21">Utility class for context filtering in the context manager.

It provides API to manage a list
of entries that will be used to filter networks.
The #GUPnPWhiteList could be enabled or not. If it's enabled but the entries
list is empty, it behaves as disabled.</doc>
      <doc-deprecated xml:space="preserve">Use #GUPnPContextFilter</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="20"/>
      <type name="ContextFilter" c:type="GUPnPContextFilter"/>
    </alias>
    <interface name="Acl"
               c:symbol-prefix="acl"
               c:type="GUPnPAcl"
               glib:type-name="GUPnPAcl"
               glib:get-type="gupnp_acl_get_type"
               glib:type-struct="AclInterface">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-acl.h"
           line="21">Handle to an object implementing the #GUPnPAclInterface interface.</doc>
      <source-position filename="libgupnp/gupnp-acl.h" line="79"/>
      <virtual-method name="can_sync" invoker="can_sync" version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-acl.c"
             line="140">Check whether gupnp_acl_is_allowed_async() is supported.</doc>
        <source-position filename="libgupnp/gupnp-acl.h" line="70"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="142">A #GUPnPAcl
@returns %TRUE, if gupnp_acl_is_allowed_async() is supported, %FALSE
otherwise.</doc>
            <type name="Acl" c:type="GUPnPAcl*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_allowed" invoker="is_allowed" version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-acl.c"
             line="33">Check whether an IP address is allowed to access this resource.</doc>
        <source-position filename="libgupnp/gupnp-acl.h" line="49"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="35">an instance of #GUPnPAcl</doc>
            <type name="Acl" c:type="GUPnPAcl*"/>
          </instance-parameter>
          <parameter name="device"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="36">The #GUPnPDevice associated with @path or %NULL if
unknown.</doc>
            <type name="gpointer" c:type="_GUPnPDevice*"/>
          </parameter>
          <parameter name="service"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="38">The #GUPnPService associated with @path or %NULL if
unknown.</doc>
            <type name="gpointer" c:type="_GUPnPService*"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="40">The path being served.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="41">IP address of the peer.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="agent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="42">The User-Agent header of the peer or %NULL if not
unknown.
@returns %TRUE if the peer is allowed, %FALSE otherwise</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_allowed_async"
                      invoker="is_allowed_async"
                      version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-acl.c"
             line="68">Optional. Check asynchronously whether an IP address is allowed to access
this resource. Use this function if the process of verifying the access right
is expected to take some time, for example when using D-Bus etc.

If this function is supported, gupnp_acl_can_sync() should return %TRUE.

Use gupnp_acl_is_allowed_finish() to retrieve the result.</doc>
        <source-position filename="libgupnp/gupnp-acl.h" line="56"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="70">a #GUPnPAcl</doc>
            <type name="Acl" c:type="GUPnPAcl*"/>
          </instance-parameter>
          <parameter name="device"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="71">The #GUPnPDevice associated with @path or %NULL if
unknown.</doc>
            <type name="gpointer" c:type="_GUPnPDevice*"/>
          </parameter>
          <parameter name="service"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="73">The #GUPnPService associated with @path or %NULL if
unknown.</doc>
            <type name="gpointer" c:type="_GUPnPService*"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="75">The path being served.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="76">IP address of the peer</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="agent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="77">The User-Agent header of the peer or %NULL if not
unknown.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="79">A #GCancellable which can be used to cancel the
operation.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="7">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="81">Callback to call after the function is done.</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="7">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="82">Some user data.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_allowed_finish"
                      invoker="is_allowed_finish"
                      version="0.20.11"
                      throws="1">
        <source-position filename="libgupnp/gupnp-acl.h" line="66"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="120">An instance of #GUPnPAcl</doc>
            <type name="Acl" c:type="GUPnPAcl*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="121">%GAsyncResult obtained from the callback in gupnp_acl_is_allowed_async()</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="can_sync"
              c:identifier="gupnp_acl_can_sync"
              version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-acl.c"
             line="140">Check whether gupnp_acl_is_allowed_async() is supported.</doc>
        <source-position filename="libgupnp/gupnp-acl.h" line="106"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="142">A #GUPnPAcl
@returns %TRUE, if gupnp_acl_is_allowed_async() is supported, %FALSE
otherwise.</doc>
            <type name="Acl" c:type="GUPnPAcl*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_allowed"
              c:identifier="gupnp_acl_is_allowed"
              version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-acl.c"
             line="33">Check whether an IP address is allowed to access this resource.</doc>
        <source-position filename="libgupnp/gupnp-acl.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="35">an instance of #GUPnPAcl</doc>
            <type name="Acl" c:type="GUPnPAcl*"/>
          </instance-parameter>
          <parameter name="device"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="36">The #GUPnPDevice associated with @path or %NULL if
unknown.</doc>
            <type name="gpointer" c:type="_GUPnPDevice*"/>
          </parameter>
          <parameter name="service"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="38">The #GUPnPService associated with @path or %NULL if
unknown.</doc>
            <type name="gpointer" c:type="_GUPnPService*"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="40">The path being served.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="41">IP address of the peer.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="agent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="42">The User-Agent header of the peer or %NULL if not
unknown.
@returns %TRUE if the peer is allowed, %FALSE otherwise</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_allowed_async"
              c:identifier="gupnp_acl_is_allowed_async"
              version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-acl.c"
             line="68">Optional. Check asynchronously whether an IP address is allowed to access
this resource. Use this function if the process of verifying the access right
is expected to take some time, for example when using D-Bus etc.

If this function is supported, gupnp_acl_can_sync() should return %TRUE.

Use gupnp_acl_is_allowed_finish() to retrieve the result.</doc>
        <source-position filename="libgupnp/gupnp-acl.h" line="90"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="70">a #GUPnPAcl</doc>
            <type name="Acl" c:type="GUPnPAcl*"/>
          </instance-parameter>
          <parameter name="device"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="71">The #GUPnPDevice associated with @path or %NULL if
unknown.</doc>
            <type name="gpointer" c:type="_GUPnPDevice*"/>
          </parameter>
          <parameter name="service"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="73">The #GUPnPService associated with @path or %NULL if
unknown.</doc>
            <type name="gpointer" c:type="_GUPnPService*"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="75">The path being served.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="76">IP address of the peer</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="agent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="77">The User-Agent header of the peer or %NULL if not
unknown.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="79">A #GCancellable which can be used to cancel the
operation.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="7">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="81">Callback to call after the function is done.</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="82">Some user data.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_allowed_finish"
              c:identifier="gupnp_acl_is_allowed_finish"
              version="0.20.11"
              throws="1">
        <source-position filename="libgupnp/gupnp-acl.h" line="101"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="120">An instance of #GUPnPAcl</doc>
            <type name="Acl" c:type="GUPnPAcl*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-acl.c"
                 line="121">%GAsyncResult obtained from the callback in gupnp_acl_is_allowed_async()</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="AclInterface"
            c:type="GUPnPAclInterface"
            glib:is-gtype-struct-for="Acl"
            version="0.20.11">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-acl.h"
           line="28">Implement a simple access control list for GUPnP.</doc>
      <source-position filename="libgupnp/gupnp-acl.h" line="79"/>
      <field name="parent">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-acl.h"
             line="30">The parent interface.</doc>
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="is_allowed">
        <callback name="is_allowed">
          <source-position filename="libgupnp/gupnp-acl.h" line="49"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="35">an instance of #GUPnPAcl</doc>
              <type name="Acl" c:type="GUPnPAcl*"/>
            </parameter>
            <parameter name="device"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="36">The #GUPnPDevice associated with @path or %NULL if
unknown.</doc>
              <type name="gpointer" c:type="_GUPnPDevice*"/>
            </parameter>
            <parameter name="service"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="38">The #GUPnPService associated with @path or %NULL if
unknown.</doc>
              <type name="gpointer" c:type="_GUPnPService*"/>
            </parameter>
            <parameter name="path" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="40">The path being served.</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="address" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="41">IP address of the peer.</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="agent"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="42">The User-Agent header of the peer or %NULL if not
unknown.
@returns %TRUE if the peer is allowed, %FALSE otherwise</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_allowed_async">
        <callback name="is_allowed_async">
          <source-position filename="libgupnp/gupnp-acl.h" line="56"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="70">a #GUPnPAcl</doc>
              <type name="Acl" c:type="GUPnPAcl*"/>
            </parameter>
            <parameter name="device"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="71">The #GUPnPDevice associated with @path or %NULL if
unknown.</doc>
              <type name="gpointer" c:type="_GUPnPDevice*"/>
            </parameter>
            <parameter name="service"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="73">The #GUPnPService associated with @path or %NULL if
unknown.</doc>
              <type name="gpointer" c:type="_GUPnPService*"/>
            </parameter>
            <parameter name="path" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="75">The path being served.</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="address" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="76">IP address of the peer</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="agent"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="77">The User-Agent header of the peer or %NULL if not
unknown.</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="79">A #GCancellable which can be used to cancel the
operation.</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="8">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="81">Callback to call after the function is done.</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="8">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="82">Some user data.</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_allowed_finish">
        <callback name="is_allowed_finish" throws="1">
          <source-position filename="libgupnp/gupnp-acl.h" line="66"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="120">An instance of #GUPnPAcl</doc>
              <type name="Acl" c:type="GUPnPAcl*"/>
            </parameter>
            <parameter name="res" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="121">%GAsyncResult obtained from the callback in gupnp_acl_is_allowed_async()</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="can_sync">
        <callback name="can_sync">
          <source-position filename="libgupnp/gupnp-acl.h" line="70"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="libgupnp/gupnp-acl.c"
                   line="142">A #GUPnPAcl
@returns %TRUE, if gupnp_acl_is_allowed_async() is supported, %FALSE
otherwise.</doc>
              <type name="Acl" c:type="GUPnPAcl*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-acl.h" line="75"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-acl.h" line="76"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-acl.h" line="77"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-acl.h" line="78"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <glib:boxed glib:name="BinBase64"
                c:symbol-prefix="bin_base64"
                glib:type-name="GUPnPBinBase64"
                glib:get-type="gupnp_bin_base64_get_type">
    </glib:boxed>
    <glib:boxed glib:name="BinHex"
                c:symbol-prefix="bin_hex"
                glib:type-name="GUPnPBinHex"
                glib:get-type="gupnp_bin_hex_get_type">
    </glib:boxed>
    <class name="Context"
           c:symbol-prefix="context"
           c:type="GUPnPContext"
           parent="GSSDP.Client"
           glib:type-name="GUPnPContext"
           glib:get-type="gupnp_context_get_type"
           glib:type-struct="ContextClass">
      <source-position filename="libgupnp/gupnp-context.h" line="33"/>
      <implements name="Gio.Initable"/>
      <constructor name="new" c:identifier="gupnp_context_new" throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="655">Create a new #GUPnPContext with the specified @main_context, @iface and
@port.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="36"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context.c"
               line="665">A new #GUPnPContext object, or %NULL on an error</doc>
          <type name="Context" c:type="GUPnPContext*"/>
        </return-value>
        <parameters>
          <parameter name="iface"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="657">The network interface to use, or %NULL to
auto-detect.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="659">Port to run on, or 0 if you don't care what port is used.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_server_handler"
              c:identifier="gupnp_context_add_server_handler"
              version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="1519">Add a #SoupServerCallback to the #GUPnPContext&lt;!-- --&gt;'s #SoupServer.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="86"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1521">a #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
          <parameter name="use_acl" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1522">%TRUE, if the path should query the GUPnPContext::acl before
serving the resource, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1524">the toplevel path for the handler.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="3"
                     destroy="4">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1525">callback to invoke for requests under @path</doc>
            <type name="Soup.ServerCallback" c:type="SoupServerCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1526">the user_data passed to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1527">A #GDestroyNotify for @user_data or %NULL if none.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_acl"
              c:identifier="gupnp_context_get_acl"
              glib:get-property="acl"
              version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="1375">Access the #GUPnPAcl associated with this client. If there isn't any,
retturns %NULL. The returned ACL must not be freed.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context.c"
               line="1382">The access control list associated with this context or %NULL
if no acl is set.</doc>
          <type name="Acl" c:type="GUPnPAcl*"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1377">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_default_language"
              c:identifier="gupnp_context_get_default_language"
              glib:get-property="default-language"
              version="0.18.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="799">Get the default Content-Language header for this context.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context.c"
               line="805">The default content of the Content-Language
header.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="801">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_port"
              c:identifier="gupnp_context_get_port"
              glib:get-property="port">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="680">Get the port that the SOAP server is running on.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="41"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context.c"
               line="686">The port the SOAP server is running on.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="682">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_server"
              c:identifier="gupnp_context_get_server"
              glib:get-property="server">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="562">Get the #SoupServer HTTP server that GUPnP is using.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="44"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context.c"
               line="568">The #SoupServer used by GUPnP. Do not unref this when finished.</doc>
          <type name="Soup.Server" c:type="SoupServer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="564">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_session"
              c:identifier="gupnp_context_get_session"
              glib:get-property="session"
              version="0.12.3">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="525">Get the #SoupSession object that GUPnP is using.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="47"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context.c"
               line="531">The #SoupSession used by GUPnP. Do not unref
this when finished.</doc>
          <type name="Soup.Session" c:type="SoupSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="527">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subscription_timeout"
              c:identifier="gupnp_context_get_subscription_timeout"
              glib:get-property="subscription-timeout">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="725">Get the event subscription timeout (in seconds), or 0 meaning there is no
timeout.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context.c"
               line="732">The event subscription timeout in seconds.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="727">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="host_path" c:identifier="gupnp_context_host_path">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="1238">Start hosting @local_path at @server_path. Files with the path
@local_path.LOCALE (if they exist) will be served up when LOCALE is
specified in the request's Accept-Language header.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="64"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1240">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
          <parameter name="local_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1241">Path to the local file or folder to be hosted</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="server_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1242">Web server path where @local_path should be hosted</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="host_path_for_agent"
              c:identifier="gupnp_context_host_path_for_agent"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="1292">Use this method to serve different local path to specific user-agent(s). The
path @server_path must already be hosted by @context.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context.c"
               line="1302">%TRUE on success, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1294">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
          <parameter name="local_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1295">Path to the local file or folder to be hosted</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="server_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1296">Web server path already being hosted</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="user_agent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1297">The user-agent as a #GRegex.</doc>
            <type name="GLib.Regex" c:type="GRegex*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_server_handler"
              c:identifier="gupnp_context_remove_server_handler"
              version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="1579">Remove a #SoupServerCallback from the #GUPnPContext&lt;!-- --&gt;'s #SoupServer.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="94"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1581">a #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1582">the toplevel path for the handler.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="rewrite_uri"
              c:identifier="gupnp_context_rewrite_uri"
              version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="1599">Utility function to re-write an uri to the IPv6 link-local form which has
the zone index appended to the IP address.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="98"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context.c"
               line="1607">A re-written version of the @uri if the context is on a link-local
IPv6 address, a copy of the @uri otherwise or %NULL if @uri was invalid</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1601">a #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1602">an uri to rewrite if necessary</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_acl"
              c:identifier="gupnp_context_set_acl"
              glib:set-property="acl"
              version="0.20.11">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="1398">Attach or remove the assoicated access control list to this context. If
@acl is %NULL, the current access control list will be removed.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1400">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
          <parameter name="acl"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1401">The new access control list or %NULL to remove the
current list.</doc>
            <type name="Acl" c:type="GUPnPAcl*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default_language"
              c:identifier="gupnp_context_set_default_language"
              glib:set-property="default-language"
              version="0.18.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="759">Set the default language for the Content-Language header to @language.

If the client sends an Accept-Language header the UPnP HTTP server
is required to send a Content-Language header in return. If there are
no files hosted in languages which match the requested ones the
Content-Language header is set to this value. The default value is "en".</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="57"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="761">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
          <parameter name="language" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="762">A language tag as defined in RFC 2616 3.10</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_subscription_timeout"
              c:identifier="gupnp_context_set_subscription_timeout">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="702">Sets the event subscription timeout to @timeout. Use 0 if you don't
want subscriptions to time out. Note that any client side subscriptions
will automatically be renewed.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="50"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="704">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
          <parameter name="timeout" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="705">Event subscription timeout in seconds</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="unhost_path" c:identifier="gupnp_context_unhost_path">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="1339">Stop hosting the file or folder at @server_path.</doc>
        <source-position filename="libgupnp/gupnp-context.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1341">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </instance-parameter>
          <parameter name="server_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context.c"
                 line="1342">Web server path where the file or folder is hosted</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <property name="acl"
                version="0.20.11"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_acl"
                getter="get_acl">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="506">An access control list.</doc>
        <type name="Acl"/>
      </property>
      <property name="default-language"
                version="0.18.0"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_default_language"
                getter="get_default_language">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="484">The content of the Content-Language header id the client
sends Accept-Language and no language-specific pages to serve
exist. The property defaults to 'en'.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="port"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_port">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="411">The port to run on. Set to 0 if you don't care what port to run on.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="server" transfer-ownership="none" getter="get_server">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="429">The #SoupServer HTTP server used by GUPnP.</doc>
        <type name="Soup.Server"/>
      </property>
      <property name="session" transfer-ownership="none" getter="get_session">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="446">The #SoupSession object used by GUPnP.</doc>
        <type name="Soup.Session"/>
      </property>
      <property name="subscription-timeout"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_subscription_timeout">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context.c"
             line="463">The preferred subscription timeout: the number of seconds after
which subscriptions are renewed. Set to '0' if subscriptions
are never to time out.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent_instance">
        <type name="GSSDP.Client" c:type="GSSDPClient"/>
      </field>
    </class>
    <record name="ContextClass"
            c:type="GUPnPContextClass"
            glib:is-gtype-struct-for="Context">
      <source-position filename="libgupnp/gupnp-context.h" line="33"/>
      <field name="parent_class">
        <type name="GSSDP.ClientClass" c:type="GSSDPClientClass"/>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-context.h" line="29"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-context.h" line="30"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-context.h" line="31"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-context.h" line="32"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="ContextFilter"
           c:symbol-prefix="context_filter"
           c:type="GUPnPContextFilter"
           version="1.4.0"
           parent="GObject.Object"
           glib:type-name="GUPnPContextFilter"
           glib:get-type="gupnp_context_filter_get_type"
           glib:type-struct="ContextFilterClass">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-context-filter.c"
           line="31">Class for network context filtering.

#GUPnPContextFilter handles network filtering. It provides API to manage a
list of entries that will be used to filter networks. The #GUPnPContextFilter
could be enabled or not. If it's enabled but the entries list is empty, it
behaves as disabled.</doc>
      <source-position filename="libgupnp/gupnp-context-filter.h" line="28"/>
      <method name="add_entry"
              c:identifier="gupnp_context_filter_add_entry"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="261">Add @entry in the list of valid criteria used by @context_filter to
filter networks.
if @entry already exists, it won't be added a second time.</doc>
        <source-position filename="libgupnp/gupnp-context-filter.h" line="41"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-filter.c"
               line="270">%TRUE if @entry is added, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context_filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="263">A #GUPnPContextFilter</doc>
            <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
          </instance-parameter>
          <parameter name="entry" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="264">A value used to filter network</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_entryv"
              c:identifier="gupnp_context_filter_add_entryv"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="294">Add a list of entries to a #GUPnPContextFilter. This is a helper function to
directly add a %NULL-terminated array of string usually aquired from
commandline args.</doc>
        <source-position filename="libgupnp/gupnp-context-filter.h" line="44"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context_filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="296">A #GUPnPContextFilter</doc>
            <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
          </instance-parameter>
          <parameter name="entries" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="297">A %NULL-terminated list of strings</doc>
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="check_context"
              c:identifier="gupnp_context_filter_check_context"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="397">It will check if the @context is allowed or not. The @context_filter will
check all its entries againt #GUPnPContext interface, host ip and network
fields information. This function doesn't take into account the
@context_filter status (enabled or not).</doc>
        <source-position filename="libgupnp/gupnp-context-filter.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-filter.c"
               line="407">%TRUE if @context is matching the @context_filter criterias,
%FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context_filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="399">A #GUPnPContextFilter</doc>
            <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="400">A #GUPnPContext to test.</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear"
              c:identifier="gupnp_context_filter_clear"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="374">Remove all entries from #GList that compose the context filter.
The list is now empty. Even if #GUPnPContextFilter is enabled, it will have
the same behavior as if it was disabled.</doc>
        <source-position filename="libgupnp/gupnp-context-filter.h" line="55"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context_filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="376">A #GUPnPContextFilter</doc>
            <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_enabled"
              c:identifier="gupnp_context_filter_get_enabled"
              glib:get-property="enabled"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="217">Return the status of the #GUPnPContextFilter</doc>
        <source-position filename="libgupnp/gupnp-context-filter.h" line="35"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-filter.c"
               line="223">%TRUE if @context_filter is enabled, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context_filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="219">A #GUPnPContextFilter</doc>
            <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_entries"
              c:identifier="gupnp_context_filter_get_entries"
              glib:get-property="entries"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="350">Get the #GList of entries that compose the context filter. Do not free</doc>
        <source-position filename="libgupnp/gupnp-context-filter.h" line="52"/>
        <return-value transfer-ownership="container" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-filter.c"
               line="356">a #GList of entries
used to filter networks, interfaces,... or %NULL.
Do not modify or free the list nor its elements.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="context_filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="352">A #GUPnPContextFilter</doc>
            <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_empty"
              c:identifier="gupnp_context_filter_is_empty"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="239">Return the state of the entries list of #GUPnPContextFilter</doc>
        <source-position filename="libgupnp/gupnp-context-filter.h" line="38"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-filter.c"
               line="245">%TRUE if @context_filter is empty, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context_filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="241">A #GUPnPContextFilter</doc>
            <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_entry"
              c:identifier="gupnp_context_filter_remove_entry"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="318">Remove @entry in the list of valid criteria used by @context_filter to
filter networks.</doc>
        <source-position filename="libgupnp/gupnp-context-filter.h" line="48"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-filter.c"
               line="326">%TRUE if @entry is removed, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="context_filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="320">A #GUPnPContextFilter</doc>
            <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
          </instance-parameter>
          <parameter name="entry" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="321">A value to remove from the filter list.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_enabled"
              c:identifier="gupnp_context_filter_set_enabled"
              glib:set-property="enabled"
              version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="195">Enable or disable the #GUPnPContextFilter to perform the network filtering.</doc>
        <source-position filename="libgupnp/gupnp-context-filter.h" line="31"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="context_filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="197">A #GUPnPContextFilter</doc>
            <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
          </instance-parameter>
          <parameter name="enable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-filter.c"
                 line="198">%TRUE to enable @context_filter, %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="enabled"
                version="1.4.0"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_enabled"
                getter="get_enabled">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="144">Whether this context filter is active or not.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="entries"
                version="1.4.0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_entries">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-filter.c"
             line="161">A list of items to filter for.</doc>
        <type name="GLib.List" c:type="gpointer">
          <type name="utf8"/>
        </type>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ContextFilterClass"
            c:type="GUPnPContextFilterClass"
            glib:is-gtype-struct-for="ContextFilter">
      <source-position filename="libgupnp/gupnp-context-filter.h" line="28"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="ContextManager"
           c:symbol-prefix="context_manager"
           c:type="GUPnPContextManager"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="GUPnPContextManager"
           glib:get-type="gupnp_context_manager_get_type"
           glib:type-struct="ContextManagerClass">
      <source-position filename="libgupnp/gupnp-context-manager.h" line="40"/>
      <function name="create"
                c:identifier="gupnp_context_manager_create"
                version="0.18.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="605">Factory-method to create a new #GUPnPContextManager. The final type of the
#GUPnPContextManager depends on the compile-time selection or - in case of
NetworkManager - on its availability during runtime. If it is not available,
the implementation falls back to the basic Unix context manager instead.

Equivalent to calling #gupnp_context_manager_create_full (%GSSDP_UDA_VERSION_1_0, %G_SOCKET_FAMILY_IPV4, port);</doc>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="43"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-manager.c"
               line="616">A new #GUPnPContextManager object.</doc>
          <type name="ContextManager" c:type="GUPnPContextManager*"/>
        </return-value>
        <parameters>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="607">Port to create contexts for, or 0 if you don't care what port is used.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </function>
      <function name="create_full"
                c:identifier="gupnp_context_manager_create_full"
                version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="628">Factory-method to create a new #GUPnPContextManager. The final type of the
#GUPnPContextManager depends on the compile-time selection or - in case of
NetworkManager - on its availability during runtime. If it is not available,
the implementation falls back to the basic Unix context manager instead.</doc>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="46"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-manager.c"
               line="640">A new #GUPnPContextManager object.</doc>
          <type name="ContextManager" c:type="GUPnPContextManager*"/>
        </return-value>
        <parameters>
          <parameter name="uda_version" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="630">#GSSDPUDAVersion the created contexts should implement
(UDA 1.0 or 1.1). For %GSSDP_UDA_VERSION_UNSPECIFIED for default.</doc>
            <type name="GSSDP.UDAVersion" c:type="GSSDPUDAVersion"/>
          </parameter>
          <parameter name="family" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="632">#GSocketFamily to create the context for</doc>
            <type name="Gio.SocketFamily" c:type="GSocketFamily"/>
          </parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="633">Port to create contexts for, or 0 if you don't care what port is used.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_context_filter"
              c:identifier="gupnp_context_manager_get_context_filter"
              glib:get-property="context-filter">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="812">Get the #GUPnPContextFilter associated with @manager.</doc>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-manager.c"
               line="818">The #GUPnPContextFilter asssociated with this
context manager.</doc>
          <type name="ContextFilter" c:type="GUPnPContextFilter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="814">A #GUPnPContextManager</doc>
            <type name="ContextManager" c:type="GUPnPContextManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_port"
              c:identifier="gupnp_context_manager_get_port"
              glib:get-property="port"
              version="0.20.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="791">Get the network port associated with this context manager.</doc>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-manager.c"
               line="796">The network port asssociated with this context manager.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="793">A #GUPnPContextManager</doc>
            <type name="ContextManager" c:type="GUPnPContextManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_socket_family"
              c:identifier="gupnp_context_manager_get_socket_family"
              version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="849">Get the #GSocketFamily the contexts are created for. Can be
%G_SOCKET_FAMILY_IPV6, %G_SOCKET_FAMILY_IPV4 or %G_SOCKET_FAMILY_INVALID for
both</doc>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-manager.c"
               line="857">The socket family</doc>
          <type name="Gio.SocketFamily" c:type="GSocketFamily"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="851">A #GUPnPContextManager</doc>
            <type name="ContextManager" c:type="GUPnPContextManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_uda_version"
              c:identifier="gupnp_context_manager_get_uda_version"
              glib:get-property="uda-version"
              version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="873">Get the UDA protocol version the contexts are implementing</doc>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-manager.c"
               line="879">The UDA protocol version</doc>
          <type name="GSSDP.UDAVersion" c:type="GSSDPUDAVersion"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="875">A #GUPnPContextManager</doc>
            <type name="ContextManager" c:type="GUPnPContextManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_white_list"
              c:identifier="gupnp_context_manager_get_white_list"
              deprecated="1"
              deprecated-version="1.4.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="833">Get the #GUPnPContextFilter associated with @manager.</doc>
        <doc-deprecated xml:space="preserve">Use gupnp_context_manager_get_context_filter() instead.</doc-deprecated>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-context-manager.c"
               line="839">The #GUPnPContextFilter asssociated with this
context manager.</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="835">A #GUPnPContextManager</doc>
            <type name="ContextManager" c:type="GUPnPContextManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="manage_control_point"
              c:identifier="gupnp_context_manager_manage_control_point"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="737">By calling this function, you are asking @manager to keep a reference to
@control_point until its associated #GUPnPContext is no longer available.
You usually want to call this function from
#GUPnPContextManager::context-available handler after you create a
#GUPnPControlPoint object for the newly available context.</doc>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="55"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="739">A #GUPnPContextManager</doc>
            <type name="ContextManager" c:type="GUPnPContextManager*"/>
          </instance-parameter>
          <parameter name="control_point" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="740">The #GUPnPControlPoint to be taken care of</doc>
            <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="manage_root_device"
              c:identifier="gupnp_context_manager_manage_root_device"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="764">By calling this function, you are asking @manager to keep a reference to
@root_device when its associated #GUPnPContext is no longer available. You
usually want to call this function from
#GUPnPContextManager::context-available handler after you create a
#GUPnPRootDevice object for the newly available context.</doc>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="60"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="766">A #GUPnPContextManager</doc>
            <type name="ContextManager" c:type="GUPnPContextManager*"/>
          </instance-parameter>
          <parameter name="root_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="767">The #GUPnPRootDevice to be taken care of</doc>
            <type name="RootDevice" c:type="GUPnPRootDevice*"/>
          </parameter>
        </parameters>
      </method>
      <method name="rescan_control_points"
              c:identifier="gupnp_context_manager_rescan_control_points"
              version="0.20.3">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="704">This function starts a rescan on every control point managed by @manager.
Only the active control points send discovery messages.
This function should be called when servers are suspected to have
disappeared.</doc>
        <source-position filename="libgupnp/gupnp-context-manager.h"
                         line="51"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="706">A #GUPnPContextManager</doc>
            <type name="ContextManager" c:type="GUPnPContextManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="context-filter"
                transfer-ownership="none"
                getter="get_context_filter">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="547">The context filter to use.</doc>
        <type name="ContextFilter"/>
      </property>
      <property name="family"
                version="1.2.0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="506">The socket family to create contexts for. Use %G_SOCKET_FAMILY_INVALID
for any or %G_SOCKET_FAMILY_IPV4 for IPv4 contexts or
%G_SOCKET_FAMILY_IPV6 for IPv6 contexts</doc>
        <type name="Gio.SocketFamily"/>
      </property>
      <property name="port"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_port">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="488">Port the contexts listen on, or 0 if you don't care what
port is used by #GUPnPContext objects created by this object.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="uda-version"
                version="1.2.0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_uda_version">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="527">The UDA version the contexts will support. Use %GSSDP_UDA_VERSION_UNSPECIFIED
for using the default UDA version.</doc>
        <type name="GSSDP.UDAVersion"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="context-available" when="first">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="563">Signals the availability of new #GUPnPContext.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="566">The now available #GUPnPContext</doc>
            <type name="Context"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="context-unavailable" when="first">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-context-manager.c"
             line="581">Signals the unavailability of a #GUPnPContext.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-context-manager.c"
                 line="584">The now unavailable #GUPnPContext</doc>
            <type name="Context"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ContextManagerClass"
            c:type="GUPnPContextManagerClass"
            glib:is-gtype-struct-for="ContextManager">
      <source-position filename="libgupnp/gupnp-context-manager.h" line="40"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-context-manager.h"
                           line="36"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-context-manager.h"
                           line="37"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-context-manager.h"
                           line="38"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-context-manager.h"
                           line="39"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="ControlError"
                 glib:type-name="GUPnPControlError"
                 glib:get-type="gupnp_control_error_get_type"
                 c:type="GUPnPControlError"
                 glib:error-domain="gupnp-control-error">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-error.h"
           line="67">#GError codes used for errors in the #GUPNP_CONTROL_ERROR domain, during
invocation of service actions.</doc>
      <member name="invalid_action"
              value="401"
              c:identifier="GUPNP_CONTROL_ERROR_INVALID_ACTION"
              glib:nick="invalid-action"
              glib:name="GUPNP_CONTROL_ERROR_INVALID_ACTION">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="69">The action name was invalid.</doc>
      </member>
      <member name="invalid_args"
              value="402"
              c:identifier="GUPNP_CONTROL_ERROR_INVALID_ARGS"
              glib:nick="invalid-args"
              glib:name="GUPNP_CONTROL_ERROR_INVALID_ARGS">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="70">The action arguments were invalid.</doc>
      </member>
      <member name="out_of_sync"
              value="403"
              c:identifier="GUPNP_CONTROL_ERROR_OUT_OF_SYNC"
              glib:nick="out-of-sync"
              glib:name="GUPNP_CONTROL_ERROR_OUT_OF_SYNC">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="71">Out of sync (deprecated).</doc>
      </member>
      <member name="action_failed"
              value="501"
              c:identifier="GUPNP_CONTROL_ERROR_ACTION_FAILED"
              glib:nick="action-failed"
              glib:name="GUPNP_CONTROL_ERROR_ACTION_FAILED">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="72">The action failed.</doc>
      </member>
      <function name="quark" c:identifier="gupnp_control_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <class name="ControlPoint"
           c:symbol-prefix="control_point"
           c:type="GUPnPControlPoint"
           parent="GSSDP.ResourceBrowser"
           glib:type-name="GUPnPControlPoint"
           glib:get-type="gupnp_control_point_get_type"
           glib:type-struct="ControlPointClass">
      <source-position filename="libgupnp/gupnp-control-point.h" line="50"/>
      <constructor name="new" c:identifier="gupnp_control_point_new">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1136">Create a new #GUPnPControlPoint with the specified @context and @target.

@target should be a service or device name, such as
&lt;literal&gt;urn:schemas-upnp-org:service:WANIPConnection:1&lt;/literal&gt; or
&lt;literal&gt;urn:schemas-upnp-org:device:MediaRenderer:1&lt;/literal&gt;.</doc>
        <source-position filename="libgupnp/gupnp-control-point.h" line="53"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-control-point.c"
               line="1147">A new #GUPnPControlPoint object.</doc>
          <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1138">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1139">The search target</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_full" c:identifier="gupnp_control_point_new_full">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1162">Create a new #GUPnPControlPoint with the specified @context, @factory and
@target.

@target should be a service or device name, such as
&lt;literal&gt;urn:schemas-upnp-org:service:WANIPConnection:1&lt;/literal&gt; or
&lt;literal&gt;urn:schemas-upnp-org:device:MediaRenderer:1&lt;/literal&gt;.</doc>
        <source-position filename="libgupnp/gupnp-control-point.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-control-point.c"
               line="1175">A new #GUPnPControlPoint object.</doc>
          <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1164">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </parameter>
          <parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1165">A #GUPnPResourceFactory</doc>
            <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
          </parameter>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1166">The search target</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="device_proxy_available">
        <source-position filename="libgupnp/gupnp-control-point.h" line="34"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="control_point" transfer-ownership="none">
            <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
          </instance-parameter>
          <parameter name="proxy" transfer-ownership="none">
            <type name="DeviceProxy" c:type="GUPnPDeviceProxy*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="device_proxy_unavailable">
        <source-position filename="libgupnp/gupnp-control-point.h" line="37"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="control_point" transfer-ownership="none">
            <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
          </instance-parameter>
          <parameter name="proxy" transfer-ownership="none">
            <type name="DeviceProxy" c:type="GUPnPDeviceProxy*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="service_proxy_available">
        <source-position filename="libgupnp/gupnp-control-point.h" line="40"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="control_point" transfer-ownership="none">
            <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
          </instance-parameter>
          <parameter name="proxy" transfer-ownership="none">
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="service_proxy_unavailable">
        <source-position filename="libgupnp/gupnp-control-point.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="control_point" transfer-ownership="none">
            <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
          </instance-parameter>
          <parameter name="proxy" transfer-ownership="none">
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_context"
              c:identifier="gupnp_control_point_get_context"
              deprecated="1"
              deprecated-version="1.4.1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1194">Get the #GUPnPControlPoint associated with @control_point.</doc>
        <doc-deprecated xml:space="preserve">Use gssdp_resource_browser_get_client() instead.</doc-deprecated>
        <source-position filename="libgupnp/gupnp-control-point.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-control-point.c"
               line="1200">The #GUPnPContext.</doc>
          <type name="Context" c:type="GUPnPContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="control_point" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1196">A #GUPnPControlPoint</doc>
            <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_resource_factory"
              c:identifier="gupnp_control_point_get_resource_factory"
              glib:get-property="resource-factory">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1260">Get the #GUPnPResourceFactory used by the @control_point.</doc>
        <source-position filename="libgupnp/gupnp-control-point.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-control-point.c"
               line="1266">A #GUPnPResourceFactory.</doc>
          <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
        </return-value>
        <parameters>
          <instance-parameter name="control_point" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1262">A #GUPnPControlPoint</doc>
            <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_device_proxies"
              c:identifier="gupnp_control_point_list_device_proxies">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1216">Get the #GList of discovered #GUPnPDeviceProxy objects. Do not free the list
nor its elements.</doc>
        <source-position filename="libgupnp/gupnp-control-point.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-control-point.c"
               line="1223">a #GList of
#GUPnPDeviceProxy objects.</doc>
          <type name="GLib.List" c:type="const GList*">
            <type name="DeviceProxy"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="control_point" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1218">A #GUPnPControlPoint</doc>
            <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_service_proxies"
              c:identifier="gupnp_control_point_list_service_proxies">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1238">Get the #GList of discovered #GUPnPServiceProxy objects. Do not free the
list nor its elements.</doc>
        <source-position filename="libgupnp/gupnp-control-point.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-control-point.c"
               line="1245">a #GList
of #GUPnPServiceProxy objects.</doc>
          <type name="GLib.List" c:type="const GList*">
            <type name="ServiceProxy"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="control_point" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1240">A #GUPnPControlPoint</doc>
            <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="resource-factory"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_resource_factory">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1033">The resource factory to use. Set to NULL for default factory.</doc>
        <type name="ResourceFactory"/>
      </property>
      <field name="parent_instance">
        <type name="GSSDP.ResourceBrowser" c:type="GSSDPResourceBrowser"/>
      </field>
      <glib:signal name="device-proxy-available" when="last">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1051">The ::device-proxy-available signal is emitted whenever a new
device has become available.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1054">The now available #GUPnPDeviceProxy</doc>
            <type name="DeviceProxy"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="device-proxy-unavailable" when="last">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1072">The ::device-proxy-unavailable signal is emitted whenever a
device is not available any more.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1075">The now unavailable #GUPnPDeviceProxy</doc>
            <type name="DeviceProxy"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="service-proxy-available" when="last">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1093">The ::service-proxy-available signal is emitted whenever a new
service has become available.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1096">The now available #GUPnPServiceProxy</doc>
            <type name="ServiceProxy"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="service-proxy-unavailable" when="last">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-control-point.c"
             line="1114">The ::service-proxy-unavailable signal is emitted whenever a
service is not available any more.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-control-point.c"
                 line="1117">The now unavailable #GUPnPServiceProxy</doc>
            <type name="ServiceProxy"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ControlPointClass"
            c:type="GUPnPControlPointClass"
            glib:is-gtype-struct-for="ControlPoint">
      <source-position filename="libgupnp/gupnp-control-point.h" line="50"/>
      <field name="parent_class">
        <type name="GSSDP.ResourceBrowserClass"
              c:type="GSSDPResourceBrowserClass"/>
      </field>
      <field name="device_proxy_available">
        <callback name="device_proxy_available">
          <source-position filename="libgupnp/gupnp-control-point.h"
                           line="34"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="control_point" transfer-ownership="none">
              <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
            </parameter>
            <parameter name="proxy" transfer-ownership="none">
              <type name="DeviceProxy" c:type="GUPnPDeviceProxy*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="device_proxy_unavailable">
        <callback name="device_proxy_unavailable">
          <source-position filename="libgupnp/gupnp-control-point.h"
                           line="37"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="control_point" transfer-ownership="none">
              <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
            </parameter>
            <parameter name="proxy" transfer-ownership="none">
              <type name="DeviceProxy" c:type="GUPnPDeviceProxy*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="service_proxy_available">
        <callback name="service_proxy_available">
          <source-position filename="libgupnp/gupnp-control-point.h"
                           line="40"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="control_point" transfer-ownership="none">
              <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
            </parameter>
            <parameter name="proxy" transfer-ownership="none">
              <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="service_proxy_unavailable">
        <callback name="service_proxy_unavailable">
          <source-position filename="libgupnp/gupnp-control-point.h"
                           line="43"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="control_point" transfer-ownership="none">
              <type name="ControlPoint" c:type="GUPnPControlPoint*"/>
            </parameter>
            <parameter name="proxy" transfer-ownership="none">
              <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-control-point.h"
                           line="47"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-control-point.h"
                           line="48"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-control-point.h"
                           line="49"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <glib:boxed glib:name="Date"
                c:symbol-prefix="date"
                glib:type-name="GUPnPDate"
                glib:get-type="gupnp_date_get_type">
    </glib:boxed>
    <glib:boxed glib:name="DateTime"
                c:symbol-prefix="date_time"
                glib:type-name="GUPnPDateTime"
                glib:get-type="gupnp_date_time_get_type">
    </glib:boxed>
    <glib:boxed glib:name="DateTimeTZ"
                c:symbol-prefix="date_time_tz"
                glib:type-name="GUPnPDateTimeTZ"
                glib:get-type="gupnp_date_time_tz_get_type">
    </glib:boxed>
    <class name="Device"
           c:symbol-prefix="device"
           c:type="GUPnPDevice"
           parent="DeviceInfo"
           glib:type-name="GUPnPDevice"
           glib:get-type="gupnp_device_get_type"
           glib:type-struct="DeviceClass">
      <source-position filename="libgupnp/gupnp-device.h" line="32"/>
      <property name="root-device"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device.c"
             line="224">The containing #GUPnPRootDevice, or NULL if this is the root
device.</doc>
        <type name="RootDevice"/>
      </property>
      <field name="parent_instance">
        <type name="DeviceInfo" c:type="GUPnPDeviceInfo"/>
      </field>
    </class>
    <record name="DeviceClass"
            c:type="GUPnPDeviceClass"
            glib:is-gtype-struct-for="Device">
      <source-position filename="libgupnp/gupnp-device.h" line="32"/>
      <field name="parent_class">
        <type name="DeviceInfoClass" c:type="GUPnPDeviceInfoClass"/>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-device.h" line="28"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-device.h" line="29"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-device.h" line="30"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-device.h" line="31"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="DeviceInfo"
           c:symbol-prefix="device_info"
           c:type="GUPnPDeviceInfo"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="GUPnPDeviceInfo"
           glib:get-type="gupnp_device_info_get_type"
           glib:type-struct="DeviceInfoClass">
      <source-position filename="libgupnp/gupnp-device-info.h" line="50"/>
      <virtual-method name="get_element" introspectable="0">
        <source-position filename="libgupnp/gupnp-device-info.h" line="35"/>
        <return-value>
          <type name="libxml2.Node" c:type="xmlNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_context"
              c:identifier="gupnp_device_info_get_context"
              glib:get-property="context">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="367">Get the associated #GUPnPContext.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="373">A #GUPnPContext.</doc>
          <type name="Context" c:type="GUPnPContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="369">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description_value"
              c:identifier="gupnp_device_info_get_description_value"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="1101">This function provides generic access to the contents of arbitrary elements
in the device description file.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="117"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="1109">a newly allocated string or %NULL if the device
              description doesn't contain the given @element</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1103">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1104">Name of the description element to retrieve</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_device" c:identifier="gupnp_device_info_get_device">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="1226">Get the service with type @type directly contained in @info as
a new object implementing #GUPnPDeviceInfo, or %NULL if no such device
was found. The returned object should be unreffed when done.

Note that devices are not cached internally, so that every time you call
this function a new object is created. The application must cache any used
devices if it wishes to keep them around and re-use them.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="126"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="1239">A new #GUPnPDeviceInfo.</doc>
          <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1228">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1229">The type of the device to be retrieved.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_device_type"
              c:identifier="gupnp_device_info_get_device_type"
              glib:get-property="device-type">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="452">Get the UPnP device type.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="458">A constant string, or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="454">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_friendly_name"
              c:identifier="gupnp_device_info_get_friendly_name">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="477">Get the friendly name of the device.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="69"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="483">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="479">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_icon_url"
              c:identifier="gupnp_device_info_get_icon_url">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="734">Get an URL pointing to the icon most closely matching the
given criteria, or %NULL. If @requested_mime_type is set, only icons with
this mime type will be returned. If @requested_depth is set, only icons with
this or lower depth will be returned. If @requested_width and/or
@requested_height are set, only icons that are this size or smaller are
returned, unless @prefer_bigger is set, in which case the next biggest icon
will be returned. The returned strings should be freed.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="96"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="762">a string, or %NULL.  g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="736">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
          <parameter name="requested_mime_type"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="737">The requested file
format, or %NULL for any</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="requested_depth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="739">The requested color depth, or -1 for any</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="requested_width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="740">The requested width, or -1 for any</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="requested_height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="741">The requested height, or -1 for any</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="prefer_bigger" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="742">%TRUE if a bigger, rather than a smaller icon should be
returned if no exact match could be found</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="mime_type"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="744">The location where to store the the format
of the returned icon, or %NULL. The returned string should be freed after
use</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="depth"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="747">The location where to store the depth of the
returned icon, or %NULL</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="width"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="749">The location where to store the width of the
returned icon, or %NULL</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="height"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="751">The location where to store the height of the
returned icon, or %NULL</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_location"
              c:identifier="gupnp_device_info_get_location"
              glib:get-property="location">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="387">Get the location of the device description file.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="393">A constant string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="389">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_manufacturer"
              c:identifier="gupnp_device_info_get_manufacturer">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="498">Get the manufacturer of the device.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="72"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="504">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="500">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_manufacturer_url"
              c:identifier="gupnp_device_info_get_manufacturer_url">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="519">Get an URL pointing to the manufacturer's website.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="75"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="525">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="521">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_model_description"
              c:identifier="gupnp_device_info_get_model_description">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="541">Get the description of the device model.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="78"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="547">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="543">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_model_name"
              c:identifier="gupnp_device_info_get_model_name">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="562">Get the model name of the device.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="81"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="568">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="564">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_model_number"
              c:identifier="gupnp_device_info_get_model_number">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="583">Get the model number of the device.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="84"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="589">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="585">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_model_url"
              c:identifier="gupnp_device_info_get_model_url">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="604">Get an URL pointing to the device model's website.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="87"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="610">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="606">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_presentation_url"
              c:identifier="gupnp_device_info_get_presentation_url">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="668">Get an URL pointing to the device's presentation page, for web-based
administration.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="108"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="675">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="670">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_resource_factory"
              c:identifier="gupnp_device_info_get_resource_factory"
              glib:get-property="resource-factory">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="347">Get the #GUPnPResourceFactory used by the @device_info.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="353">A #GUPnPResourceFactory.</doc>
          <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
        </return-value>
        <parameters>
          <instance-parameter name="device_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="349">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_serial_number"
              c:identifier="gupnp_device_info_get_serial_number">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="626">Get the serial number of the device.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="90"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="632">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="628">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_service" c:identifier="gupnp_device_info_get_service">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="1389">Get the service with type @type directly contained in @info as a new object
implementing #GUPnPServiceInfo, or %NULL if no such device was found. The
returned object should be unreffed when done.

Note that services are not cached internally, so that every time you call
this function a new object is created. The application must cache any used
services if it wishes to keep them around and re-use them.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="136"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="1402">A #GUPnPServiceInfo.</doc>
          <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1391">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1392">The type of the service to be retrieved.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_udn"
              c:identifier="gupnp_device_info_get_udn"
              glib:get-property="udn">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="427">Get the Unique Device Name of the device.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="433">A constant string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="429">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_upc" c:identifier="gupnp_device_info_get_upc">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="647">Get the Universal Product Code of the device.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="93"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="653">A string, or %NULL. g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="649">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_url_base"
              c:identifier="gupnp_device_info_get_url_base"
              glib:get-property="url-base">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="407">Get the URL base of this device.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="413">A #SoupURI.</doc>
          <type name="Soup.URI" c:type="const SoupURI*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="409">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_device_types"
              c:identifier="gupnp_device_info_list_device_types">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="1181">Get a #GList of strings representing the types of the devices
directly contained in @info.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="123"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="1188">A #GList of strings. The
elements should be g_free()'d and the list should be g_list_free()'d.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1183">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_devices"
              c:identifier="gupnp_device_info_list_devices">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="1129">Get a #GList of new objects implementing #GUPnPDeviceInfo
representing the devices directly contained in @info. The returned list
should be g_list_free()'d and the elements should be g_object_unref()'d.

Note that devices are not cached internally, so that every time you
call this function new objects are created. The application
must cache any used devices if it wishes to keep them around and re-use
them.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="120"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="1142">a #GList of
new #GUPnPDeviceInfo objects.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="DeviceInfo"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1131">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_dlna_capabilities"
              c:identifier="gupnp_device_info_list_dlna_capabilities"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="1042">Get a #GList of strings that represent the device capabilities as announced
in the device description file using the &amp;lt;dlna:X_DLNACAP&amp;gt; element.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="114"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="1049">a #GList of newly allocated strings or
%NULL if the device description doesn't contain the &amp;lt;dlna:X_DLNACAP&amp;gt;
element.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1044">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_dlna_device_class_identifier"
              c:identifier="gupnp_device_info_list_dlna_device_class_identifier"
              version="0.20.4">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="995">Get a #GList of strings that represent the device class and version as
announced in the device description file using the &amp;lt;dlna:X_DLNADOC&amp;gt;
element.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="111"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="1002">a #GList of newly allocated strings or
%NULL if the device description doesn't contain the &amp;lt;dlna:X_DLNADOC&amp;gt;
element.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="997">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_service_types"
              c:identifier="gupnp_device_info_list_service_types">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="1344">Get a #GList of strings representing the types of the services
directly contained in @info.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="133"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="1351">A #GList of strings. The
elements should be g_free()'d and the list should be g_list_free()'d.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1346">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_services"
              c:identifier="gupnp_device_info_list_services">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="1293">Get a #GList of new objects implementing #GUPnPServiceInfo representing the
services directly contained in @info. The returned list should be
g_list_free()'d and the elements should be g_object_unref()'d.

Note that services are not cached internally, so that every time you call
function new objects are created. The application must cache any used
services if it wishes to keep them around and re-use them.</doc>
        <source-position filename="libgupnp/gupnp-device-info.h" line="130"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-device-info.c"
               line="1305">A #GList of
new #GUPnPServiceInfo objects.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="ServiceInfo"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-device-info.c"
                 line="1295">A #GUPnPDeviceInfo</doc>
            <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="context"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_context">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="215">The #GUPnPContext to use.</doc>
        <type name="Context"/>
      </property>
      <property name="device-type"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_device_type">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="270">The device type.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="document"
                stability="Private"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="306">Private property.</doc>
        <type name="XMLDoc"/>
      </property>
      <property name="element"
                stability="Private"
                readable="0"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="326">Private property.</doc>
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="location"
                writable="1"
                construct="1"
                transfer-ownership="none"
                getter="get_location">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="233">The location of the device description file.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="resource-factory"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_resource_factory">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="197">The resource factory to use. Set to NULL for default factory.</doc>
        <type name="ResourceFactory"/>
      </property>
      <property name="udn"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_udn">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="252">The UDN of this device.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="url-base"
                writable="1"
                construct="1"
                transfer-ownership="none"
                getter="get_url_base">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-device-info.c"
             line="288">The URL base (#SoupURI).</doc>
        <type name="Soup.URI"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="DeviceInfoClass"
            c:type="GUPnPDeviceInfoClass"
            glib:is-gtype-struct-for="DeviceInfo">
      <source-position filename="libgupnp/gupnp-device-info.h" line="50"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_element" introspectable="0">
        <callback name="get_element" introspectable="0">
          <source-position filename="libgupnp/gupnp-device-info.h" line="35"/>
          <return-value>
            <type name="libxml2.Node" c:type="xmlNode*"/>
          </return-value>
          <parameters>
            <parameter name="info" transfer-ownership="none">
              <type name="DeviceInfo" c:type="GUPnPDeviceInfo*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-device-info.h" line="46"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-device-info.h" line="47"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-device-info.h" line="48"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-device-info.h" line="49"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="DeviceProxy"
           c:symbol-prefix="device_proxy"
           c:type="GUPnPDeviceProxy"
           parent="DeviceInfo"
           glib:type-name="GUPnPDeviceProxy"
           glib:get-type="gupnp_device_proxy_get_type"
           glib:type-struct="DeviceProxyClass">
      <source-position filename="libgupnp/gupnp-device-proxy.h" line="33"/>
      <field name="parent_instance">
        <type name="DeviceInfo" c:type="GUPnPDeviceInfo"/>
      </field>
    </class>
    <record name="DeviceProxyClass"
            c:type="GUPnPDeviceProxyClass"
            glib:is-gtype-struct-for="DeviceProxy">
      <source-position filename="libgupnp/gupnp-device-proxy.h" line="33"/>
      <field name="parent_class">
        <type name="DeviceInfoClass" c:type="GUPnPDeviceInfoClass"/>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-device-proxy.h" line="29"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-device-proxy.h" line="30"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-device-proxy.h" line="31"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-device-proxy.h" line="32"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="EventingError"
                 glib:type-name="GUPnPEventingError"
                 glib:get-type="gupnp_eventing_error_get_type"
                 c:type="GUPnPEventingError"
                 glib:error-domain="gupnp-eventing-error">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-error.h"
           line="47">#GError codes used for errors in the #GUPNP_EVENTING_ERROR domain, during
eventing of state variables.</doc>
      <member name="subscription_failed"
              value="0"
              c:identifier="GUPNP_EVENTING_ERROR_SUBSCRIPTION_FAILED"
              glib:nick="subscription-failed"
              glib:name="GUPNP_EVENTING_ERROR_SUBSCRIPTION_FAILED">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="49">The subscription attempt failed.</doc>
      </member>
      <member name="subscription_lost"
              value="1"
              c:identifier="GUPNP_EVENTING_ERROR_SUBSCRIPTION_LOST"
              glib:nick="subscription-lost"
              glib:name="GUPNP_EVENTING_ERROR_SUBSCRIPTION_LOST">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="50">The subscription was lost.</doc>
      </member>
      <member name="notify_failed"
              value="2"
              c:identifier="GUPNP_EVENTING_ERROR_NOTIFY_FAILED"
              glib:nick="notify-failed"
              glib:name="GUPNP_EVENTING_ERROR_NOTIFY_FAILED">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="51">The notification failed.</doc>
      </member>
      <function name="quark" c:identifier="gupnp_eventing_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <class name="ResourceFactory"
           c:symbol-prefix="resource_factory"
           c:type="GUPnPResourceFactory"
           parent="GObject.Object"
           glib:type-name="GUPnPResourceFactory"
           glib:get-type="gupnp_resource_factory_get_type"
           glib:type-struct="ResourceFactoryClass">
      <source-position filename="libgupnp/gupnp-resource-factory.h" line="34"/>
      <constructor name="new" c:identifier="gupnp_resource_factory_new">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-resource-factory.c"
             line="93">Create a new #GUPnPResourceFactory object.</doc>
        <source-position filename="libgupnp/gupnp-resource-factory.h"
                         line="37"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-resource-factory.c"
               line="98">A #GUPnPResourceFactory object.</doc>
          <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
        </return-value>
      </constructor>
      <function name="get_default"
                c:identifier="gupnp_resource_factory_get_default">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-resource-factory.c"
             line="106">Get the default singleton #GUPnPResourceFactory object.</doc>
        <source-position filename="libgupnp/gupnp-resource-factory.h"
                         line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-resource-factory.c"
               line="111">A @GUPnPResourceFactory object.</doc>
          <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
        </return-value>
      </function>
      <method name="register_resource_proxy_type"
              c:identifier="gupnp_resource_factory_register_resource_proxy_type">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-resource-factory.c"
             line="487">Registers the GType @type for the proxy of resource of UPnP type @upnp_type.
After this call, the factory @factory will create object of GType @type each
time it is asked to create a resource proxy object for UPnP type @upnp_type.

Note: GType @type must be a derived type of #GUPNP_TYPE_DEVICE_PROXY if
resource is a device or #GUPNP_TYPE_SERVICE_PROXY if its a service.</doc>
        <source-position filename="libgupnp/gupnp-resource-factory.h"
                         line="54"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="489">A #GUPnPResourceFactory.</doc>
            <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
          </instance-parameter>
          <parameter name="upnp_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="490">The UPnP type name of the resource.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="491">The requested GType assignment for the resource proxy.</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="register_resource_type"
              c:identifier="gupnp_resource_factory_register_resource_type">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-resource-factory.c"
             line="432">Registers the GType @type for the resource of UPnP type @upnp_type. After
this call, the factory @factory will create object of GType @type each time
it is asked to create a resource object for UPnP type @upnp_type.

You can either register a type for a concrete version of a device or service
such as urn:schemas-upnp-org:service:AVTransport:2 or version-independently,
urn:schemas-upnp-org:service:AVTransport. If you register for an explicit
version of a service, it will be an exact match.

Note: GType @type must be a derived type of #GUPNP_TYPE_DEVICE if resource is
a device or #GUPNP_TYPE_SERVICE if its a service.</doc>
        <source-position filename="libgupnp/gupnp-resource-factory.h"
                         line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="434">A #GUPnPResourceFactory.</doc>
            <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
          </instance-parameter>
          <parameter name="upnp_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="435">The UPnP type name of the resource.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="436">The requested GType assignment for the resource.</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="unregister_resource_proxy_type"
              c:identifier="gupnp_resource_factory_unregister_resource_proxy_type">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-resource-factory.c"
             line="515">Unregisters the GType assignment for the proxy of resource of UPnP type
@upnp_type.</doc>
        <source-position filename="libgupnp/gupnp-resource-factory.h"
                         line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-resource-factory.c"
               line="523">%TRUE if GType assignment was removed successfully, %FALSE
otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="517">A #GUPnPResourceFactory.</doc>
            <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
          </instance-parameter>
          <parameter name="upnp_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="518">The UPnP type name of the resource.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unregister_resource_type"
              c:identifier="gupnp_resource_factory_unregister_resource_type">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-resource-factory.c"
             line="464">Unregisters the GType assignment for the resource of UPnP type @upnp_type.</doc>
        <source-position filename="libgupnp/gupnp-resource-factory.h"
                         line="49"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-resource-factory.c"
               line="471">%TRUE if GType assignment was removed successfully, %FALSE
otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="466">A #GUPnPResourceFactory.</doc>
            <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
          </instance-parameter>
          <parameter name="upnp_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-resource-factory.c"
                 line="467">The UPnP type name of the resource.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ResourceFactoryClass"
            c:type="GUPnPResourceFactoryClass"
            glib:is-gtype-struct-for="ResourceFactory">
      <source-position filename="libgupnp/gupnp-resource-factory.h" line="34"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-resource-factory.h"
                           line="30"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-resource-factory.h"
                           line="31"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-resource-factory.h"
                           line="32"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-resource-factory.h"
                           line="33"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="RootDevice"
           c:symbol-prefix="root_device"
           c:type="GUPnPRootDevice"
           parent="Device"
           glib:type-name="GUPnPRootDevice"
           glib:get-type="gupnp_root_device_get_type"
           glib:type-struct="RootDeviceClass">
      <source-position filename="libgupnp/gupnp-root-device.h" line="41"/>
      <implements name="Gio.Initable"/>
      <constructor name="new" c:identifier="gupnp_root_device_new" throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="557">Create a new #GUPnPRootDevice object, automatically loading and parsing
device description document from @description_path.</doc>
        <source-position filename="libgupnp/gupnp-root-device.h" line="44"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-root-device.c"
               line="569">A new @GUPnPRootDevice object.</doc>
          <type name="RootDevice" c:type="GUPnPRootDevice*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="559">The #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </parameter>
          <parameter name="description_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="560">Path to device description document. This could either
be an absolute path or path relative to @description_dir.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="description_dir" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="562">Path to directory where description documents are provided.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_full"
                   c:identifier="gupnp_root_device_new_full"
                   throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="589">Create a new #GUPnPRootDevice, automatically loading and parsing
device description document from @description_path if @description_doc is
%NULL.</doc>
        <source-position filename="libgupnp/gupnp-root-device.h" line="50"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-root-device.c"
               line="604">A new #GUPnPRootDevice object.</doc>
          <type name="RootDevice" c:type="GUPnPRootDevice*"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="591">A #GUPnPContext</doc>
            <type name="Context" c:type="GUPnPContext*"/>
          </parameter>
          <parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="592">A #GUPnPResourceFactory</doc>
            <type name="ResourceFactory" c:type="GUPnPResourceFactory*"/>
          </parameter>
          <parameter name="description_doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="593">Device description document, or %NULL</doc>
            <type name="XMLDoc" c:type="GUPnPXMLDoc*"/>
          </parameter>
          <parameter name="description_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="594">Path to device description document. This could either
be an absolute path or path relative to @description_dir.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="description_dir" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="596">Path to directory where description documents are provided.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_available"
              c:identifier="gupnp_root_device_get_available"
              glib:get-property="available">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="658">Get whether or not @root_device is available (announcing its presence).</doc>
        <source-position filename="libgupnp/gupnp-root-device.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-root-device.c"
               line="664">%TRUE if @root_device is available, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="root_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="660">A #GUPnPRootDevice</doc>
            <type name="RootDevice" c:type="GUPnPRootDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description_dir"
              c:identifier="gupnp_root_device_get_description_dir"
              glib:get-property="description-dir">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="734">Get the path to the directory containing description documents related to
@root_device.</doc>
        <source-position filename="libgupnp/gupnp-root-device.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-root-device.c"
               line="741">The path to description document directory of @root_device.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="root_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="736">A #GUPnPRootDevice</doc>
            <type name="RootDevice" c:type="GUPnPRootDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description_document_name"
              c:identifier="gupnp_root_device_get_description_document_name">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="693">Gets the name of the description document as hosted via HTTP.</doc>
        <source-position filename="libgupnp/gupnp-root-device.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-root-device.c"
               line="699">The relative location of @root_device.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="root_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="695">A #GUPnPRootDevice</doc>
            <type name="RootDevice" c:type="GUPnPRootDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description_path"
              c:identifier="gupnp_root_device_get_description_path"
              glib:get-property="description-path">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="714">Get the path to the device description document of @root_device.</doc>
        <source-position filename="libgupnp/gupnp-root-device.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-root-device.c"
               line="720">The path to device description document of @root_device.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="root_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="716">A #GUPnPRootDevice</doc>
            <type name="RootDevice" c:type="GUPnPRootDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_relative_location"
              c:identifier="gupnp_root_device_get_relative_location"
              deprecated="1"
              deprecated-version="1.4.2">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="678">Get the relative location of @root_device.</doc>
        <doc-deprecated xml:space="preserve">Use gupnp_root_device_get_description_document_name() instead.</doc-deprecated>
        <source-position filename="libgupnp/gupnp-root-device.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-root-device.c"
               line="684">The relative location of @root_device.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="root_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="680">A #GUPnPRootDevice</doc>
            <type name="RootDevice" c:type="GUPnPRootDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ssdp_resource_group"
              c:identifier="gupnp_root_device_get_ssdp_resource_group"
              version="0.20.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="755">Get the #GSSDPResourceGroup used by @root_device.</doc>
        <source-position filename="libgupnp/gupnp-root-device.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-root-device.c"
               line="761">The #GSSDPResourceGroup of @root_device.</doc>
          <type name="GSSDP.ResourceGroup" c:type="GSSDPResourceGroup*"/>
        </return-value>
        <parameters>
          <instance-parameter name="root_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="757">A #GUPnPRootDevice</doc>
            <type name="RootDevice" c:type="GUPnPRootDevice*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_available"
              c:identifier="gupnp_root_device_set_available"
              glib:set-property="available">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="635">Controls whether or not @root_device is available (announcing
its presence).</doc>
        <source-position filename="libgupnp/gupnp-root-device.h" line="58"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="root_device" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="637">A #GUPnPRootDevice</doc>
            <type name="RootDevice" c:type="GUPnPRootDevice*"/>
          </instance-parameter>
          <parameter name="available" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-root-device.c"
                 line="638">%TRUE if @root_device should be available</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="available"
                writable="1"
                transfer-ownership="none"
                setter="set_available"
                getter="get_available">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="539">TRUE if this device is available.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="description-dir"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_description_dir">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="520">The path to directory where description documents are provided.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="description-doc"
                version="0.14.0"
                deprecated="1"
                deprecated-version="1.14.2"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="478">Device description document. Constructor property.</doc>
        <doc-deprecated xml:space="preserve">Use GUPnPDeviceInfo::document instead</doc-deprecated>
        <type name="XMLDoc"/>
      </property>
      <property name="description-path"
                version="0.13.0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_description_path">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-root-device.c"
             line="499">The path to device description document. This could either be an
absolute path or path relative to GUPnPRootDevice:description-dir.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="Device" c:type="GUPnPDevice"/>
      </field>
    </class>
    <record name="RootDeviceClass"
            c:type="GUPnPRootDeviceClass"
            glib:is-gtype-struct-for="RootDevice">
      <source-position filename="libgupnp/gupnp-root-device.h" line="41"/>
      <field name="parent_class">
        <type name="DeviceClass" c:type="GUPnPDeviceClass"/>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-root-device.h" line="37"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-root-device.h" line="38"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-root-device.h" line="39"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-root-device.h" line="40"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="RootdeviceError"
                 glib:type-name="GUPnPRootdeviceError"
                 glib:get-type="gupnp_rootdevice_error_get_type"
                 c:type="GUPnPRootdeviceError"
                 glib:error-domain="gupnp-root-device-error">
      <member name="no_context"
              value="0"
              c:identifier="GUPNP_ROOT_DEVICE_ERROR_NO_CONTEXT"
              glib:nick="no-context"
              glib:name="GUPNP_ROOT_DEVICE_ERROR_NO_CONTEXT">
      </member>
      <member name="no_description_path"
              value="1"
              c:identifier="GUPNP_ROOT_DEVICE_ERROR_NO_DESCRIPTION_PATH"
              glib:nick="no-description-path"
              glib:name="GUPNP_ROOT_DEVICE_ERROR_NO_DESCRIPTION_PATH">
      </member>
      <member name="no_description_folder"
              value="2"
              c:identifier="GUPNP_ROOT_DEVICE_ERROR_NO_DESCRIPTION_FOLDER"
              glib:nick="no-description-folder"
              glib:name="GUPNP_ROOT_DEVICE_ERROR_NO_DESCRIPTION_FOLDER">
      </member>
      <member name="no_network"
              value="3"
              c:identifier="GUPNP_ROOT_DEVICE_ERROR_NO_NETWORK"
              glib:nick="no-network"
              glib:name="GUPNP_ROOT_DEVICE_ERROR_NO_NETWORK">
      </member>
      <member name="fail"
              value="4"
              c:identifier="GUPNP_ROOT_DEVICE_ERROR_FAIL"
              glib:nick="fail"
              glib:name="GUPNP_ROOT_DEVICE_ERROR_FAIL">
      </member>
      <function name="quark" c:identifier="gupnp_rootdevice_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <enumeration name="ServerError"
                 glib:type-name="GUPnPServerError"
                 glib:get-type="gupnp_server_error_get_type"
                 c:type="GUPnPServerError"
                 glib:error-domain="gupnp-server-error">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-error.h"
           line="21">#GError codes used for errors in the #GUPNP_SERVER_ERROR domain, when there
is communication with another server.</doc>
      <member name="internal_server_error"
              value="0"
              c:identifier="GUPNP_SERVER_ERROR_INTERNAL_SERVER_ERROR"
              glib:nick="internal-server-error"
              glib:name="GUPNP_SERVER_ERROR_INTERNAL_SERVER_ERROR">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="23">Internal server error.</doc>
      </member>
      <member name="not_found"
              value="1"
              c:identifier="GUPNP_SERVER_ERROR_NOT_FOUND"
              glib:nick="not-found"
              glib:name="GUPNP_SERVER_ERROR_NOT_FOUND">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="24">The resource was not found.</doc>
      </member>
      <member name="not_implemented"
              value="2"
              c:identifier="GUPNP_SERVER_ERROR_NOT_IMPLEMENTED"
              glib:nick="not-implemented"
              glib:name="GUPNP_SERVER_ERROR_NOT_IMPLEMENTED">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="25">This method is not implemented.</doc>
      </member>
      <member name="invalid_response"
              value="3"
              c:identifier="GUPNP_SERVER_ERROR_INVALID_RESPONSE"
              glib:nick="invalid-response"
              glib:name="GUPNP_SERVER_ERROR_INVALID_RESPONSE">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="26">Invalid response.</doc>
      </member>
      <member name="invalid_url"
              value="4"
              c:identifier="GUPNP_SERVER_ERROR_INVALID_URL"
              glib:nick="invalid-url"
              glib:name="GUPNP_SERVER_ERROR_INVALID_URL">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="27">Invalid URL.</doc>
      </member>
      <member name="other"
              value="5"
              c:identifier="GUPNP_SERVER_ERROR_OTHER"
              glib:nick="other"
              glib:name="GUPNP_SERVER_ERROR_OTHER">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="28">Unknown/unhandled error.</doc>
      </member>
      <function name="quark" c:identifier="gupnp_server_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <class name="Service"
           c:symbol-prefix="service"
           c:type="GUPnPService"
           parent="ServiceInfo"
           glib:type-name="GUPnPService"
           glib:get-type="gupnp_service_get_type"
           glib:type-struct="ServiceClass">
      <source-position filename="libgupnp/gupnp-service.h" line="59"/>
      <virtual-method name="action_invoked">
        <source-position filename="libgupnp/gupnp-service.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="service" transfer-ownership="none">
            <type name="Service" c:type="GUPnPService*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="notify_failed" introspectable="0">
        <source-position filename="libgupnp/gupnp-service.h" line="50"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="service" transfer-ownership="none">
            <type name="Service" c:type="GUPnPService*"/>
          </instance-parameter>
          <parameter name="callback_urls" transfer-ownership="none">
            <type name="GLib.List" c:type="const GList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
          <parameter name="reason" transfer-ownership="none">
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="query_variable">
        <source-position filename="libgupnp/gupnp-service.h" line="46"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="service" transfer-ownership="none">
            <type name="Service" c:type="GUPnPService*"/>
          </instance-parameter>
          <parameter name="variable" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="freeze_notify" c:identifier="gupnp_service_freeze_notify">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="2168">Causes new notifications to be queued up until gupnp_service_thaw_notify()
is called.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="141"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="service" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="2170">A #GUPnPService</doc>
            <type name="Service" c:type="GUPnPService*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="notify"
              c:identifier="gupnp_service_notify"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="1874">Notifies listening clients that the properties listed in @Varargs
have changed to the specified values.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="128"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="service" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="1876">A #GUPnPService</doc>
            <type name="Service" c:type="GUPnPService*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="1877">Tuples of variable name, variable type, and variable value,
terminated with %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="notify_valist"
              c:identifier="gupnp_service_notify_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="1898">See gupnp_service_notify(); this version takes a va_list for
use by language bindings.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="132"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="service" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="1900">A #GUPnPService</doc>
            <type name="Service" c:type="GUPnPService*"/>
          </instance-parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="1901">A va_list of tuples of variable name, variable type, and variable
value, terminated with %NULL.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="notify_value" c:identifier="gupnp_service_notify_value">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="2131">Notifies listening clients that @variable has changed to @value.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="136"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="service" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="2133">A #GUPnPService</doc>
            <type name="Service" c:type="GUPnPService*"/>
          </instance-parameter>
          <parameter name="variable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="2134">The name of the variable to notify</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="2135">The value of the variable</doc>
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="signals_autoconnect"
              c:identifier="gupnp_service_signals_autoconnect"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="2329">A convenience function that attempts to connect all possible
#GUPnPService::action-invoked and #GUPnPService::query-variable signals to
appropriate callbacks for the service @service. It uses service introspection
and #GModule&lt;!-- --&gt;'s introspective features. It is very simillar to
gtk_builder_connect_signals() except that it attempts to guess the names of
the signal handlers on its own.

For this function to do its magic, the application must name the callback
functions for #GUPnPService::action-invoked signals by striping the CamelCase
off the action names and either prepend "on_" or append "_cb" to them. Same
goes for #GUPnPService::query-variable signals, except that "query_" should
be prepended to the variable name. For example, callback function for
&lt;varname&gt;GetSystemUpdateID&lt;/varname&gt; action should be either named as
"get_system_update_id_cb" or "on_get_system_update_id" and callback function
for the query of "SystemUpdateID" state variable should be named
&lt;function&gt;query_system_update_id_cb&lt;/function&gt; or
&lt;function&gt;on_query_system_update_id&lt;/function&gt;.

&lt;note&gt;This function will not work correctly if #GModule is not supported
on the platform or introspection is not available for @service.&lt;/note&gt;

&lt;warning&gt;This function can not and therefore does not guarantee that the
resulting signal connections will be correct as it depends heavily on a
particular naming schemes described above.&lt;/warning&gt;</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="147"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="service" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="2331">A #GUPnPService</doc>
            <type name="Service" c:type="GUPnPService*"/>
          </instance-parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="2332">the data to pass to each of the callbacks</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="thaw_notify" c:identifier="gupnp_service_thaw_notify">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="2187">Sends out any pending notifications, and stops queuing of new ones.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="144"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="service" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="2189">A #GUPnPService</doc>
            <type name="Service" c:type="GUPnPService*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="root-device"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="1787">The containing #GUPnPRootDevice.</doc>
        <type name="RootDevice"/>
      </property>
      <field name="parent_instance">
        <type name="ServiceInfo" c:type="GUPnPServiceInfo"/>
      </field>
      <glib:signal name="action-invoked" when="last" detailed="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="1805">Emitted whenever an action is invoked. Handler should process
@action and must call either gupnp_service_action_return() or
gupnp_service_action_return_error().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="1808">The invoked #GUPnPServiceAction</doc>
            <type name="ServiceAction"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="notify-failed" when="last">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="1851">Emitted whenever notification of a client fails.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="callback_url" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="1854">A #GList of callback URLs</doc>
            <type name="GLib.List" c:type="gpointer">
              <type name="Soup.URI"/>
            </type>
          </parameter>
          <parameter name="reason" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="1855">A pointer to a #GError describing why the notify failed</doc>
            <type name="GLib.Error" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="query-variable" when="last" detailed="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="1827">Emitted whenever @service needs to know the value of @variable.
Handler should fill @value with the value of @variable.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="variable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="1830">The variable that is being queried</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="value"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="1831">The location of the #GValue of the variable</doc>
            <type name="GObject.Value" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ServiceAction"
            c:type="GUPnPServiceAction"
            glib:type-name="GUPnPServiceAction"
            glib:get-type="gupnp_service_action_get_type"
            c:symbol-prefix="service_action">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service.h"
           line="27">Opaque structure for holding in-progress action data.</doc>
      <source-position filename="libgupnp/gupnp-service.h" line="32"/>
      <method name="get"
              c:identifier="gupnp_service_action_get"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="351">Retrieves the specified action arguments.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="69"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="353">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="354">tuples of argument name, argument type, and argument value
location, terminated with %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_argument_count"
              c:identifier="gupnp_service_action_get_argument_count"
              version="0.18.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="529">Get the number of IN arguments from the @action and return it.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service.c"
               line="535">The number of IN arguments from the @action.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="531">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gvalue"
              c:identifier="gupnp_service_action_get_gvalue"
              shadows="get_value"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="499">Retrieves the value of @argument into a GValue of type @type and returns it.
The method exists only and only to satify PyGI, please use
gupnp_service_action_get_value() and ignore this if possible.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="87"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service.c"
               line="509">Value as #GValue associated with @action.
g_value_unset() and g_slice_free() it after usage.</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="501">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="argument" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="502">The name of the argument to retrieve</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="503">The type of argument to retrieve</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_locales"
              c:identifier="gupnp_service_action_get_locales">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="333">Get an ordered (preferred first) #GList of locales preferred by
the client. Free list and elements after use.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service.c"
               line="340">A #GList of #char*
locale names.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="335">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_message"
              c:identifier="gupnp_service_action_get_message"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="804">Get the #SoupMessage associated with @action. Mainly intended for
applications to be able to read HTTP headers received from clients.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="121"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service.c"
               line="811">#SoupMessage associated with @action. Unref
after using it.</doc>
          <type name="Soup.Message" c:type="SoupMessage*"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="806">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="gupnp_service_action_get_name">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="317">Get the name of @action.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service.c"
               line="323">The name of @action</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="319">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_valist"
              c:identifier="gupnp_service_action_get_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="374">See gupnp_service_action_get(); this version takes a va_list for
use by language bindings.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="73"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="376">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="377">va_list of tuples of argument name, argument type, and argument
value location.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_value"
              c:identifier="gupnp_service_action_get_value"
              shadowed-by="get_gvalue"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="462">Retrieves the value of @argument into @value.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="464">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="argument" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="465">The name of the argument to retrieve</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="466">The #GValue to store the value of the argument, initialized
to the correct type.</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_values"
              c:identifier="gupnp_service_action_get_values"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="417">A variant of #gupnp_service_action_get that uses #GList instead of varargs.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="77"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service.c"
               line="425">The values as #GList of
#GValue. g_list_free() the returned list and g_value_unset() and g_slice_free()
each element.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="GObject.Value"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="419">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="arg_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="420">A #GList of argument names as string</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="arg_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="421">A #GList of argument types as #GType</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="GType"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="return"
              c:identifier="gupnp_service_action_return"
              deprecated="1"
              deprecated-version="1.4.2">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="692">Return succesfully.</doc>
        <doc-deprecated xml:space="preserve">Use gupnp_service_action_return_success() instead</doc-deprecated>
        <source-position filename="libgupnp/gupnp-service.h" line="110"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="694">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="return_error"
              c:identifier="gupnp_service_action_return_error">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="721">Return @error_code.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="116"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="723">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="error_code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="724">The error code</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="error_description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="725">The error description, or %NULL if @error_code is
one of #GUPNP_CONTROL_ERROR_INVALID_ACTION,
#GUPNP_CONTROL_ERROR_INVALID_ARGS, #GUPNP_CONTROL_ERROR_OUT_OF_SYNC or
#GUPNP_CONTROL_ERROR_ACTION_FAILED, in which case a description is
provided automatically.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="return_success"
              c:identifier="gupnp_service_action_return_success">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="705">Return succesfully.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="113"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="707">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set"
              c:identifier="gupnp_service_action_set"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="545">Sets the specified action return values.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="92"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="547">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="548">tuples of return value name, return value type, and
actual return value, terminated with %NULL.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="set_valist"
              c:identifier="gupnp_service_action_set_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="568">See gupnp_service_action_set(); this version takes a va_list for
use by language bindings.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="96"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="570">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="571">va_list of tuples of return value name, return value type, and
actual return value.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_value" c:identifier="gupnp_service_action_set_value">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="661">Sets the value of @argument to @value.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="105"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="663">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="argument" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="664">The name of the return value to retrieve</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="665">The #GValue to store the return value</doc>
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_values"
              c:identifier="gupnp_service_action_set_values"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="614">Sets the specified action return values.</doc>
        <source-position filename="libgupnp/gupnp-service.h" line="100"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="616">A #GUPnPServiceAction</doc>
            <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
          </instance-parameter>
          <parameter name="arg_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="617">A #GList of argument names</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="arg_values" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service.c"
                 line="618">The #GList of values (as
#GValue&lt;!-- --&gt;s) that line up with @arg_names.</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="ServiceActionArgDirection"
                 glib:type-name="GUPnPServiceActionArgDirection"
                 glib:get-type="gupnp_service_action_arg_direction_get_type"
                 c:type="GUPnPServiceActionArgDirection">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-introspection.h"
           line="31">Represents the direction of a service state variable.</doc>
      <member name="in"
              value="0"
              c:identifier="GUPNP_SERVICE_ACTION_ARG_DIRECTION_IN"
              glib:nick="in"
              glib:name="GUPNP_SERVICE_ACTION_ARG_DIRECTION_IN">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="33">An "in" variable, to the service.</doc>
      </member>
      <member name="out"
              value="1"
              c:identifier="GUPNP_SERVICE_ACTION_ARG_DIRECTION_OUT"
              glib:nick="out"
              glib:name="GUPNP_SERVICE_ACTION_ARG_DIRECTION_OUT">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="34">An "out" variable, from the service.</doc>
      </member>
    </enumeration>
    <record name="ServiceActionArgInfo"
            c:type="GUPnPServiceActionArgInfo"
            glib:type-name="GUPnPServiceActionArgInfo"
            glib:get-type="gupnp_service_action_arg_info_get_type"
            c:symbol-prefix="service_action_arg_info">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-introspection.h"
           line="44">This structure contains information about the argument of service action.</doc>
      <source-position filename="libgupnp/gupnp-service-introspection.h"
                       line="59"/>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="46">The name of the action argument.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="direction" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="47">The direction of the action argument.</doc>
        <type name="ServiceActionArgDirection"
              c:type="GUPnPServiceActionArgDirection"/>
      </field>
      <field name="related_state_variable" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="48">The name of the state variable associated with this
argument.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="retval" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="50">Whether this argument is the return value of the action.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </record>
    <record name="ServiceActionInfo"
            c:type="GUPnPServiceActionInfo"
            glib:type-name="GUPnPServiceActionInfo"
            glib:get-type="gupnp_service_action_info_get_type"
            c:symbol-prefix="service_action_info">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-introspection.h"
           line="63">This structure contains information about a service action.</doc>
      <source-position filename="libgupnp/gupnp-service-introspection.h"
                       line="74"/>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="65">The name of the action argument.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="arguments" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="66">A GList of all the arguments
(of type #GUPnPServiceActionArgInfo) of this action.</doc>
        <type name="GLib.List">
          <type name="ServiceActionArgInfo"/>
        </type>
      </field>
    </record>
    <record name="ServiceClass"
            c:type="GUPnPServiceClass"
            glib:is-gtype-struct-for="Service">
      <source-position filename="libgupnp/gupnp-service.h" line="59"/>
      <field name="parent_class">
        <type name="ServiceInfoClass" c:type="GUPnPServiceInfoClass"/>
      </field>
      <field name="action_invoked">
        <callback name="action_invoked">
          <source-position filename="libgupnp/gupnp-service.h" line="43"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="service" transfer-ownership="none">
              <type name="Service" c:type="GUPnPService*"/>
            </parameter>
            <parameter name="action" transfer-ownership="none">
              <type name="ServiceAction" c:type="GUPnPServiceAction*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="query_variable">
        <callback name="query_variable">
          <source-position filename="libgupnp/gupnp-service.h" line="46"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="service" transfer-ownership="none">
              <type name="Service" c:type="GUPnPService*"/>
            </parameter>
            <parameter name="variable" transfer-ownership="none">
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <type name="GObject.Value" c:type="GValue*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="notify_failed" introspectable="0">
        <callback name="notify_failed" introspectable="0">
          <source-position filename="libgupnp/gupnp-service.h" line="50"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="service" transfer-ownership="none">
              <type name="Service" c:type="GUPnPService*"/>
            </parameter>
            <parameter name="callback_urls" transfer-ownership="none">
              <type name="GLib.List" c:type="const GList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
            <parameter name="reason" transfer-ownership="none">
              <type name="GLib.Error" c:type="const GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-service.h" line="55"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-service.h" line="56"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-service.h" line="57"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-service.h" line="58"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="ServiceInfo"
           c:symbol-prefix="service_info"
           c:type="GUPnPServiceInfo"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="GUPnPServiceInfo"
           glib:get-type="gupnp_service_info_get_type"
           glib:type-struct="ServiceInfoClass">
      <source-position filename="libgupnp/gupnp-service-info.h" line="37"/>
      <method name="get_context"
              c:identifier="gupnp_service_info_get_context"
              glib:get-property="context">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="381">Get the #GUPnPContext associated with @info.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="55"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="387">A #GUPnPContext.</doc>
          <type name="Context" c:type="GUPnPContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="383">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_control_url"
              c:identifier="gupnp_service_info_get_control_url">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="530">Get the control URL for this service, or %NULL..</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="76"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="536">A string. This string should be freed with g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="532">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_event_subscription_url"
              c:identifier="gupnp_service_info_get_event_subscription_url">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="552">Get the event subscription URL for this service, or %NULL.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="79"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="558">A string. This string should be freed with g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="554">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_id" c:identifier="gupnp_service_info_get_id">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="487">Get the ID of this service, or %NULL if there is no ID.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="70"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="493">A string. This string should be freed with g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="489">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_introspection_async"
              c:identifier="gupnp_service_info_get_introspection_async">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="678">Note that introspection object is created from the information in service
description document (SCPD) provided by the service so it can not be created
if the service does not provide a SCPD.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="680">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="681">callback to be called when introspection object is ready.</doc>
            <type name="ServiceIntrospectionCallback"
                  c:type="GUPnPServiceIntrospectionCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="682">user_data to be passed to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_introspection_async_full"
              c:identifier="gupnp_service_info_get_introspection_async_full"
              version="0.20.9">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="700">Note that introspection object is created from the information in service
description document (SCPD) provided by the service so it can not be created
if the service does not provide a SCPD.

If @cancellable is used to cancel the call, @callback will be called with
error code %G_IO_ERROR_CANCELLED.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="702">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="703">callback to be called when introspection object is ready.</doc>
            <type name="ServiceIntrospectionCallback"
                  c:type="GUPnPServiceIntrospectionCallback"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="704">GCancellable that can be used to cancel the call, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="705">user_data to be passed to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_location"
              c:identifier="gupnp_service_info_get_location"
              glib:get-property="location">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="401">Get the location of the device description file.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="407">A constant string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="403">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scpd_url"
              c:identifier="gupnp_service_info_get_scpd_url">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="508">Get the SCPD URL for this service, or %NULL if there is no SCPD.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="73"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="514">A string. This string should be freed with g_free() after use.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="510">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_service_type"
              c:identifier="gupnp_service_info_get_service_type"
              glib:get-property="service-type">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="461">Get the UPnP service type, or %NULL.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="467">A constant string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="463">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_udn"
              c:identifier="gupnp_service_info_get_udn"
              glib:get-property="udn">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="441">Get the Unique Device Name of the containing device.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="447">A constant string.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="443">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_url_base"
              c:identifier="gupnp_service_info_get_url_base"
              glib:get-property="url-base">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="421">Get the URL base of this service.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="427">A constant #SoupURI.</doc>
          <type name="Soup.URI" c:type="const SoupURI*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="423">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="introspect_async"
              c:identifier="gupnp_service_info_introspect_async"
              version="1.2.2">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="817">Note that introspection object is created from the information in service
description document (SCPD) provided by the service so it can not be created
if the service does not provide a SCPD.

If @cancellable is used to cancel the call, @callback will be called with
error code %G_IO_ERROR_CANCELLED.</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="95"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="819">A #GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="820">#GCancellable that can be used to cancel the call, or %NULL.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="821">callback to be called when introspeciton object is ready.</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="822">user_data to be passed to the callback.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="introspect_finish"
              c:identifier="gupnp_service_info_introspect_finish"
              version="1.2.2"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="848">Finish an asynchronous call initiated with
gupnp_service_info_introspect_async().</doc>
        <source-position filename="libgupnp/gupnp-service-info.h" line="101"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.c"
               line="857">%NULL, if the call had an error, a
#GUPnPServiceIntrospection object otherwise.</doc>
          <type name="ServiceIntrospection"
                c:type="GUPnPServiceIntrospection*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="850">A GUPnPServiceInfo</doc>
            <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
          </instance-parameter>
          <parameter name="res" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-info.c"
                 line="851">A #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="context"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_context">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="248">The #GUPnPContext to use.</doc>
        <type name="Context"/>
      </property>
      <property name="document"
                stability="Private"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="339">Private property.</doc>
        <type name="XMLDoc"/>
      </property>
      <property name="element"
                stability="Private"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="360">Private property.</doc>
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="location"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_location">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="266">The location of the device description file.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="service-type"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_service_type">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="303">The service type.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="udn"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_udn">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="285">The UDN of the containing device.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="url-base"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_url_base">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-info.c"
             line="321">The URL base (#SoupURI).</doc>
        <type name="Soup.URI"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ServiceInfoClass"
            c:type="GUPnPServiceInfoClass"
            glib:is-gtype-struct-for="ServiceInfo">
      <source-position filename="libgupnp/gupnp-service-info.h" line="37"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-service-info.h" line="33"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-service-info.h" line="34"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-service-info.h" line="35"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-service-info.h" line="36"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="ServiceIntrospection"
           c:symbol-prefix="service_introspection"
           c:type="GUPnPServiceIntrospection"
           parent="GObject.Object"
           glib:type-name="GUPnPServiceIntrospection"
           glib:get-type="gupnp_service_introspection_get_type"
           glib:type-struct="ServiceIntrospectionClass">
      <source-position filename="libgupnp/gupnp-service-introspection.h"
                       line="25"/>
      <method name="get_action"
              c:identifier="gupnp_service_introspection_get_action">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.c"
             line="921">Returns the action by the name @action_name in this service.</doc>
        <source-position filename="libgupnp/gupnp-service-introspection.h"
                         line="123"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-introspection.c"
               line="928">the action or %NULL. Do not modify or free
it.</doc>
          <type name="ServiceActionInfo"
                c:type="const GUPnPServiceActionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="introspection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-introspection.c"
                 line="923">A #GUPnPServiceIntrospection</doc>
            <type name="ServiceIntrospection"
                  c:type="GUPnPServiceIntrospection*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-introspection.c"
                 line="924">The name of the action to retrieve</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_state_variable"
              c:identifier="gupnp_service_introspection_get_state_variable">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.c"
             line="881">Returns the state variable by the name @variable_name in this service.</doc>
        <source-position filename="libgupnp/gupnp-service-introspection.h"
                         line="136"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-introspection.c"
               line="888">the state variable or %NULL. Do not modify or
free it.</doc>
          <type name="ServiceStateVariableInfo"
                c:type="const GUPnPServiceStateVariableInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="introspection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-introspection.c"
                 line="883">A #GUPnPServiceIntrospection</doc>
            <type name="ServiceIntrospection"
                  c:type="GUPnPServiceIntrospection*"/>
          </instance-parameter>
          <parameter name="variable_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-introspection.c"
                 line="884">The name of the variable to retrieve</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_action_names"
              c:identifier="gupnp_service_introspection_list_action_names">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.c"
             line="771">Returns a GList of names of all the actions in this service.</doc>
        <source-position filename="libgupnp/gupnp-service-introspection.h"
                         line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-introspection.c"
               line="777">A GList of names of all
the actions or %NULL. Do not modify or free it or its contents.</doc>
          <type name="GLib.List" c:type="const GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="introspection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-introspection.c"
                 line="773">A #GUPnPServiceIntrospection</doc>
            <type name="ServiceIntrospection"
                  c:type="GUPnPServiceIntrospection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_actions"
              c:identifier="gupnp_service_introspection_list_actions">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.c"
             line="800">Returns a #GList of all the actions (of type #GUPnPServiceActionInfo) in
this service.</doc>
        <source-position filename="libgupnp/gupnp-service-introspection.h"
                         line="119"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-introspection.c"
               line="807">A
#GList of all the actions or %NULL. Do not modify or free it or its
contents.</doc>
          <type name="GLib.List" c:type="const GList*">
            <type name="ServiceActionInfo"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="introspection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-introspection.c"
                 line="802">A #GUPnPServiceIntrospection</doc>
            <type name="ServiceIntrospection"
                  c:type="GUPnPServiceIntrospection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_state_variable_names"
              c:identifier="gupnp_service_introspection_list_state_variable_names">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.c"
             line="845">Returns a #GList of names of all the state variables in this service.</doc>
        <source-position filename="libgupnp/gupnp-service-introspection.h"
                         line="128"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-introspection.c"
               line="851">A #GList of names of all
the state variables or %NULL. Do not modify or free it or its contents.</doc>
          <type name="GLib.List" c:type="const GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="introspection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-introspection.c"
                 line="847">A #GUPnPServiceIntrospection</doc>
            <type name="ServiceIntrospection"
                  c:type="GUPnPServiceIntrospection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_state_variables"
              c:identifier="gupnp_service_introspection_list_state_variables">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.c"
             line="822">Returns a GList of all the state variables (of type
#GUPnPServiceStateVariableInfo) in this service.</doc>
        <source-position filename="libgupnp/gupnp-service-introspection.h"
                         line="132"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-introspection.c"
               line="829">
A #GList of all the state variables or %NULL. Do not modify or free it or
its contents.</doc>
          <type name="GLib.List" c:type="const GList*">
            <type name="ServiceStateVariableInfo"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="introspection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-introspection.c"
                 line="824">A #GUPnPServiceIntrospection</doc>
            <type name="ServiceIntrospection"
                  c:type="GUPnPServiceIntrospection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="scpd"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.c"
             line="233">The scpd of the device description file.</doc>
        <type name="gpointer" c:type="gpointer"/>
      </property>
    </class>
    <callback name="ServiceIntrospectionCallback"
              c:type="GUPnPServiceIntrospectionCallback">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-info.h"
           line="39">Callback notifying that @introspection for @info has been obtained.</doc>
      <source-position filename="libgupnp/gupnp-service-info.h" line="48"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.h"
               line="41">The #GUPnPServiceInfo introspection was requested for</doc>
          <type name="ServiceInfo" c:type="GUPnPServiceInfo*"/>
        </parameter>
        <parameter name="introspection"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.h"
               line="42">The new #GUPnPServiceIntrospection object, or NULL</doc>
          <type name="ServiceIntrospection"
                c:type="GUPnPServiceIntrospection*"/>
        </parameter>
        <parameter name="error"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.h"
               line="43">The #GError that occurred, or NULL</doc>
          <type name="GLib.Error" c:type="const GError*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-info.h"
               line="44">User data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="ServiceIntrospectionClass"
            c:type="GUPnPServiceIntrospectionClass"
            glib:is-gtype-struct-for="ServiceIntrospection">
      <source-position filename="libgupnp/gupnp-service-introspection.h"
                       line="25"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="ServiceProxy"
           c:symbol-prefix="service_proxy"
           c:type="GUPnPServiceProxy"
           parent="ServiceInfo"
           glib:type-name="GUPnPServiceProxy"
           glib:get-type="gupnp_service_proxy_get_type"
           glib:type-struct="ServiceProxyClass">
      <source-position filename="libgupnp/gupnp-service-proxy.h" line="41"/>
      <virtual-method name="subscription_lost">
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="33"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="reason" transfer-ownership="none">
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_notify"
              c:identifier="gupnp_service_proxy_add_notify"
              shadowed-by="add_notify_full"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="1090">Sets up @callback to be called whenever a change notification for
@variable is recieved.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="160"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="1101">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1092">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="variable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1093">The variable to add notification for</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1094">The type of the variable</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1095">The callback to call when @variable changes</doc>
            <type name="ServiceProxyNotifyCallback"
                  c:type="GUPnPServiceProxyNotifyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1096">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_notify_full"
              c:identifier="gupnp_service_proxy_add_notify_full"
              shadows="add_notify"
              version="0.20.12">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="1119">Sets up @callback to be called whenever a change notification for
@variable is recieved.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="167"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="1133">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1121">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="variable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1122">The variable to add notification for</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1123">The type of the variable</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="3"
                     destroy="4">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1124">The callback to call when @variable changes</doc>
            <type name="ServiceProxyNotifyCallback"
                  c:type="GUPnPServiceProxyNotifyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1125">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1126">Function to call when the notification is removed, or %NULL</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_raw_notify"
              c:identifier="gupnp_service_proxy_add_raw_notify"
              version="0.20.12">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="1195">Get a notification for anything that happens on the peer. @value in
@callback will be of type #G_TYPE_POINTER and contain the pre-parsed
#xmlDoc. Do NOT free or modify this document.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="175"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="1207">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1197">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1198">The callback to call when the peer issues any
variable notification.</doc>
            <type name="ServiceProxyNotifyCallback"
                  c:type="GUPnPServiceProxyNotifyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1200">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1201">A #GDestroyNotify for @user_data</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="begin_action"
              c:identifier="gupnp_service_proxy_begin_action"
              introspectable="0"
              deprecated="1"
              deprecated-version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="550">Sends action @action with parameters @Varargs to the service exposed by
@proxy asynchronously, calling @callback on completion. From @callback, call
gupnp_service_proxy_end_action() to check for errors, to retrieve return
values, and to free the #GUPnPServiceProxyAction.</doc>
        <doc-deprecated xml:space="preserve">Use gupnp_service_proxy_action_new() and
gupnp_service_proxy_call_action_async()</doc-deprecated>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="103"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="565">A #GUPnPServiceProxyAction handle. This will be freed when
gupnp_service_proxy_cancel_action() or
gupnp_service_proxy_end_action_valist().</doc>
          <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="552">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="553">An action</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="554">The callback to call when sending the action has succeeded
or failed</doc>
            <type name="ServiceProxyActionCallback"
                  c:type="GUPnPServiceProxyActionCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="556">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="557">tuples of in parameter name, in parameter type, and in parameter
value, terminated with %NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="begin_action_list"
              c:identifier="gupnp_service_proxy_begin_action_list"
              version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="843">A variant of #gupnp_service_proxy_begin_action that takes lists of
in-parameter names, types and values.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="858">A #GUPnPServiceProxyAction handle. This will
be freed when calling gupnp_service_proxy_cancel_action() or
gupnp_service_proxy_end_action_list().</doc>
          <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="845">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="846">An action</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="in_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="847">#GList of 'in' parameter
names (as strings)</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="in_values" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="849">#GList of values (as
#GValue) that line up with @in_names</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="GObject.Value"/>
            </type>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="851">The callback to call when sending the action has succeeded or
failed</doc>
            <type name="ServiceProxyActionCallback"
                  c:type="GUPnPServiceProxyActionCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="853">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="begin_action_valist"
              c:identifier="gupnp_service_proxy_begin_action_valist"
              introspectable="0"
              deprecated="1"
              deprecated-version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="794">See gupnp_service_proxy_begin_action().</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="806">A #GUPnPServiceProxyAction handle. This will
be freed when calling gupnp_service_proxy_cancel_action() or
gupnp_service_proxy_end_action_valist().</doc>
          <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="796">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="797">An action</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="798">The callback to call when sending the action has succeeded
or failed</doc>
            <type name="ServiceProxyActionCallback"
                  c:type="GUPnPServiceProxyActionCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="800">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="801">A va_list of tuples of in parameter name, in parameter type, and
in parameter value</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="call_action"
              c:identifier="gupnp_service_proxy_call_action"
              version="1.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="2127">Synchronously call the @action on the remote UPnP service.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="256"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="2137">%NULL on error, @action if successful.</doc>
          <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2129">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2130">An action</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2131">A #GCancellable which can be used to cancel the
current action call</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="call_action_async"
              c:identifier="gupnp_service_proxy_call_action_async"
              version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="2032">Start a call on the remote UPnP service using the pre-configured @action.
Use gupnp_service_proxy_call_action_finish() in the @callback to finalize
the call and gupnp_service_proxy_action_get_result(),
gupnp_service_proxy_action_get_result_hash() or
gupnp_service_proxy_action_get_result_list() to extract the result of the
remote call.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="243"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2034">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2035">A #GUPnPServiceProxyAction to call</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2036">A #GCancellable which can be used to cancel the
current action call</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2038">A #GAsyncReadyCallback to call when the action is
finished.</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2040">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="call_action_finish"
              c:identifier="gupnp_service_proxy_call_action_finish"
              version="1.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="2097">Finish an asynchronous call initiated with
gupnp_service_proxy_call_action_async().

Note: This will only signalize transport errors to the caller, such as the action being cancelled
or lost connection etc. SOAP call errors are only returned by gupnp_service_proxy_action_get() and such.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="251"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="2109">%NULL, if the call had an error, the action otherwise.</doc>
          <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2099">a #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2100">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="cancel_action"
              c:identifier="gupnp_service_proxy_cancel_action"
              deprecated="1"
              deprecated-version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="1066">Cancels @action, freeing the @action handle.</doc>
        <doc-deprecated xml:space="preserve">Use the #GCancellable passed to
gupnp_service_proxy_call_action_async() or gupnp_service_proxy_call_action()</doc-deprecated>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="156"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1068">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1069">A #GUPnPServiceProxyAction handle</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </parameter>
        </parameters>
      </method>
      <method name="end_action"
              c:identifier="gupnp_service_proxy_end_action"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="889">Retrieves the result of @action. The out parameters in @Varargs will be
filled in, and if an error occurred, @error will be set. In case of
an UPnP error the error code will be the same in @error.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="127"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="902">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="891">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="892">A #GUPnPServiceProxyAction handle</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </parameter>
          <parameter name="error"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1"
                     optional="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="893">The location where to store any error, or %NULL</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="894">tuples of out parameter name, out parameter type, and out parameter
value location, terminated with %NULL. The out parameter values should be
freed after use</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="end_action_hash"
              c:identifier="gupnp_service_proxy_end_action_hash"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="1023">See gupnp_service_proxy_end_action(); this version takes a #GHashTable for
runtime generated parameter lists.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="149"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="1034">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1025">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1026">A #GUPnPServiceProxyAction handle</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </parameter>
          <parameter name="hash"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1028">A #GHashTable of
out parameter name and initialised #GValue pairs</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="end_action_list"
              c:identifier="gupnp_service_proxy_end_action_list"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="972">A variant of #gupnp_service_proxy_end_action that takes lists of
out-parameter names, types and place-holders for values. The returned list
in @out_values must be freed using #g_list_free and each element in it using
#g_value_unset and #g_slice_free.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="989">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="974">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="975">A #GUPnPServiceProxyAction handle</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </parameter>
          <parameter name="out_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="977">#GList of 'out' parameter
names (as strings)</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="out_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="979">#GList of types (as #GType)
that line up with @out_names</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="GType"/>
            </type>
          </parameter>
          <parameter name="out_values"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="981">#GList of values
(as #GValue) that line up with @out_names and @out_types.</doc>
            <type name="GLib.List" c:type="GList**">
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="end_action_valist"
              c:identifier="gupnp_service_proxy_end_action_valist"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="933">See gupnp_service_proxy_end_action().</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="133"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="944">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="935">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="936">A #GUPnPServiceProxyAction handle</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </parameter>
          <parameter name="error"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1"
                     optional="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="937">The location where to store any error, or %NULL</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="938">A va_list of tuples of out parameter name, out parameter type,
and out parameter value location. The out parameter values should be
freed after use</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_subscribed"
              c:identifier="gupnp_service_proxy_get_subscribed"
              glib:get-property="subscribed">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="2012">Returns if we are subscribed to this service.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="197"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="2018">%TRUE if we are subscribed to this service, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="2014">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_notify"
              c:identifier="gupnp_service_proxy_remove_notify">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="1226">Cancels the variable change notification for @callback and @user_data.

Up to version 0.20.9 this function must not be called directlya or
indirectly from a #GUPnPServiceProxyNotifyCallback associated with this
service proxy, even if it is for another variable. In later versions such
calls are allowed.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="181"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="1240">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1228">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="variable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1229">The variable to add notification for</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1230">The callback to call when @variable changes</doc>
            <type name="ServiceProxyNotifyCallback"
                  c:type="GUPnPServiceProxyNotifyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1231">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_raw_notify"
              c:identifier="gupnp_service_proxy_remove_raw_notify">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="1305">Cancels the variable change notification for @callback and @user_data.

This function must not be called directly or indirectly from a
#GUPnPServiceProxyNotifyCallback associated with this service proxy, even
if it is for another variable.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="187"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="1317">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1307">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1308">The callback to call when @variable changes</doc>
            <type name="ServiceProxyNotifyCallback"
                  c:type="GUPnPServiceProxyNotifyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1309">User data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="send_action"
              c:identifier="gupnp_service_proxy_send_action"
              introspectable="0"
              deprecated="1"
              deprecated-version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="364">Sends action @action with parameters @Varargs to the service exposed by
@proxy synchronously. If an error occurred, @error will be set. In case of
an UPnPError the error code will be the same in @error.</doc>
        <doc-deprecated xml:space="preserve">Use gupnp_service_proxy_action_new() and
gupnp_service_proxy_call_action()</doc-deprecated>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="377">%TRUE if sending the action was succesful.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="366">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="367">An action</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="error"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1"
                     optional="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="368">The location where to store any error, or %NULL</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="369">tuples of in parameter name, in parameter type, and in parameter
value, followed by %NULL, and then tuples of out parameter name,
out parameter type, and out parameter value location, terminated with %NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="send_action_list"
              c:identifier="gupnp_service_proxy_send_action_list"
              deprecated="1"
              deprecated-version="1.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="469">The synchronous variant of #gupnp_service_proxy_begin_action_list and
#gupnp_service_proxy_end_action_list.</doc>
        <doc-deprecated xml:space="preserve">Use gupnp_service_proxy_action_new_from_list() and gupnp_service_proxy_call_action()</doc-deprecated>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="488">%TRUE if sending the action was succesful.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="471">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="472">An action</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="in_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="473">#GList of 'in' parameter
names (as strings)</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="in_values" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="475">#GList of values (as
#GValue) that line up with @in_names</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="GObject.Value"/>
            </type>
          </parameter>
          <parameter name="out_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="477">#GList of 'out' parameter
names (as strings)</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="out_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="479">#GList of types (as #GType)
that line up with @out_names</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="GType"/>
            </type>
          </parameter>
          <parameter name="out_values"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="481">#GList of values
(as #GValue) that line up with @out_names and @out_types.</doc>
            <type name="GLib.List" c:type="GList**">
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="send_action_valist"
              c:identifier="gupnp_service_proxy_send_action_valist"
              introspectable="0"
              deprecated="1"
              deprecated-version="1.2.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="403">See gupnp_service_proxy_send_action().</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.c"
               line="414">%TRUE if sending the action was succesful.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="405">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="406">An action</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="error"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1"
                     optional="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="407">The location where to store any error, or %NULL</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="var_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="408">va_list of tuples of in parameter name, in parameter type, and in
parameter value, followed by %NULL, and then tuples of out parameter name,
out parameter type, and out parameter value location</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_subscribed"
              c:identifier="gupnp_service_proxy_set_subscribed"
              glib:set-property="subscribed">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="1978">(Un)subscribes to this service.

&lt;note&gt;The relevant messages are not immediately sent but queued.
If you want to unsubcribe from this service because the application
is quitting, rely on automatic synchronised unsubscription on object
destruction instead.&lt;/note&gt;</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="193"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1980">A #GUPnPServiceProxy</doc>
            <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
          </instance-parameter>
          <parameter name="subscribed" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="1981">%TRUE to subscribe to this service</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="subscribed"
                writable="1"
                transfer-ownership="none"
                setter="set_subscribed"
                getter="get_subscribed">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="323">Whether we are subscribed to this service.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent_instance">
        <type name="ServiceInfo" c:type="GUPnPServiceInfo"/>
      </field>
      <glib:signal name="subscription-lost" when="last">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy.c"
             line="341">Emitted whenever the subscription to this service has been lost due
to an error condition.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy.c"
                 line="344">A pointer to a #GError describing why the subscription has
been lost</doc>
            <type name="GLib.Error" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ServiceProxyAction"
            c:type="GUPnPServiceProxyAction"
            glib:type-name="GUPnPServiceProxyAction"
            glib:get-type="gupnp_service_proxy_action_get_type"
            c:symbol-prefix="service_proxy_action">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-proxy.h"
           line="43">Opaque structure for holding in-progress action data.</doc>
      <source-position filename="libgupnp/gupnp-service-proxy.h" line="48"/>
      <constructor name="new"
                   c:identifier="gupnp_service_proxy_action_new"
                   introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy-action.c"
             line="282">Prepares action @action with parameters @Varargs to be sent off to
a remote service later with gupnp_service_proxy_call_action() or
gupnp_service_proxy_call_action_async().

After the action call has finished, the results of the call may be
retrived from the #GUPnPServiceProxyAction by using
gupnp_service_proxy_action_get_result(),
gupnp_service_proxy_action_get_result_list() or
gupnp_service_proxy_action_get_result_hash()

&lt;informalexample&gt;
&lt;programlisting&gt;
GUPnPServiceProxyAction *action =
        gupnp_service_proxy_action_new ("GetVolume",
                                        // Parameters
                                        "InstanceID", G_TYPE_INT, 0,
                                        "Channel", G_TYPE_STRING, "Master",
                                        NULL);

GError *error = NULL;
gupnp_service_proxy_call_action (proxy, action, NULL, &amp;error);
if (error != NULL) {
        g_warning ("Failed to call GetVolume: %s", error-&gt;message);
        g_clear_error (&amp;error);

        return;
}

guint16 volume = 0;
if (!gupnp_service_proxy_action_get_result (action,
                                            &amp;error,
                                            "CurrentVolume", G_TYPE_UINT, &amp;volume,
                                            NULL)) {
        g_message ("Current Volume: %u", volume);
}

gupnp_service_proxy_action_unref (action);
&lt;/programlisting&gt;
&lt;/informalexample&gt;</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="202"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy-action.c"
               line="328">A newly created #GUPnPServiceProxyAction</doc>
          <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
        </return-value>
        <parameters>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="284">The name of a remote action to call</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="285">tuples of in parameter name, in parameter type, and in parameter
value, terminated with %NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_list"
                   c:identifier="gupnp_service_proxy_action_new_from_list">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy-action.c"
             line="373">Prepares action @action with parameters @in_names and @in_values to be
sent off to a remote service later with gupnp_service_proxy_call_action() or
gupnp_service_proxy_call_action_async(). This is mainly useful for language
bindings.

After the action call has finished, the results of the call may be
retrived from the #GUPnPServiceProxyAction by using
gupnp_service_proxy_action_get_result(),
gupnp_service_proxy_action_get_result_list() or
gupnp_service_proxy_action_get_result_hash()
&lt;informalexample&gt;
&lt;programlisting&gt;
GList *in_args = NULL;
in_args = g_list_append (in_args, "InstanceID");
in_args = g_list_append (in_args, "Unit");
in_args = g_list_append (in_args, "Target");

GValue instance = G_VALUE_INIT;
g_value_set_int (&amp;instance, 0);
GValue unit = G_VALUE_INIT;
g_value_set_static_string (&amp;unit, "ABS_TIME");
GValue target = G_VALUE_INIT;
g_value_set_static_string (&amp;target, "00:00:00.000");

GList *in_values = NULL;
in_values = g_list_append (in_values, &amp;instance);
in_values = g_list_append (in_values, &amp;unit);
in_values = g_list_append (in_values, &amp;target);

GUPnPServiceProxyAction *action =
        gunp_service_proxy_action_new_from_list ("Seek", in_args, in_values);

GError *error = NULL;
gupnp_service_proxy_call_action_async (proxy, action, NULL, on_action_finished, NULL);
gupnp_service_proxy_action_unref (action);
&lt;/programlisting&gt;
&lt;/informalexample&gt;</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="206"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy-action.c"
               line="419">A newly created #GUPnPServiceProxyAction</doc>
          <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
        </return-value>
        <parameters>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="375">An action</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="in_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="376">#GList of 'in' parameter
names (as strings)</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="in_values" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="378">#GList of values (as
#GValue) that line up with @in_names</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_result"
              c:identifier="gupnp_service_proxy_action_get_result"
              introspectable="0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy-action.c"
             line="704">Retrieves the result of @action. The out parameters in @Varargs will be
filled in, and if an error occurred, @error will be set. In case of
an UPnP error the error code will be the same in @error.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="226"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy-action.c"
               line="716">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="706">A #GUPnPServiceProxyAction handle</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </instance-parameter>
          <parameter name="error"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1"
                     optional="1">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="707">The location where to store any error, or %NULL</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="708">tuples of out parameter name, out parameter type, and out parameter
value location, terminated with %NULL. The out parameter values should be
freed after use</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_result_hash"
              c:identifier="gupnp_service_proxy_action_get_result_hash"
              version="1.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy-action.c"
             line="610">See gupnp_service_proxy_action_get_result(); this version takes a #GHashTable for
runtime generated parameter lists.

The @out_hash needs to be pre-initialized with key value pairs denoting the argument
to retrieve and an empty #GValue initialized to hold the wanted type with g_value_init().

&lt;informalexample&gt;
&lt;programlisting&gt;
void on_action_finished(GObject *object, GAsyncResult *res, gpointer user_data)
{
    GUPnPServiceProxyAction *action;
    GError *error;

    action = gupnp_service_proxy_call_action_finish (GUPNP_SERVICE_PROXY (object),
                                                     res,
                                                     &amp;error);

    if (error != NULL) {
             g_print ("Call failed: %s", error-&gt;message);
             g_clear_error (&amp;error);
             return;
    }

    GValue play_mode = G_VALUE_INIT;
    g_value_init(&amp;play_mode, G_TYPE_STRING);
    GValue rec_quality_mode = G_VALUE_INIT;
    g_value_init(&amp;rec_quality_mode, G_TYPE_STRING);

    GHashTable *out_args = g_hash_table_new (g_str_hash, g_str_equal);
    g_hash_table_insert(out_args, "PlayMode", &amp;play_mode);
    g_hash_table_insert(out_args, "RecQualityMode", &amp;rec_quality_mode);

    if (!gupnp_service_proxy_action_get_result_hash (action,
                                                     out_args,
                                                     &amp;error)) {
             g_print ("Getting results failed: %s", error-&gt;message);
             g_clear_error (&amp;error);
             return;
    }

    g_value_unset (&amp;play_mode);
    g_value_unset (&amp;rec_quality_mode);

    g_hash_table_unref (out_args);
}
&lt;/programlisting&gt;
&lt;/informalexample&gt;</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="237"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy-action.c"
               line="665">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="612">A #GUPnPServiceProxyAction handle</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </instance-parameter>
          <parameter name="out_hash"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="613">A #GHashTable of
out parameter name and initialised #GValue pairs</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_result_list"
              c:identifier="gupnp_service_proxy_action_get_result_list"
              version="1.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy-action.c"
             line="486">A variant of gupnp_service_proxy_action_get_result() that takes lists of
out-parameter names, types and place-holders for values. The returned list
in @out_values must be freed using #g_list_free and each element in it using
#g_value_unset and #g_free.
&lt;informalexample&gt;
&lt;programlisting&gt;
void on_action_finished(GObject *object, GAsyncResult *res, gpointer user_data)
{
    GUPnPServiceProxyAction *action;
    GError *error;

    action = gupnp_service_proxy_call_action_finish (GUPNP_SERVICE_PROXY (object),
                                                     res,
                                                     &amp;error);

    if (error != NULL) {
             g_print ("Call failed: %s", error-&gt;message);
             g_clear_error (&amp;error);
             return;
    }

    GList *out_args = NULL;
    out_args = g_list_append (out_args, "PlayMode");
    out_args = g_list_append (out_args, "RecQualityMode");
    GList *out_types = NULL;
    out_types = g_list_append (out_types, GSIZE_TO_POINTER (G_TYPE_STRING));
    out_types = g_list_append (out_types, GSIZE_TO_POINTER (G_TYPE_STRING));
    GList *out_values = NULL;

    if (!gupnp_service_proxy_action_get_result_list (action,
                                                     out_args,
                                                     out_types,
                                                     &amp;out_values,
                                                     &amp;error)) {
             g_print ("Getting results failed: %s", error-&gt;message);
             g_clear_error (&amp;error);
             return;
    }

    GList *iter = out_values;
    while (iter != NULL) {
        GValue *value = iter-&gt;data;
        g_print ("Result: %s\n", g_value_get_string (value));
        g_value_unset (value);
        g_free (value);
        iter = g_list_remove_link (iter, iter);
    }
    g_list_free (out_values);
}
&lt;/programlisting&gt;
&lt;/informalexample&gt;</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="231"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy-action.c"
               line="549">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="488">A #GUPnPServiceProxyAction handle</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </instance-parameter>
          <parameter name="out_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="489">#GList of 'out' parameter
names (as strings)</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="out_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="491">#GList of types (as #GType)
that line up with @out_names</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="GType"/>
            </type>
          </parameter>
          <parameter name="out_values"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="493">#GList of values
(as #GValue) that line up with @out_names and @out_types.</doc>
            <type name="GLib.List" c:type="GList**">
              <type name="GObject.Value"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="gupnp_service_proxy_action_ref">
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="211"/>
        <return-value transfer-ownership="full">
          <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set"
              c:identifier="gupnp_service_proxy_action_set"
              version="1.4.0"
              throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-proxy-action.c"
             line="781">Update the value of @key to @value.

@key needs to already exist in @action.</doc>
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="220"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy-action.c"
               line="792">true if successfully modified, false otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="783">the action to modify</doc>
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="784">the name of the value to modify</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-service-proxy-action.c"
                 line="785">the new value of @key</doc>
            <type name="GObject.Value" c:type="const GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="gupnp_service_proxy_action_unref">
        <source-position filename="libgupnp/gupnp-service-proxy.h" line="214"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="action" transfer-ownership="none">
            <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <callback name="ServiceProxyActionCallback"
              c:type="GUPnPServiceProxyActionCallback">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-proxy.h"
           line="50">Callback notifying that @action on @proxy has returned and
gupnp_service_proxy_end_action() etc can be called.</doc>
      <source-position filename="libgupnp/gupnp-service-proxy.h" line="59"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="proxy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.h"
               line="52">The #GUPnPServiceProxy @action is called from</doc>
          <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
        </parameter>
        <parameter name="action" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.h"
               line="53">The #GUPnPServiceProxyAction in progress</doc>
          <type name="ServiceProxyAction" c:type="GUPnPServiceProxyAction*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.h"
               line="54">User data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="ServiceProxyClass"
            c:type="GUPnPServiceProxyClass"
            glib:is-gtype-struct-for="ServiceProxy">
      <source-position filename="libgupnp/gupnp-service-proxy.h" line="41"/>
      <field name="parent_class">
        <type name="ServiceInfoClass" c:type="GUPnPServiceInfoClass"/>
      </field>
      <field name="subscription_lost">
        <callback name="subscription_lost">
          <source-position filename="libgupnp/gupnp-service-proxy.h"
                           line="33"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="proxy" transfer-ownership="none">
              <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
            </parameter>
            <parameter name="reason" transfer-ownership="none">
              <type name="GLib.Error" c:type="const GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_gupnp_reserved1" introspectable="0">
        <callback name="_gupnp_reserved1">
          <source-position filename="libgupnp/gupnp-service-proxy.h"
                           line="37"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved2" introspectable="0">
        <callback name="_gupnp_reserved2">
          <source-position filename="libgupnp/gupnp-service-proxy.h"
                           line="38"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved3" introspectable="0">
        <callback name="_gupnp_reserved3">
          <source-position filename="libgupnp/gupnp-service-proxy.h"
                           line="39"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_gupnp_reserved4" introspectable="0">
        <callback name="_gupnp_reserved4">
          <source-position filename="libgupnp/gupnp-service-proxy.h"
                           line="40"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <callback name="ServiceProxyNotifyCallback"
              c:type="GUPnPServiceProxyNotifyCallback">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-proxy.h"
           line="64">Callback notifying that the state variable @variable on @proxy has changed to
@value.</doc>
      <source-position filename="libgupnp/gupnp-service-proxy.h" line="74"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="proxy" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.h"
               line="66">The #GUPnPServiceProxy the notification originates from</doc>
          <type name="ServiceProxy" c:type="GUPnPServiceProxy*"/>
        </parameter>
        <parameter name="variable" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.h"
               line="67">The name of the variable being notified</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.h"
               line="68">The #GValue of the variable being notified</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-service-proxy.h"
               line="69">User data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="ServiceStateVariableInfo"
            c:type="GUPnPServiceStateVariableInfo"
            glib:type-name="GUPnPServiceStateVariableInfo"
            glib:get-type="gupnp_service_state_variable_info_get_type"
            c:symbol-prefix="service_state_variable_info">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-introspection.h"
           line="79">This structure contains information about service state variable.</doc>
      <source-position filename="libgupnp/gupnp-service-introspection.h"
                       line="109"/>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="81">The name of the state variable.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="send_events" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="82">Whether this state variable can source events.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="is_numeric" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="83">Wether this state variable is a numeric type (integer and
float).</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="type" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="85">The GType of this state variable.</doc>
        <type name="GType" c:type="GType"/>
      </field>
      <field name="default_value" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="86">The default value of this state variable.</doc>
        <type name="GObject.Value" c:type="GValue"/>
      </field>
      <field name="minimum" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="87">The minimum value of this state variable. Only applies to numeric
data types.</doc>
        <type name="GObject.Value" c:type="GValue"/>
      </field>
      <field name="maximum" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="89">The maximum value of this state variable. Only applies to numeric
data types.</doc>
        <type name="GObject.Value" c:type="GValue"/>
      </field>
      <field name="step" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="91">The step value of this state variable. Only applies to numeric
data types.</doc>
        <type name="GObject.Value" c:type="GValue"/>
      </field>
      <field name="allowed_values" writable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service-introspection.h"
             line="93">The allowed values of this state variable. Only applies to
string data types. Unlike the other fields in this structure, this field
contains a list of (char *) strings rather than GValues.</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="utf8"/>
        </type>
      </field>
    </record>
    <glib:boxed glib:name="Time"
                c:symbol-prefix="time"
                glib:type-name="GUPnPTime"
                glib:get-type="gupnp_time_get_type">
    </glib:boxed>
    <glib:boxed glib:name="TimeTZ"
                c:symbol-prefix="time_tz"
                glib:type-name="GUPnPTimeTZ"
                glib:get-type="gupnp_time_tz_get_type">
    </glib:boxed>
    <glib:boxed glib:name="URI"
                c:symbol-prefix="uri"
                glib:type-name="GUPnPURI"
                glib:get-type="gupnp_uri_get_type">
    </glib:boxed>
    <glib:boxed glib:name="UUID"
                c:symbol-prefix="uuid"
                glib:type-name="GUPnPUUID"
                glib:get-type="gupnp_uuid_get_type">
    </glib:boxed>
    <class name="XMLDoc"
           c:symbol-prefix="xml_doc"
           c:type="GUPnPXMLDoc"
           parent="GObject.Object"
           glib:type-name="GUPnPXMLDoc"
           glib:get-type="gupnp_xml_doc_get_type"
           glib:type-struct="XMLDocClass">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-xml-doc.c"
           line="28">Reference-counting wrapper for libxml's #xmlDoc</doc>
      <source-position filename="libgupnp/gupnp-xml-doc.h" line="23"/>
      <constructor name="new"
                   c:identifier="gupnp_xml_doc_new"
                   version="0.14.0">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-xml-doc.c"
             line="71">Create a new #GUPnPXMLDoc for @xml_doc.</doc>
        <source-position filename="libgupnp/gupnp-xml-doc.h" line="30"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-xml-doc.c"
               line="77">A new #GUPnPXMLDoc, or %NULL on an error</doc>
          <type name="XMLDoc" c:type="GUPnPXMLDoc*"/>
        </return-value>
        <parameters>
          <parameter name="xml_doc" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-xml-doc.c"
                 line="73">Pointer to #xmlDoc to wrap under this object</doc>
            <type name="libxml2.Doc" c:type="xmlDoc*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_path"
                   c:identifier="gupnp_xml_doc_new_from_path"
                   version="0.14.0"
                   throws="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-xml-doc.c"
             line="95">Create a new #GUPnPXMLDoc for the XML document at @path.</doc>
        <source-position filename="libgupnp/gupnp-xml-doc.h" line="33"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-xml-doc.c"
               line="102">A new #GUPnPXMLDoc, or %NULL on an error</doc>
          <type name="XMLDoc" c:type="GUPnPXMLDoc*"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-xml-doc.c"
                 line="97">Path to xml document</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_doc" c:identifier="gupnp_xml_doc_get_doc">
        <source-position filename="libgupnp/gupnp-xml-doc.h" line="37"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-xml-doc.c"
               line="138">a pointer to the wrapped #xmlDoc</doc>
          <type name="libxml2.Doc" c:type="const xmlDoc*"/>
        </return-value>
        <parameters>
          <instance-parameter name="xml_doc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp/gupnp-xml-doc.c"
                 line="136">A #GUPnPXMLDoc</doc>
            <type name="XMLDoc" c:type="GUPnPXMLDoc*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="XMLDocClass"
            c:type="GUPnPXMLDocClass"
            glib:is-gtype-struct-for="XMLDoc">
      <source-position filename="libgupnp/gupnp-xml-doc.h" line="23"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="XMLError"
                 glib:type-name="GUPnPXMLError"
                 glib:get-type="gupnp_xml_error_get_type"
                 c:type="GUPnPXMLError"
                 glib:error-domain="gupnp-xml-error">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-error.h"
           line="89">#GError codes used for errors in the #GUPNP_XML_ERROR domain, during
processing of XML data.</doc>
      <member name="parse"
              value="0"
              c:identifier="GUPNP_XML_ERROR_PARSE"
              glib:nick="parse"
              glib:name="GUPNP_XML_ERROR_PARSE">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="91">Generic XML parsing error.</doc>
      </member>
      <member name="no_node"
              value="1"
              c:identifier="GUPNP_XML_ERROR_NO_NODE"
              glib:nick="no-node"
              glib:name="GUPNP_XML_ERROR_NO_NODE">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="92">A required XML node was not found.</doc>
      </member>
      <member name="empty_node"
              value="2"
              c:identifier="GUPNP_XML_ERROR_EMPTY_NODE"
              glib:nick="empty-node"
              glib:name="GUPNP_XML_ERROR_EMPTY_NODE">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="93">An XML node is unexpectedly empty.</doc>
      </member>
      <member name="invalid_attribute"
              value="3"
              c:identifier="GUPNP_XML_ERROR_INVALID_ATTRIBUTE"
              glib:nick="invalid-attribute"
              glib:name="GUPNP_XML_ERROR_INVALID_ATTRIBUTE">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="94">An XML node has an unknown attribute.</doc>
      </member>
      <member name="other"
              value="4"
              c:identifier="GUPNP_XML_ERROR_OTHER"
              glib:nick="other"
              glib:name="GUPNP_XML_ERROR_OTHER">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-error.h"
             line="95">Unknown/unhandled XML related errors.</doc>
      </member>
      <function name="quark" c:identifier="gupnp_xml_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <function name="control_error_quark"
              c:identifier="gupnp_control_error_quark"
              moved-to="ControlError.quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="eventing_error_quark"
              c:identifier="gupnp_eventing_error_quark"
              moved-to="EventingError.quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="get_uuid" c:identifier="gupnp_get_uuid">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service.c"
           line="1125">Generate and return a new UUID.</doc>
      <source-position filename="libgupnp/gupnp-uuid.h" line="15"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-service.c"
             line="1130">A newly generated UUID in string representation.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
    </function>
    <docsection name="gupnp-acl">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-acl.c"
           line="9">#GUPnPAcl provides either synchronous or asynchronous functions to check
whether a peer sould be able to access a resource or not.</doc>
    </docsection>
    <docsection name="gupnp-context">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-context.c"
           line="13">#GUPnPContext wraps the networking bits that are used by the various
GUPnP classes. It automatically starts a web server on demand.

For debugging, it is possible to see the messages being sent and received by
exporting &lt;envar&gt;GUPNP_DEBUG&lt;/envar&gt;.</doc>
    </docsection>
    <docsection name="gupnp-context-filter">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-context-filter.c"
           line="9">#GUPnPContextFilter handles network filtering. It provides API to manage a
list of entries that will be used to filter networks. The #GUPnPContextFilter
could be enabled or not. If it's enabled but the entries list is empty, it
behaves as disabled.</doc>
    </docsection>
    <docsection name="gupnp-context-manager">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-context-manager.c"
           line="14">A Utility class that takes care of creation and destruction of
#GUPnPContext objects for all available network interfaces as they go up
(connect) and down (disconnect), respectively.</doc>
    </docsection>
    <docsection name="gupnp-control-point">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-control-point.c"
           line="10">#GUPnPControlPoint handles device and service discovery. After creating
a control point and activating it using gssdp_resource_browser_set_active(),
the ::device-proxy-available, ::service-proxy-available,
::device-proxy-unavailable and ::service-proxy-unavailable signals will
be emitted whenever the availability of a device or service matching
the specified discovery target changes.</doc>
    </docsection>
    <docsection name="gupnp-device">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-device.c"
           line="10">#GUPnPDevice allows for retrieving a device's subdevices
and services. #GUPnPDevice implements the #GUPnPDeviceInfo
interface.</doc>
    </docsection>
    <docsection name="gupnp-device-info">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-device-info.c"
           line="10">The #GUPnPDeviceInfo base abstract class provides methods for querying
device information.</doc>
    </docsection>
    <docsection name="gupnp-device-proxy">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-device-proxy.c"
           line="10">#GUPnPDeviceProxy allows for retrieving proxies for a device's subdevices
and services. #GUPnPDeviceProxy implements the #GUPnPDeviceInfo interface.</doc>
    </docsection>
    <docsection name="gupnp-resource-factory">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-resource-factory.c"
           line="12">#GUPnPResourceFactory objects are used by #GUPnPControlPoint,
#GUPnPDeviceProxy and #GUPnPDevice to create resource proxy and resource
objects. Register UPnP type - #GType pairs to have resource or resource proxy
objects created with the specified #GType whenever an object for a resource
of the specified UPnP type is requested. The #GType&lt;!-- --&gt;s need
to be derived from the relevant resource or resource proxy type (e.g.
a device proxy type needs to be derived from #GUPnPDeviceProxy).</doc>
    </docsection>
    <docsection name="gupnp-root-device">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-root-device.c"
           line="10">#GUPnPRootDevice allows for implementing root devices.</doc>
    </docsection>
    <docsection name="gupnp-service">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service.c"
           line="10">#GUPnPService allows for handling incoming actions and state variable
notification. #GUPnPService implements the #GUPnPServiceInfo interface.</doc>
    </docsection>
    <docsection name="gupnp-service-info">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-info.c"
           line="11">The #GUPnPDeviceInfo base abstract class provides methods for querying
service information.</doc>
    </docsection>
    <docsection name="gupnp-service-introspection">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-introspection.c"
           line="12">The #GUPnPServiceIntrospection class provides methods for service
introspection based on information contained in its service description
document (SCPD). There is no constructor provided for this class, please use
#gupnp_service_info_get_introspection or
#gupnp_service_info_get_introspection_async to create an
#GUPnPServiceIntrospection object for a specific service.

Note that all the introspection information is retreived from the service
description document (SCPD) provided by the service and hence can not be
guaranteed to be complete. A UPnP service is required to provide a SCPD but
unfortunately, many services either do not provide this document or the
document does not provide any or all of the introspection information.

This class exposes internals of the UPnP protocol and should not need
to be used for regular device or control point development.</doc>
    </docsection>
    <docsection name="gupnp-service-proxy">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-service-proxy.c"
           line="10">#GUPnPServiceProxy sends commands to a remote UPnP service and handles
incoming event notifications. #GUPnPServiceProxy implements the
#GUPnPServiceInfo interface.</doc>
    </docsection>
    <docsection name="gupnp-types">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-types.c"
           line="11">These GTypes are used to marshal to and from string data to particular UPnP
types when invoking actions on a #GUPnPServiceProxy.</doc>
    </docsection>
    <docsection name="gupnp-xml-doc">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-xml-doc.c"
           line="13">GObject wrapper for xmlDoc, so that we can use refcounting and weak
references.</doc>
    </docsection>
    <function name="rootdevice_error_quark"
              c:identifier="gupnp_rootdevice_error_quark"
              moved-to="RootdeviceError.quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="server_error_quark"
              c:identifier="gupnp_server_error_quark"
              moved-to="ServerError.quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function-macro name="value_get_string"
                    c:identifier="gupnp_value_get_string"
                    introspectable="0">
      <source-position filename="libgupnp/gupnp-types.h" line="102"/>
      <parameters>
        <parameter name="value">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="value_get_xml_node"
                    c:identifier="gupnp_value_get_xml_node"
                    introspectable="0">
      <source-position filename="libgupnp/gupnp-types.h" line="99"/>
      <parameters>
        <parameter name="value">
        </parameter>
      </parameters>
    </function-macro>
    <function name="white_list_add_entry"
              c:identifier="gupnp_white_list_add_entry"
              version="0.20.5"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="108">Add @entry in the list of valid criteria used by @white_list to
filter networks.
if @entry already exists, it won't be added a second time.</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_add_entry() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="36"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-white-list.c"
             line="117">%TRUE if @entry is added, %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="white_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="110">A #GUPnPWhiteList</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </parameter>
        <parameter name="entry" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="111">A value used to filter network</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="white_list_add_entryv"
              c:identifier="gupnp_white_list_add_entryv"
              version="0.20.8"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="133">Add a list of entries to a #GUPnPWhiteList. This is a helper function to
directly add a %NULL-terminated array of string usually aquired from
commandline args.</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_add_entryv() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="39"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="white_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="135">A #GUPnPWhiteList</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </parameter>
        <parameter name="entries" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="136">A %NULL-terminated list of strings</doc>
          <array c:type="gchar**">
            <type name="utf8" c:type="gchar*"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="white_list_check_context"
              c:identifier="gupnp_white_list_check_context"
              version="0.20.5"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="219">It will check if the @context is allowed or not. The @white_list will check
all its entries againt #GUPnPContext interface, host ip and network fields
information. This function doesn't take into account the @white_list status
(enabled or not).</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_check_context() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="53"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-white-list.c"
             line="229">%TRUE if @context is matching the @white_list criterias,
%FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="white_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="221">A #GUPnPWhiteList</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </parameter>
        <parameter name="context" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="222">A #GUPnPContext to test.</doc>
          <type name="Context" c:type="GUPnPContext*"/>
        </parameter>
      </parameters>
    </function>
    <function name="white_list_clear"
              c:identifier="gupnp_white_list_clear"
              version="0.20.5"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="200">Remove all entries from #GList that compose the white list.
The list is now empty. Even if #GUPnPWhiteList is enabled, it will have the
same behavior as if it was disabled.</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_clear() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="50"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="white_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="202">A #GUPnPWhiteList</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </parameter>
      </parameters>
    </function>
    <function name="white_list_get_enabled"
              c:identifier="gupnp_white_list_get_enabled"
              version="0.20.5"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="70">Return the status of the #GUPnPWhiteList</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_get_enabled() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="30"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-white-list.c"
             line="76">%TRUE if @white_list is enabled, %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="white_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="72">A #GUPnPWhiteList</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </parameter>
      </parameters>
    </function>
    <function name="white_list_get_entries"
              c:identifier="gupnp_white_list_get_entries"
              version="0.20.5"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="179">Get the #GList of entries that compose the white list. Do not free</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_get_entries() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="47"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-white-list.c"
             line="185">a #GList of entries
used to filter networks, interfaces,... or %NULL.
Do not modify or free the list nor its elements.</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="utf8"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="white_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="181">A #GUPnPWhiteList</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </parameter>
      </parameters>
    </function>
    <function name="white_list_is_empty"
              c:identifier="gupnp_white_list_is_empty"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="89">Return the state of the entries list of #GUPnPWhiteList</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_is_empty() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="33"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-white-list.c"
             line="95">%TRUE if @white_list is empty, %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="white_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="91">A #GUPnPWhiteList</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </parameter>
      </parameters>
    </function>
    <function name="white_list_new"
              c:identifier="gupnp_white_list_new"
              version="0.20.5"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="35">Create a new #GUPnPWhiteList.
The white list is disabled by default.</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_new() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="23"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-white-list.c"
             line="41">A new #GUPnPWhiteList object.</doc>
        <type name="WhiteList" c:type="GUPnPWhiteList*"/>
      </return-value>
    </function>
    <function name="white_list_remove_entry"
              c:identifier="gupnp_white_list_remove_entry"
              version="0.20.5"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="155">Remove @entry in the list of valid criteria used by @white_list to
filter networks.</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_remove_entry() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="43"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="libgupnp/gupnp-white-list.c"
             line="163">%TRUE if @entry is removed, %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="white_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="157">A #GUPnPWhiteList</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </parameter>
        <parameter name="entry" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="158">A value to remove from the filter list.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="white_list_set_enabled"
              c:identifier="gupnp_white_list_set_enabled"
              deprecated="1"
              deprecated-version="1.4.0">
      <doc xml:space="preserve"
           filename="libgupnp/gupnp-white-list.c"
           line="52">Enable or disable the #GUPnPWhiteList to perform the network filtering.</doc>
      <doc-deprecated xml:space="preserve">Use gupnp_context_filter_set_enabled() instead.</doc-deprecated>
      <source-position filename="libgupnp/gupnp-white-list.h" line="26"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="white_list" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="54">A #GUPnPWhiteList</doc>
          <type name="WhiteList" c:type="GUPnPWhiteList*"/>
        </parameter>
        <parameter name="enable" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp/gupnp-white-list.c"
               line="55">%TRUE to enable @white_list, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="xml_error_quark"
              c:identifier="gupnp_xml_error_quark"
              moved-to="XMLError.quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
  </namespace>
</repository>
