<?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="Infinity" version="0.7"/>
  <include name="Infinityd" version="0.7"/>
  <package name="libinfinoted-plugin-manager-0.7"/>
  <namespace name="Infinoted"
             version="0.7"
             shared-library="libinfinoted-plugin-manager-0.7.so.0"
             c:identifier-prefixes="Infinoted"
             c:symbol-prefixes="infinoted">
    <function-macro name="IS_LOG"
                    c:identifier="INFINOTED_IS_LOG"
                    introspectable="0">
      <source-position filename="infinoted-log.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_LOG_CLASS"
                    c:identifier="INFINOTED_IS_LOG_CLASS"
                    introspectable="0">
      <source-position filename="infinoted-log.h" line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PLUGIN_MANAGER"
                    c:identifier="INFINOTED_IS_PLUGIN_MANAGER"
                    introspectable="0">
      <source-position filename="infinoted-plugin-manager.h" line="46"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PLUGIN_MANAGER_CLASS"
                    c:identifier="INFINOTED_IS_PLUGIN_MANAGER_CLASS"
                    introspectable="0">
      <source-position filename="infinoted-plugin-manager.h" line="47"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="LOG" c:identifier="INFINOTED_LOG" introspectable="0">
      <source-position filename="infinoted-log.h" line="28"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="LOG_CLASS"
                    c:identifier="INFINOTED_LOG_CLASS"
                    introspectable="0">
      <source-position filename="infinoted-log.h" line="29"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="LOG_GET_CLASS"
                    c:identifier="INFINOTED_LOG_GET_CLASS"
                    introspectable="0">
      <source-position filename="infinoted-log.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Log"
           c:symbol-prefix="log"
           c:type="InfinotedLog"
           parent="GObject.Object"
           glib:type-name="InfinotedLog"
           glib:get-type="infinoted_log_get_type"
           glib:type-struct="LogClass">
      <doc xml:space="preserve"
           filename="infinoted-log.h"
           line="55">#InfinotedLog is an opaque data type. You should only access it via the
public API functions.</doc>
      <source-position filename="infinoted-log.h" line="53"/>
      <constructor name="new" c:identifier="infinoted_log_new">
        <doc xml:space="preserve"
             filename="infinoted-log.c"
             line="362">Creates a new #InfinotedLog.</doc>
        <source-position filename="infinoted-log.h" line="70"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-log.c"
               line="367">A new #InfinotedLog. Free with g_object_unref()
when no longer needed.</doc>
          <type name="Log" c:type="InfinotedLog*"/>
        </return-value>
      </constructor>
      <virtual-method name="log_message">
        <doc xml:space="preserve"
             filename="infinoted-log.h"
             line="39">Default signal handler for the #InfinotedLog::log-message
signal.</doc>
        <source-position filename="infinoted-log.h" line="49"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="log" transfer-ownership="none">
            <type name="Log" c:type="InfinotedLog*"/>
          </instance-parameter>
          <parameter name="prio" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="depth" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="text" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="close" c:identifier="infinoted_log_close">
        <doc xml:space="preserve"
             filename="infinoted-log.c"
             line="434">Closes a #InfinotedLog object opened with infinoted_log_open(). After the
log was closed it can be opened again with a different file. The log is
closed automatically on destruction.</doc>
        <source-position filename="infinoted-log.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="log" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="436">A #InfinotedLog.</doc>
            <type name="Log" c:type="InfinotedLog*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="error"
              c:identifier="infinoted_log_error"
              introspectable="0">
        <doc xml:space="preserve"
             filename="infinoted-log.c"
             line="497">Logs an error message. If the server is daemonized, log to syslog,
otherwise log to stderr. If a logfile is given in the options when @log
was created, the logfile is written to as well.</doc>
        <source-position filename="infinoted-log.h" line="87"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="log" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="499">A #InfinotedLog.</doc>
            <type name="Log" c:type="InfinotedLog*"/>
          </instance-parameter>
          <parameter name="fmt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="500">A printf-style format string.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="501">Format arguments.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="info" c:identifier="infinoted_log_info" introspectable="0">
        <doc xml:space="preserve"
             filename="infinoted-log.c"
             line="539">Logs an info message. If the server is daemonized, log to syslog,
otherwise log to stderr. If a logfile is given in the options when @log
was created, the logfile is written to as well.</doc>
        <source-position filename="infinoted-log.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="log" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="541">A #InfinotedLog.</doc>
            <type name="Log" c:type="InfinotedLog*"/>
          </instance-parameter>
          <parameter name="fmt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="542">A printf-style format string.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="543">Format arguments.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="log" c:identifier="infinoted_log_log" introspectable="0">
        <doc xml:space="preserve"
             filename="infinoted-log.c"
             line="473">Logs a message with the given priority. The priority is one of %LOG_ERR,
%LOG_WARNING or %LOG_INFO.  If the server is daemonized, log to syslog,
otherwise log to stderr. If a logfile is given in the options when @log
was created, the logfile is written to as well.</doc>
        <source-position filename="infinoted-log.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="log" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="475">A #InfinotedLog.</doc>
            <type name="Log" c:type="InfinotedLog*"/>
          </instance-parameter>
          <parameter name="prio" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="476">Priority of the logged message.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="fmt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="477">A printf-style format string.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="478">Format arguments.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="open" c:identifier="infinoted_log_open" throws="1">
        <doc xml:space="preserve"
             filename="infinoted-log.c"
             line="377">Attempts to open the log file at the given path. If the log file could not
be opened the function returns %FALSE and @error is set. If the log file
exists already then new log messages will be appended.

