## D-BUS Utility Functions D-BUS Utility Functions — D-BUS utility functions. |

## Synopsis

    #define     GALAGO_DBUS_SERVICE
    #define     GALAGO_DBUS_ERROR_INVALID_ATTRIBUTE
    #define     GALAGO_DBUS_ERROR_OBJECT_NOT_FOUND
    void        galago_dbus_message_iter_append_string_or_nil
                                                (DBusMessageIter *iter,
                                                 const char *str);
    const char* galago_dbus_message_iter_get_string_or_nil
                                                (DBusMessageIter *iter);
    void        galago_dbus_message_iter_append_object
                                                (DBusMessageIter *iter,
                                                 const GalagoObject *object);
    void        galago_dbus_message_iter_append_object_list
                                                (DBusMessageIter *iter,
                                                 GType type,
                                                 GList *list);
    void*       galago_dbus_message_iter_get_object
                                                (DBusMessageIter *iter,
                                                 GType type);
    GList*      galago_dbus_message_iter_get_object_list
                                                (DBusMessageIter *iter,
                                                 GType type);
    DBusMessage* galago_dbus_message_new_method_call
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 gboolean reply,
                                                 DBusMessageIter *ret_iter);
    DBusMessage* galago_dbus_message_new_method_call_vargs
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 gboolean reply,
                                                 va_list args);
    DBusMessage* galago_dbus_message_new_method_call_args
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 gboolean reply,
                                                 ...);
    void        galago_dbus_send_message        (const GalagoObject *object,
                                                 const char *name,
                                                 ...);
    GList*      galago_dbus_send_message_with_reply_list
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 GList *return_types,
                                                 ...);
    void*       galago_dbus_send_message_with_reply
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 GalagoValue *return_type,
                                                 ...);
    void        galago_dbus_object_push_full    (GalagoObject *object);

## Description

A set of Galago-specific utility functions for working with D-BUS. These functions should be considered semi-public, but are expected to change in time.

## Details

### GALAGO_DBUS_SERVICE

    #define     GALAGO_DBUS_SERVICE

The Galago D-BUS service.

### GALAGO_DBUS_ERROR_INVALID_ATTRIBUTE

    #define     GALAGO_DBUS_ERROR_INVALID_ATTRIBUTE

An "Invalid Attribute" D-BUS message error.

### GALAGO_DBUS_ERROR_OBJECT_NOT_FOUND

    #define     GALAGO_DBUS_ERROR_OBJECT_NOT_FOUND

An "Object Not Found" D-BUS message error.

### galago_dbus_message_iter_append_string_or_nil ()

    void        galago_dbus_message_iter_append_string_or_nil
                                                (DBusMessageIter *iter,
                                                 const char *str);

Appends a string to a message, or an empty string if the passed string is NULL.

`iter` : | The message iterator.
`str` : | The string, or NULL.

### galago_dbus_message_iter_get_string_or_nil ()

    const char* galago_dbus_message_iter_get_string_or_nil
                                                (DBusMessageIter *iter);

Returns a string that the iterator points to. If the returned string is an empty string (""), this returns NULL.

`iter` : | The iterator.
Returns : | The string or NULL.

### galago_dbus_message_iter_append_object ()

    void        galago_dbus_message_iter_append_object
                                                (DBusMessageIter *iter,
                                                 const GalagoObject *object);

Appends an object to a D-BUS message.

`iter` : | The D-BUS message iterator.
`object` : | The object to append.

### galago_dbus_message_iter_append_object_list ()

    void        galago_dbus_message_iter_append_object_list
                                                (DBusMessageIter *iter,
                                                 GType type,
                                                 GList *list);

Appends a list of objects to a D-BUS message.

`iter` : | The D-BUS message iterator.
`type` : | The type of the objects inside.
`list` : | The list of objects to append.

### galago_dbus_message_iter_get_object ()

    void*       galago_dbus_message_iter_get_object
                                                (DBusMessageIter *iter,
                                                 GType type);

Returns an object of the specified type from a D-BUS message.

`iter` : | The D-BUS message iterator.
`type` : | The GType.
Returns : | The object.

### galago_dbus_message_iter_get_object_list ()

    GList*      galago_dbus_message_iter_get_object_list
                                                (DBusMessageIter *iter,
                                                 GType type);

Returns a list of objects of the specified type from a D-BUS message. The returned list must be destroyed.

`iter` : | The D-BUS message iterator.
`type` : | The GType.
Returns : | The list.

### galago_dbus_message_new_method_call ()

    DBusMessage* galago_dbus_message_new_method_call
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 gboolean reply,
                                                 DBusMessageIter *ret_iter);

Creates a D-BUS message to the specified object.

`object` : | The object.
`name` : | The message name.
`reply` : | TRUE if a reply is expected.
`ret_iter` : | The returned message iterator, if not NULL.
Returns : | The D-BUS message.

### galago_dbus_message_new_method_call_vargs ()

    DBusMessage* galago_dbus_message_new_method_call_vargs
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 gboolean reply,
                                                 va_list args);

Creates a D-BUS message to the specified object with a va_list of parameters.

`object` : | The object.
`name` : | The message name.
`reply` : | TRUE if a reply is expected.
`args` : | The va_list of parameters.
Returns : | The D-BUS message.

### galago_dbus_message_new_method_call_args ()

    DBusMessage* galago_dbus_message_new_method_call_args
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 gboolean reply,
                                                 ...);

Creates a D-BUS message to the specified object with a list of parameters.

The parameters passed are in GalagoValue, pointer-to-data form.

`object` : | The object.
`name` : | The message name.
`reply` : | TRUE if a reply is expected.
`...` : | The list of parameters.
Returns : | The D-BUS message.

### galago_dbus_send_message ()

    void        galago_dbus_send_message        (const GalagoObject *object,
                                                 const char *name,
                                                 ...);

Sends a new D-BUS message with an object, name, and parameters.

The parameters passed are in GalagoValue, pointer-to-data form.

`object` : | The object.
`name` : | The message name.
`...` : | The list of parameters.

### galago_dbus_send_message_with_reply_list ()

    GList*      galago_dbus_send_message_with_reply_list
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 GList *return_types,
                                                 ...);

Sends a new D-BUS message with an object, name, and parameters, and waits for a reply with a variable list of return types.

The parameters passed are in GalagoValue, pointer-to-data form.

`object` : | The object.
`name` : | The message name.
`return_types` : | A list of expected return types, in order.
`...` : | The list of parameters.
Returns : | The returned data in a list. The list will need to be g_freed, as may some of its data.

### galago_dbus_send_message_with_reply ()

    void*       galago_dbus_send_message_with_reply
                                                (const GalagoObject *object,
                                                 const char *name,
                                                 GalagoValue *return_type,
                                                 ...);

Sends a new D-BUS message with an object, name, and parameters, and waits for a reply.

The parameters passed are in GalagoValue, pointer-to-data form.

`object` : | The object.
`name` : | The message name.
`return_type` : | The expected return type.
`...` : | The list of parameters.
Returns : | The returned data. This may need to be g_freed.

### galago_dbus_object_push_full ()

    void        galago_dbus_object_push_full    (GalagoObject *object);

Pushes an object and all its internal data to the server.

This is meant for internal use.

`object` : | The object to push.