DBus GLib low level

## DBus GLib low level DBus GLib low level — DBus lower level functions |

## Stability Level

Unstable, unless otherwise indicated

## Synopsis

    void                dbus_set_g_error                    (GError **gerror,
                                                             DBusError *derror);
    void                dbus_connection_setup_with_g_main   (DBusConnection *connection,
                                                             GMainContext *context);
    void                dbus_server_setup_with_g_main       (DBusServer *server,
                                                             GMainContext *context);

## Description

These functions can be used to access lower level of DBus.

## Details

### dbus_set_g_error ()

    void                dbus_set_g_error                    (GError **gerror,
                                                             DBusError *derror);

Store the information from a DBus method error return into a GError. For the normal case of an arbitrary remote process, the error code will be DBUS_GERROR_REMOTE_EXCEPTION. Now, DBus errors have two components; a message and a "name". The former is an arbitrary (normally American English) string. The second is a string like com.example.FooFailure which programs can use as a conditional source. Because a GError only has one string, we use a hack to encode both values:

<human readable string><null><error name><null>

You can use the following code to retrieve both values:

    1
    2
    3
    const char *msg = error->message;
    size_t len = strlen(msg);
    const char *error_name = msg+len+1;

`gerror` : | an error
`derror` : |

### dbus_connection_setup_with_g_main ()

    void                dbus_connection_setup_with_g_main   (DBusConnection *connection,
                                                             GMainContext *context);

Sets the watch and timeout functions of a DBusConnection to integrate the connection with the GLib main loop. Pass in NULL for the GMainContext unless you're doing something specialized.

If called twice for the same context, does nothing the second time. If called once with context A and once with context B, context B replaces context A as the context monitoring the connection.

`connection` : | the connection
`context` : | the GMainContext or NULL for default context

### dbus_server_setup_with_g_main ()

    void                dbus_server_setup_with_g_main       (DBusServer *server,
                                                             GMainContext *context);

Sets the watch and timeout functions of a DBusServer to integrate the server with the GLib main loop. In most cases the context argument should be NULL.

If called twice for the same context, does nothing the second time. If called once with context A and once with context B, context B replaces context A as the context monitoring the connection.

`server` : | the server
`context` : | the GMainContext or NULL for default