If @path is %NULL no log file is opened and logging only occurs to stderr.</doc>
        <source-position filename="infinoted-log.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-log.c"
               line="390">%TRUE on success, or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="log" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="379">A #InfinotedLog.</doc>
            <type name="Log" c:type="InfinotedLog*"/>
          </instance-parameter>
          <parameter name="path"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="380">The path to the log file to write,
or %NULL.</doc>
            <type name="filename" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="warning"
              c:identifier="infinoted_log_warning"
              introspectable="0">
        <doc xml:space="preserve"
             filename="infinoted-log.c"
             line="518">Logs a warning message. If the server is daemonized, log to syslog,
otherwise log to stderr. If a logfile is given in the options when @log
was created, the logfile is written to as well.</doc>
        <source-position filename="infinoted-log.h" line="92"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="log" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="520">A #InfinotedLog.</doc>
            <type name="Log" c:type="InfinotedLog*"/>
          </instance-parameter>
          <parameter name="fmt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="521">A printf-style format string.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="522">Format arguments.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <property name="file-path"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="log-message" when="first">
        <doc xml:space="preserve"
             filename="infinoted-log.c"
             line="337">This signal is emitted when a new line of log message is written to the
log.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="prio" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="340">The priority of the logged message.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="depth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="341">The recursion depth of the logged message.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-log.c"
                 line="342">The logged message text.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="LogClass"
            c:type="InfinotedLogClass"
            glib:is-gtype-struct-for="Log">
      <doc xml:space="preserve"
           filename="infinoted-log.h"
           line="37">This structure contains default signal handlers for #InfinotedLog.</doc>
      <source-position filename="infinoted-log.h" line="53"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="log_message">
        <doc xml:space="preserve"
             filename="infinoted-log.h"
             line="39">Default signal handler for the #InfinotedLog::log-message
signal.</doc>
        <callback name="log_message">
          <source-position filename="infinoted-log.h" line="49"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="log" transfer-ownership="none">
              <type name="Log" c:type="InfinotedLog*"/>
            </parameter>
            <parameter name="prio" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="depth" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="text" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <function-macro name="PLUGIN_MANAGER"
                    c:identifier="INFINOTED_PLUGIN_MANAGER"
                    introspectable="0">
      <source-position filename="infinoted-plugin-manager.h" line="44"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PLUGIN_MANAGER_CLASS"
                    c:identifier="INFINOTED_PLUGIN_MANAGER_CLASS"
                    introspectable="0">
      <source-position filename="infinoted-plugin-manager.h" line="45"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PLUGIN_MANAGER_GET_CLASS"
                    c:identifier="INFINOTED_PLUGIN_MANAGER_GET_CLASS"
                    introspectable="0">
      <source-position filename="infinoted-plugin-manager.h" line="48"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <callback name="ParameterConvertFunc"
              c:type="InfinotedParameterConvertFunc"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.h"
           line="91">Definition of a parameter conversion function. A parameter conversion
function transforms the value of a read which is one of the
@InfinotedParameterValue enumeration to its final internal representation.
It can change the C type of the parameter, and it can also validate the
input and produce an error if the input value is invalid.

While plugin developers can write their own conversion functions, many are
already provided by libinfinoted-plugin-manager that cover the most basic
usecases. These functions are
infinoted_parameter_convert_string(),
infinoted_parameter_convert_string_list(),
infinoted_parameter_convert_filename(),
infinoted_parameter_convert_boolean(),
infinoted_parameter_convert_port(),
infinoted_parameter_convert_nonnegative(),
infinoted_parameter_convert_positive(),
infinoted_parameter_convert_security_policy() and
infinoted_parameter_convert_ip_address().</doc>
      <source-position filename="infinoted-parameter.h" line="118"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="116">%TRUE on success or %FALSE if an error occurred.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="infinoted-parameter.h"
               line="93">Location where the converted value should be written to.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="in"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="infinoted-parameter.h"
               line="94">Location where the original input value should be taken from.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="ParameterError"
                 c:type="InfinotedParameterError"
                 glib:error-domain="INFINOTED_PARAMETER_ERROR">
      <doc xml:space="preserve"
           filename="infinoted-parameter.h"
           line="153">Specifies the possible error conditions for errors in the
&lt;literal&gt;INFINOTED_PARAMETER_ERROR&lt;/literal&gt; domain. These typically
occur when parsing and processing input parameters for plugins.</doc>
      <source-position filename="infinoted-parameter.h" line="177"/>
      <member name="required"
              value="0"
              c:identifier="INFINOTED_PARAMETER_ERROR_REQUIRED">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="155">A parameter is required but was not
provided to the plugin.</doc>
      </member>
      <member name="invalid_number"
              value="1"
              c:identifier="INFINOTED_PARAMETER_ERROR_INVALID_NUMBER">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="157">The number given as a parameter
is not valid, for example a negative time interval.</doc>
      </member>
      <member name="invalid_flag"
              value="2"
              c:identifier="INFINOTED_PARAMETER_ERROR_INVALID_FLAG">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="159">The flag with the given name does
not exist.</doc>
      </member>
      <member name="invalid_security_policy"
              value="3"
              c:identifier="INFINOTED_PARAMETER_ERROR_INVALID_SECURITY_POLICY">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="161">A security policy given
as a parameter is not valid. The only allowed values are
&amp;quot;no-tls&amp;quot;, &amp;quot;allow-tls&amp;quot;, and &amp;quot;require-tls&amp;quot;.</doc>
      </member>
      <member name="invalid_ip_address"
              value="4"
              c:identifier="INFINOTED_PARAMETER_ERROR_INVALID_IP_ADDRESS">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="164">The value given as a
parameter is not a valid IP address.</doc>
      </member>
    </enumeration>
    <bitfield name="ParameterFlags" c:type="InfinotedParameterFlags">
      <doc xml:space="preserve"
           filename="infinoted-parameter.h"
           line="48">Additional flags for parameters that can be given to infinoted plugins.</doc>
      <source-position filename="infinoted-parameter.h" line="57"/>
      <member name="parameter_required"
              value="1"
              c:identifier="INFINOTED_PARAMETER_REQUIRED">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="50">The parameter is required and cannot be
omitted.</doc>
      </member>
    </bitfield>
    <record name="ParameterInfo" c:type="InfinotedParameterInfo">
      <doc xml:space="preserve"
           filename="infinoted-parameter.h"
           line="122">This structure contains generic information about a parameter that can
be passed to an infinoted plugin.</doc>
      <source-position filename="infinoted-parameter.h" line="151"/>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="124">The name of the parameter.</doc>
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="type" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="125">The input type of the parameter.</doc>
        <type name="ParameterType" c:type="InfinotedParameterType"/>
      </field>
      <field name="flags" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="126">Additional flags for the parameter.</doc>
        <type name="ParameterFlags" c:type="InfinotedParameterFlags"/>
      </field>
      <field name="offset" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="127">Offset of the output value in the structure of the plugin. Should
be determined with %G_STRUCT_OFFSET.</doc>
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="convert" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="129">The conversion function for the parameter, see
#InfinotedParameterConvertFunc.</doc>
        <type name="ParameterConvertFunc"
              c:type="InfinotedParameterConvertFunc"/>
      </field>
      <field name="short_name" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="131">A short name (one character) for the parameter, used for
command line option parsing.</doc>
        <type name="gchar" c:type="char"/>
      </field>
      <field name="description" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="133">A description for the parameter that can be shown in
&lt;literal&gt;--help&lt;/literal&gt; output</doc>
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="arg_description" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="135">A description for the argument of the parameter in
&lt;literal&gt;--help&lt;/literal&gt; output, if any.</doc>
        <type name="utf8" c:type="const char*"/>
      </field>
    </record>
    <enumeration name="ParameterType" c:type="InfinotedParameterType">
      <doc xml:space="preserve"
           filename="infinoted-parameter.h"
           line="32">Allowed types for a parameter that can be given to a infinoted plugin.</doc>
      <source-position filename="infinoted-parameter.h" line="46"/>
      <member name="boolean"
              value="0"
              c:identifier="INFINOTED_PARAMETER_BOOLEAN">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="34">A boolean parameter.</doc>
      </member>
      <member name="int" value="1" c:identifier="INFINOTED_PARAMETER_INT">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="35">A signed integer parameter.</doc>
      </member>
      <member name="string"
              value="2"
              c:identifier="INFINOTED_PARAMETER_STRING">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="36">A string parameter.</doc>
      </member>
      <member name="string_list"
              value="3"
              c:identifier="INFINOTED_PARAMETER_STRING_LIST">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="37">An array of strings.</doc>
      </member>
    </enumeration>
    <record name="ParameterTypedValue"
            c:type="InfinotedParameterTypedValue"
            glib:type-name="InfinotedParameterTypedValue"
            glib:get-type="infinoted_parameter_typed_value_get_type"
            c:symbol-prefix="parameter_typed_value">
      <doc xml:space="preserve"
           filename="infinoted-parameter.h"
           line="77">Holds the type and value of a parameter that can be passed to an
infinoted plugin.</doc>
      <source-position filename="infinoted-parameter.h" line="89"/>
      <field name="type" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="79">The type of the parameter.</doc>
        <type name="ParameterType" c:type="InfinotedParameterType"/>
      </field>
      <field name="value" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="80">The value of the parameter.</doc>
        <type name="ParameterValue" c:type="InfinotedParameterValue"/>
      </field>
      <constructor name="new"
                   c:identifier="infinoted_parameter_typed_value_new">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="188">Creates a new instance of a @InfinotedParameterTypedValue. The new instance
will be uninitialized. Its @type and @value members need to be set before
the object can be used or given to infinoted_parameter_typed_value_free().</doc>
        <source-position filename="infinoted-parameter.h" line="186"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="195">A new #InfinotedParameterTypedValue. Free with
infinoted_parameter_typed_value_free() when no longer needed.</doc>
          <type name="ParameterTypedValue"
                c:type="InfinotedParameterTypedValue*"/>
        </return-value>
      </constructor>
      <method name="copy" c:identifier="infinoted_parameter_typed_value_copy">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="204">Makes a dynamically allocated copy of @val.</doc>
        <source-position filename="infinoted-parameter.h" line="189"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="210">A new #InfinotedParameterTypedValue. Free with
infinoted_parameter_typed_value_free() when no longer needed.</doc>
          <type name="ParameterTypedValue"
                c:type="InfinotedParameterTypedValue*"/>
        </return-value>
        <parameters>
          <instance-parameter name="val" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-parameter.c"
                 line="206">The value to copy.</doc>
            <type name="ParameterTypedValue"
                  c:type="const InfinotedParameterTypedValue*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="free"
                c:identifier="infinoted_parameter_typed_value_free">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="242">Frees an instance of #InfinotedParameterTypedValue. Formally the argument
is kept as a generic pointer so that this function can be used as a
#GDestroyNotify callback.

Note that the #InfinotedParameterTypedValue needs to be correctly
initialized, i.e. its type must be set, before it can be freed.</doc>
        <source-position filename="infinoted-parameter.h" line="192"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="infinoted-parameter.c"
                 line="244">The #InfinotedParameterTypedValue to free.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <union name="ParameterValue" c:type="InfinotedParameterValue">
      <doc xml:space="preserve"
           filename="infinoted-parameter.h"
           line="59">Holds the value of a infinoted parameter. The type of the parameter must
be known. See also #InfinotedParameterTypedValue.</doc>
      <source-position filename="infinoted-parameter.h" line="75"/>
      <field name="yesno" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="61">The parameter value for type %INFINOTED_PARAMETER_BOOLEAN.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="number" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="62">The parameter value for type %INFINOTED_PARAMETER_INT.</doc>
        <type name="gint" c:type="gint"/>
      </field>
      <field name="str" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="63">The parameter value for type %INFINOTED_PARAMETER_STRING.</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="strv" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-parameter.h"
             line="64">The parameter value for type %INFINOTED_PARAMETER_STRING_LIST.</doc>
        <type name="utf8" c:type="gchar**"/>
      </field>
    </union>
    <record name="Plugin" c:type="InfinotedPlugin">
      <doc xml:space="preserve"
           filename="infinoted-plugin-manager.h"
           line="53">Declares a InfinotedPlugin. If an instance of this structure is called
&lt;literal&gt;INFINOTED_PLUGIN&lt;/literal&gt; and exported from a shared object, it
can be loaded as a plugin by infinoted.</doc>
      <source-position filename="infinoted-plugin-manager.h" line="139"/>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="55">The name of the plugin. The filename of the shared object should
be &lt;literal&gt;libinfinoted-plugin-&lt;emphasis&gt;&amp;lt;name&amp;gt;&lt;/emphasis&gt;&lt;/literal&gt;.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="description" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="57">A human-readable description of what the plugin does.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="options" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="58">A 0-terminated list of plugin parameters. The parameters are
provided to the plugin via the infinoted configuration file or the command
line. The last element of the list must have the @name field set to %NULL.</doc>
        <type name="ParameterInfo" c:type="const InfinotedParameterInfo*"/>
      </field>
      <field name="info_size" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="61">The size of the plugin instance structure. When the plugin
is instantiated, this amount of memory will be allocated for the plugin
instance. This field must be different from 0.</doc>
        <type name="gsize" c:type="gsize"/>
      </field>
      <field name="connection_info_size" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="64">The size of the plugin's connection info structure.
For each plugin instance, this amount of memory will be allocated for each
connection of the server. The plugin can use it to store
connection-specific data. This field can be 0.</doc>
        <type name="gsize" c:type="gsize"/>
      </field>
      <field name="session_info_size" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="68">The size of the plugin's session info structure. For
each plugin instance, this amount of memory will be allocated for each
session that is currently active on the server. The plugin can use it to
store session-specific data. This field can be 0.</doc>
        <type name="gsize" c:type="gsize"/>
      </field>
      <field name="session_type" writable="1">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="72">If non-%NULL, specifies the session type handled by the
plugin. Only for sessions of this type or a derived type a session info
structure is allocated. The @on_session_added and @on_session_removed
callbacks are always made, independent of this field.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="on_info_initialize">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="76">Function called after the plugin has been
instantiated. It should initialize all fields of the plugin instance
to a sane default value.</doc>
        <callback name="on_info_initialize">
          <source-position filename="infinoted-plugin-manager.h" line="114"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="on_initialize">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="79">Function called to initialize the plugin. The function can
return %FALSE and set the @error parameter to prevent the plugin from
being used. The server will not be started in this case. Even if this
function returns %FALSE, @on_deinitialize will be called on the plugin to
clean up partly constructed plugin data by this function.</doc>
        <callback name="on_initialize" throws="1">
          <source-position filename="infinoted-plugin-manager.h" line="116"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="manager" transfer-ownership="none">
              <type name="PluginManager" c:type="InfinotedPluginManager*"/>
            </parameter>
            <parameter name="plugin_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="on_deinitialize">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="84">Function called when the plugin is unloaded. Should clean
up all resources the plugin has allocated.</doc>
        <callback name="on_deinitialize">
          <source-position filename="infinoted-plugin-manager.h" line="120"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="plugin_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="on_connection_added">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="86">Function called when there is a new connection to the
server. It is also called for all existing connections at the time the
plugin is loaded.</doc>
        <callback name="on_connection_added">
          <source-position filename="infinoted-plugin-manager.h" line="122"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="connection" transfer-ownership="none">
              <type name="Infinity.XmlConnection" c:type="InfXmlConnection*"/>
            </parameter>
            <parameter name="plugin_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="connection_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="on_connection_removed">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="89">Function called when a client connection has been
dropped. It is also called for all existing connections right before the
plugin is unloaded.</doc>
        <callback name="on_connection_removed">
          <source-position filename="infinoted-plugin-manager.h" line="126"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="connection" transfer-ownership="none">
              <type name="Infinity.XmlConnection" c:type="InfXmlConnection*"/>
            </parameter>
            <parameter name="plugin_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="connection_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="on_session_added">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="92">Function called when a new session has become active on
the server. It is also called for all existing sessions at the time the
plugin is loaded.</doc>
        <callback name="on_session_added">
          <source-position filename="infinoted-plugin-manager.h" line="130"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="iter" transfer-ownership="none">
              <type name="Infinity.BrowserIter"
                    c:type="const InfBrowserIter*"/>
            </parameter>
            <parameter name="proxy" transfer-ownership="none">
              <type name="Infinity.SessionProxy" c:type="InfSessionProxy*"/>
            </parameter>
            <parameter name="plugin_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="session_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="on_session_removed">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="95">Function called when a session has become inactive and
the server is freeing resources allocated to it. It is also called for all
existing sessions right before the plugin is unloaded.</doc>
        <callback name="on_session_removed">
          <source-position filename="infinoted-plugin-manager.h" line="135"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="iter" transfer-ownership="none">
              <type name="Infinity.BrowserIter"
                    c:type="const InfBrowserIter*"/>
            </parameter>
            <parameter name="proxy" transfer-ownership="none">
              <type name="Infinity.SessionProxy" c:type="InfSessionProxy*"/>
            </parameter>
            <parameter name="plugin_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="session_info" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="PluginManager"
           c:symbol-prefix="plugin_manager"
           c:type="InfinotedPluginManager"
           parent="GObject.Object"
           glib:type-name="InfinotedPluginManager"
           glib:get-type="infinoted_plugin_manager_get_type"
           glib:type-struct="PluginManagerClass">
      <doc xml:space="preserve"
           filename="infinoted-plugin-manager.h"
           line="151">#InfinotedPluginManager is an opaque data type. You should only access it
via the public API functions.</doc>
      <source-position filename="infinoted-plugin-manager.h" line="149"/>
      <constructor name="new" c:identifier="infinoted_plugin_manager_new">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.c"
             line="916">Creates a new #InfinotedPluginManager with the given directory, log
and credentials. These three objects will be available for plugins
to enhance the infinoted functionality. Plugins can be loaded
with infinoted_plugin_manager_load().</doc>
        <source-position filename="infinoted-plugin-manager.h" line="182"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-plugin-manager.c"
               line="928">A new #InfinotedPluginManager.</doc>
          <type name="PluginManager" c:type="InfinotedPluginManager*"/>
        </return-value>
        <parameters>
          <parameter name="directory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="918">The #InfdDirectory on which plugins should operate.</doc>
            <type name="Infinityd.Directory" c:type="InfdDirectory*"/>
          </parameter>
          <parameter name="log" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="919">The #InfinotedLog to write log messages to.</doc>
            <type name="Log" c:type="InfinotedLog*"/>
          </parameter>
          <parameter name="creds"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="920">The #InfCertificateCredentials used to secure data
transfer with the clients, or %NULL.</doc>
            <type name="Infinity.CertificateCredentials"
                  c:type="InfCertificateCredentials*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="error_quark"
                c:identifier="infinoted_plugin_manager_error_quark">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.c"
             line="1098">Returns the #GQuark for errors from the InfinotedPluginManager module.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-plugin-manager.c"
               line="1103">The error domain for the InfinotedPluginManager module.</doc>
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <method name="get_connection_info"
              c:identifier="infinoted_plugin_manager_get_connection_info">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.c"
             line="1111">Queries the connection-specfic plugin data for the plugin instance
@plugin_info. Returns %NULL if no such object exists, i.e. when the
plugin's @connection_info_size is set to 0.</doc>
        <source-position filename="infinoted-plugin-manager.h" line="209"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="infinoted-plugin-manager.c"
               line="1121">A pointer to the connection-specific
plugin data, or %NULL.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="mgr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1113">A #InfinotedPluginManager.</doc>
            <type name="PluginManager" c:type="InfinotedPluginManager*"/>
          </instance-parameter>
          <parameter name="plugin_info"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1114">The @plugin_info pointer of a plugin instance.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1115">The #InfXmlConnection for which to retrieve plugin data.</doc>
            <type name="Infinity.XmlConnection" c:type="InfXmlConnection*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_credentials"
              c:identifier="infinoted_plugin_manager_get_credentials"
              glib:get-property="credentials">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.c"
             line="1081">Returns the #InfCertificateCredentials used for securing the data transfer
with all clients.</doc>
        <source-position filename="infinoted-plugin-manager.h" line="203"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-plugin-manager.c"
               line="1088">A #InfCertificateCredentials object owned by the
plugin manager.</doc>
          <type name="Infinity.CertificateCredentials"
                c:type="InfCertificateCredentials*"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1083">A #InfinotedPluginManager.</doc>
            <type name="PluginManager" c:type="InfinotedPluginManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_directory"
              c:identifier="infinoted_plugin_manager_get_directory"
              glib:get-property="directory">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.c"
             line="1031">Returns the #InfdDirectory used by the plugin manager.</doc>
        <source-position filename="infinoted-plugin-manager.h" line="194"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-plugin-manager.c"
               line="1037">A #InfdDirectory owned by the plugin manager.</doc>
          <type name="Infinityd.Directory" c:type="InfdDirectory*"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1033">A #InfinotedPluginManager.</doc>
            <type name="PluginManager" c:type="InfinotedPluginManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_io" c:identifier="infinoted_plugin_manager_get_io">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.c"
             line="1046">Returns the #InfIo of the #InfdDirectory used by the plugin manager.</doc>
        <source-position filename="infinoted-plugin-manager.h" line="197"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-plugin-manager.c"
               line="1052">A #InfIo owned by the plugin manager.</doc>
          <type name="Infinity.Io" c:type="InfIo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1048">A #InfinotedPluginManager.</doc>
            <type name="PluginManager" c:type="InfinotedPluginManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_log"
              c:identifier="infinoted_plugin_manager_get_log"
              glib:get-property="log">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.c"
             line="1065">Returns the #InfinotedLog that the plugin manager and the plugins do
write log messages to.</doc>
        <source-position filename="infinoted-plugin-manager.h" line="200"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-plugin-manager.c"
               line="1072">A #InfinotedLog owned by the plugin manager.</doc>
          <type name="Log" c:type="InfinotedLog*"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1067">A #InfinotedPluginManager.</doc>
            <type name="PluginManager" c:type="InfinotedPluginManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_session_info"
              c:identifier="infinoted_plugin_manager_get_session_info">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.c"
             line="1142">Queries the session-specfic plugin data for the plugin instance
@plugin_info. Returns %NULL if no such object exists, i.e. when the
plugin's @session_info_size is set to 0.</doc>
        <source-position filename="infinoted-plugin-manager.h" line="214"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="infinoted-plugin-manager.c"
               line="1152">A pointer to the session-specific
plugin data, or %NULL.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="mgr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1144">A #InfinotedPluginManager.</doc>
            <type name="PluginManager" c:type="InfinotedPluginManager*"/>
          </instance-parameter>
          <parameter name="plugin_info"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1145">The @plugin_info pointer of a plugin instance.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="1146">The #InfSessionProxy for which to retrieve plugin data.</doc>
            <type name="Infinity.SessionProxy" c:type="InfSessionProxy*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load"
              c:identifier="infinoted_plugin_manager_load"
              throws="1">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.c"
             line="951">Loads all plugins specified in @plugins from the location at @plugin_path.
If loading one of the module fails the function sets @error and returns
%FALSE, and the object ends up with no plugins loaded. If @plugins is
%NULL, no plugins are loaded.

If this function is called while there are already plugins loaded, all
existing plugins are unloaded first.</doc>
        <source-position filename="infinoted-plugin-manager.h" line="187"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-plugin-manager.c"
               line="968">%TRUE on success or %FALSE on error.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="953">A #InfinotedPluginManager.</doc>
            <type name="PluginManager" c:type="InfinotedPluginManager*"/>
          </instance-parameter>
          <parameter name="plugin_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="954">The path from which to load plugins.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="plugins"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="955">A list of plugins to
load, or %NULL.</doc>
            <array c:type="const gchar* const*">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="infinoted-plugin-manager.c"
                 line="957">A #GKeyFile with configuration options for the plugins.</doc>
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
        </parameters>
      </method>
      <property name="credentials"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_credentials">
        <type name="Infinity.CertificateCredentials"/>
      </property>
      <property name="directory"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_directory">
        <type name="Infinityd.Directory"/>
      </property>
      <property name="log"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_log">
        <type name="Log"/>
      </property>
      <property name="path" transfer-ownership="none" default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="PluginManagerClass"
            c:type="InfinotedPluginManagerClass"
            glib:is-gtype-struct-for="PluginManager">
      <doc xml:space="preserve"
           filename="infinoted-plugin-manager.h"
           line="141">This structure does not contain any public fields.</doc>
      <source-position filename="infinoted-plugin-manager.h" line="149"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="PluginManagerError"
                 c:type="InfinotedPluginManagerError">
      <doc xml:space="preserve"
           filename="infinoted-plugin-manager.h"
           line="162">Error codes for the &lt;literal&gt;INFINOTED_PLUGIN_MANAGER_ERROR&lt;/literal&gt;
error domain. These errors can occur when loading a plugin with
infinoted_plugin_manager_load().</doc>
      <source-position filename="infinoted-plugin-manager.h" line="176"/>
      <member name="open_failed"
              value="0"
              c:identifier="INFINOTED_PLUGIN_MANAGER_ERROR_OPEN_FAILED">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="164">Failed to open the code module
of a plugin.</doc>
      </member>
      <member name="no_entry_point"
              value="1"
              c:identifier="INFINOTED_PLUGIN_MANAGER_ERROR_NO_ENTRY_POINT">
        <doc xml:space="preserve"
             filename="infinoted-plugin-manager.h"
             line="166">The code module of a plugin
does not provide the &lt;literal&gt;INFINOTED_PLUGIN&lt;/literal&gt; symbol.</doc>
      </member>
    </enumeration>
    <docsection name="infinoted-log">
      <doc xml:space="preserve"
           filename="infinoted-log.c"
           line="20">#InfinotedLog manages a message log. Messages can be written to the log
either as informational, warning and error messages. If the log was
successfully opened, also a glib logging handler is installed which
redirects glib logging to this class. Log output is always shown on
stderr and, optionally, can be duplicated to a file as well.</doc>
    </docsection>
    <docsection name="infinoted-parameter">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="20">The #InfinotedParameterInfo structure allows to declare a parameter that
can then be used as an input value to a plugin. While the types for input
data are limited, the mechanism allows to provide a powerful validation and
transformation function which can turn the input value to the final
internal representation in the plugin data structure.

Parameters are declared by providing a #InfinotedParameterInfo structure,
and an array of such structures is then given to #InfinotedPlugin which
declares a plugin.</doc>
    </docsection>
    <docsection name="infinoted-plugin-manager">
      <doc xml:space="preserve"
           filename="infinoted-plugin-manager.c"
           line="20">#InfinotedPluginManager handles the loading of plugins for the infinoted
server. It initializes and deinitializes plugins, and it makes callbacks
when connections or sessions are added or removed. Furthermore, it provides
an interface for plugins to obtain and interact with the server itself,
most notable its #InfdDirectory instance.</doc>
    </docsection>
    <docsection name="infinoted-util">
      <doc xml:space="preserve"
           filename="infinoted-util.c"
           line="20">This section contains a few helper functions that are used in the
infinoted implementation and are exposed to the plugin interface for
convenience of plugin developers.</doc>
    </docsection>
    <function name="parameter_convert_boolean"
              c:identifier="infinoted_parameter_convert_boolean"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="460">This function simply writes the boolean value from @in to @out without any
further validation.

This is a #InfinotedParameterConvertFunc function that can be used for
boolean values.</doc>
      <source-position filename="infinoted-parameter.h" line="217"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="472">This function always returns %TRUE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="462">The pointer to the output #gboolean.</doc>
          <type name="gboolean" c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="463">The pointer to the input #gboolean.</doc>
          <type name="gboolean" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_convert_filename"
              c:identifier="infinoted_parameter_convert_filename"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="416">This function converts the input string from UTF-8
to the Glib file name encoding.

This is a #InfinotedParameterConvertFunc function that can be used for
strings that should be in Glib file name encoding format instead of
UTF-8.</doc>
      <source-position filename="infinoted-parameter.h" line="212"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="429">%TRUE on success, or %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="418">The pointer to the output string location.</doc>
          <type name="utf8" c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="419">A pointer to the input string location.</doc>
          <type name="utf8" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_convert_flags"
              c:identifier="infinoted_parameter_convert_flags"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="708">Converts the string list that @in points to to a bitmask. This function
can not directly be used as a convert function as expected by
#InfinotedParameterInfo since it has an additional argument. However, an
actual convert function can make use of this function.

Each string entry is interpreted as a value of a bitmask. The @values
list specifies which string constant corresponds to which flag value.</doc>
      <source-position filename="infinoted-parameter.h" line="242"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="724">%TRUE on success, or %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="710">The pointer to the output flags (a #gint).</doc>
          <type name="gint" c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="711">The pointer to the
input string list.</doc>
          <array c:type="gpointer">
            <type name="utf8" c:type="gpointer"/>
          </array>
        </parameter>
        <parameter name="values" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="713">Allowed flag values.</doc>
          <type name="GObject.FlagsValue" c:type="const GFlagsValue*"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_convert_ip_address"
              c:identifier="infinoted_parameter_convert_ip_address"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="527">Converts the string that @in points to to an #InfIpAddress* value. If the
string can not be converted to an IP address, the functions fails and @error
is set.

This is a #InfinotedParameterConvertFunc function that can be used for
fields of type #InfIpAddress*.</doc>
      <source-position filename="infinoted-parameter.h" line="248"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="541">%TRUE on success, or %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="529">The pointer to the output #InfIpAddress
location.</doc>
          <type name="Infinity.IpAddress" c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="531">The pointer to the input string location.</doc>
          <type name="utf8" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_convert_nonnegative"
              c:identifier="infinoted_parameter_convert_nonnegative"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="573">This function validates the input number to be non-negative, and
converts it into an unsigned integer.

This is a #InfinotedParameterConvertFunc function that can be used for
any non-negative numbers.</doc>
      <source-position filename="infinoted-parameter.h" line="227"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="585">%TRUE on success, or %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="575">The pointer to the output #guint.</doc>
          <type name="guint" c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="576">The pointer to the input #gint.</doc>
          <type name="gint" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_convert_port"
              c:identifier="infinoted_parameter_convert_port"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="485">This function validates the input number to be in the valid range for
TCP or UDP ports between 1 and 65535, and converts it to an unsigned
integer.

This is a #InfinotedParameterConvertFunc function that can be used for
TCP or UDP port numbers.</doc>
      <source-position filename="infinoted-parameter.h" line="222"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="498">%TRUE on success, or %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="487">The pointer to the output #guint.</doc>
          <type name="guint" c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="488">The pointer to the input #gint.</doc>
          <type name="gint" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_convert_positive"
              c:identifier="infinoted_parameter_convert_positive"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="612">This function validates the input number to be positve, i.e. greater than
zero, and converts it into an unsigned integer.

This is a #InfinotedParameterConvertFunc function that can be used for
any non-negative numbers.</doc>
      <source-position filename="infinoted-parameter.h" line="232"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="624">%TRUE on success, or %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="614">The pointer to the output #guint.</doc>
          <type name="guint" c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="615">The pointer to the input #gint.</doc>
          <type name="gint" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_convert_security_policy"
              c:identifier="infinoted_parameter_convert_security_policy"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="651">Converts the string that @in points to to an
#InfXmppConnectionSecurityPolicy value, by requiring that it is either
"no-tls", "allow-tls" or "require-tls". If the string is none of these
three the function fails and @error is set.

This is a #InfinotedParameterConvertFunc function that can be used for
fields of type #InfXmppConnectionSecurityPolicy.</doc>
      <source-position filename="infinoted-parameter.h" line="237"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="666">%TRUE on success, or %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="653">The pointer to the
output #InfXmppConnectionSecurityPolicy.</doc>
          <type name="Infinity.XmppConnectionSecurityPolicy"
                c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="655">The pointer to the input string location.</doc>
          <type name="utf8" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_convert_string"
              c:identifier="infinoted_parameter_convert_string"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="316">This is basically a no-op, moving the string from the @in location to the
@out location. In case @in points to the empty string, it is freed and the
output string is set to be %NULL.

This is a #InfinotedParameterConvertFunc function that can be used for
strings that should not be processed further or validated.</doc>
      <source-position filename="infinoted-parameter.h" line="202"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="329">This function always returns %TRUE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="318">The pointer to the output string location.</doc>
          <type name="utf8" c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="319">A pointer to the input string location.</doc>
          <type name="utf8" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_convert_string_list"
              c:identifier="infinoted_parameter_convert_string_list"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="359">This is basically a no-op, moving the string list from the @in location to
the @out location. In case @in points to an empty string list, or to a
string list with only one entry which is the empty string, then the string
list is freed and the output string list is set to be %NULL.

This is a #InfinotedParameterConvertFunc function that can be used for
string lists that should not be processed further or validated.</doc>
      <source-position filename="infinoted-parameter.h" line="207"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="373">This function always returns %TRUE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="361">The pointer to the output string list.</doc>
          <type name="utf8" c:type="gpointer"/>
        </parameter>
        <parameter name="in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="362">The pointer to the input string list.</doc>
          <array c:type="gpointer">
            <type name="utf8" c:type="gpointer"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_error_quark"
              c:identifier="infinoted_parameter_error_quark">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="175">Returns the #GQuark for errors from the InfinotedParameter module.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="180">The error domain for the InfinotedParameter module.</doc>
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="parameter_load_from_key_file"
              c:identifier="infinoted_parameter_load_from_key_file"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="263">Attempts to read each parameter in @infos from @key_file and store them in
a user-specified structure @base. The @offset field of
#InfinotedParameterInfo specifies where inside @base the read parameter
value will be written, and the @convert field specifies a function which
converts the parameter type (integer, string or string list) into the
type of the field in the target structure.

If the key file does not have an entry for one of the entries in @infos,
then the current value in the base structure is untouched. This allows
setting default values prior to calling this function.

If the function fails, for example because the conversion into the target
type failed (which, in turn, might be due to invalid user input), %FALSE
is returned and @error is set.</doc>
      <source-position filename="infinoted-parameter.h" line="195"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-parameter.c"
             line="287">%TRUE on success, otherwise %FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="infos" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="265">A 0-terminated array of
#InfinotedParameterInfo objects.</doc>
          <array c:type="const InfinotedParameterInfo*">
            <type name="ParameterInfo" c:type="InfinotedParameterInfo"/>
          </array>
        </parameter>
        <parameter name="key_file" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="267">The #GKeyFile to load parameter values from.</doc>
          <type name="GLib.KeyFile" c:type="GKeyFile*"/>
        </parameter>
        <parameter name="group" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="268">The keyfile group to load the values from.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="base"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="269">The instance into which to write the read parameters.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="parameter_typed_value_free"
              c:identifier="infinoted_parameter_typed_value_free"
              moved-to="ParameterTypedValue.free">
      <doc xml:space="preserve"
           filename="infinoted-parameter.c"
           line="242">Frees an instance of #InfinotedParameterTypedValue. Formally the argument
is kept as a generic pointer so that this function can be used as a
#GDestroyNotify callback.

Note that the #InfinotedParameterTypedValue needs to be correctly
initialized, i.e. its type must be set, before it can be freed.</doc>
      <source-position filename="infinoted-parameter.h" line="192"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="infinoted-parameter.c"
               line="244">The #InfinotedParameterTypedValue to free.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_create_dirname"
              c:identifier="infinoted_util_create_dirname"
              throws="1">
      <doc xml:space="preserve"
           filename="infinoted-util.c"
           line="74">Creates directories leading to the given path. Does not create a directory
for the last component of the path, assuming that it is a filename that
you are going to write into that directory later.</doc>
      <source-position filename="infinoted-util.h" line="30"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-util.c"
             line="83">%TRUE on success, or %FALSE on error in which case @error is set.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-util.c"
               line="76">The filename to create a path to.</doc>
          <type name="filename" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_daemon_pid_file_kill"
              c:identifier="infinoted_util_daemon_pid_file_kill">
      <doc xml:space="preserve"
           filename="infinoted-util.c"
           line="163">This is a thin wrapper for &lt;function&gt;daemon_pid_file_kill()&lt;/function&gt;
which uses &lt;function&gt;daemon_pid_file_kill_wait()&lt;/function&gt; if available
with a timeout of 5 seconds.</doc>
      <source-position filename="infinoted-util.h" line="45"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="infinoted-util.c"
             line="171">0 if the signal was sent or nonzero otherwise.</doc>
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="sig" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-util.c"
               line="165">The signal to send to the daemon process.</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_daemon_set_global_pid_file_proc"
              c:identifier="infinoted_util_daemon_set_global_pid_file_proc">
      <doc xml:space="preserve"
           filename="infinoted-util.c"
           line="136">When attempting to read or write the PID file use the global file.</doc>
      <source-position filename="infinoted-util.h" line="39"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="util_daemon_set_local_pid_file_proc"
              c:identifier="infinoted_util_daemon_set_local_pid_file_proc">
      <doc xml:space="preserve"
           filename="infinoted-util.c"
           line="149">When attempting to read or write the PID file use the local file which is
in the owner's home directory.</doc>
      <source-position filename="infinoted-util.h" line="42"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="util_set_errno_error"
              c:identifier="infinoted_util_set_errno_error">
      <doc xml:space="preserve"
           filename="infinoted-util.c"
           line="99">Sets @error to @save_errno with domain ERRNO_ERROR. If @prefix is
non-%NULL, @prefix is prefixed to @error's message, obtained by strerror().</doc>
      <source-position filename="infinoted-util.h" line="34"/>
      <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="infinoted-util.c"
               line="101">A pointer to a #GError pointer, or %NULL.</doc>
          <type name="GLib.Error" c:type="GError**"/>
        </parameter>
        <parameter name="save_errno" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="infinoted-util.c"
               line="102">An errno variable.</doc>
          <type name="gint" c:type="int"/>
        </parameter>
        <parameter name="prefix"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="infinoted-util.c"
               line="103">A prefix string, or %NULL.</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
