## GDBusMethodInvocation

GDBusMethodInvocation — Object for handling remote calls

## Synopsis

    #include <gio/gio.h>

                        GDBusMethodInvocation;
    const gchar *       g_dbus_method_invocation_get_sender (GDBusMethodInvocation *invocation);
    const gchar *       g_dbus_method_invocation_get_object_path
                                                            (GDBusMethodInvocation *invocation);
    const gchar *       g_dbus_method_invocation_get_interface_name
                                                            (GDBusMethodInvocation *invocation);
    const gchar *       g_dbus_method_invocation_get_method_name
                                                            (GDBusMethodInvocation *invocation);
    const GDBusMethodInfo * g_dbus_method_invocation_get_method_info
                                                            (GDBusMethodInvocation *invocation);
    GDBusConnection *   g_dbus_method_invocation_get_connection
                                                            (GDBusMethodInvocation *invocation);
    GDBusMessage *      g_dbus_method_invocation_get_message
                                                            (GDBusMethodInvocation *invocation);
    GVariant *          g_dbus_method_invocation_get_parameters
                                                            (GDBusMethodInvocation *invocation);
    gpointer            g_dbus_method_invocation_get_user_data
                                                            (GDBusMethodInvocation *invocation);
    void                g_dbus_method_invocation_return_value
                                                            (GDBusMethodInvocation *invocation,
                                                             GVariant *parameters);
    void                g_dbus_method_invocation_return_error
                                                            (GDBusMethodInvocation *invocation,
                                                             GQuark domain,
                                                             gint code,
                                                             const gchar *format,
                                                             ...);
    void                g_dbus_method_invocation_return_error_valist
                                                            (GDBusMethodInvocation *invocation,
                                                             GQuark domain,
                                                             gint code,
                                                             const gchar *format,
                                                             va_list var_args);
    void                g_dbus_method_invocation_return_error_literal
                                                            (GDBusMethodInvocation *invocation,
                                                             GQuark domain,
                                                             gint code,
                                                             const gchar *message);
    void                g_dbus_method_invocation_return_gerror
                                                            (GDBusMethodInvocation *invocation,
                                                             const GError *error);
    void                g_dbus_method_invocation_return_dbus_error
                                                            (GDBusMethodInvocation *invocation,
                                                             const gchar *error_name,
                                                             const gchar *error_message);
    void                g_dbus_method_invocation_take_error (GDBusMethodInvocation *invocation,
                                                             GError *error);
    void                g_dbus_method_invocation_return_value_with_unix_fd_list
                                                            (GDBusMethodInvocation *invocation,
                                                             GVariant *parameters,
                                                             GUnixFDList *fd_list);

## Object Hierarchy

      GObject
       +----GDBusMethodInvocation

## Description

Instances of the GDBusMethodInvocation class are used when handling D-Bus method calls. It provides a way to asynchronously return results and errors.

The normal way to obtain a GDBusMethodInvocation object is to receive it as an argument to the `handle_method_call()` function in a GDBusInterfaceVTable that was passed to `g_dbus_connection_register_object()`.

## Details

### GDBusMethodInvocation

    typedef struct _GDBusMethodInvocation GDBusMethodInvocation;

The GDBusMethodInvocation structure contains only private data and should only be accessed using the provided API.

Since 2.26

### g_dbus_method_invocation_get_sender ()

    const gchar *       g_dbus_method_invocation_get_sender (GDBusMethodInvocation *invocation);

Gets the bus name that invoked the method.

`invocation` : | A GDBusMethodInvocation.
Returns : | A string. Do not free, it is owned by `invocation`.

Since 2.26

### g_dbus_method_invocation_get_object_path ()

    const gchar *       g_dbus_method_invocation_get_object_path
                                                            (GDBusMethodInvocation *invocation);

Gets the object path the method was invoked on.

`invocation` : | A GDBusMethodInvocation.
Returns : | A string. Do not free, it is owned by `invocation`.

Since 2.26

### g_dbus_method_invocation_get_interface_name ()

    const gchar *       g_dbus_method_invocation_get_interface_name
                                                            (GDBusMethodInvocation *invocation);

Gets the name of the D-Bus interface the method was invoked on.

`invocation` : | A GDBusMethodInvocation.
Returns : | A string. Do not free, it is owned by `invocation`.

Since 2.26

### g_dbus_method_invocation_get_method_name ()

    const gchar *       g_dbus_method_invocation_get_method_name
                                                            (GDBusMethodInvocation *invocation);

Gets the name of the method that was invoked.

`invocation` : | A GDBusMethodInvocation.
Returns : | A string. Do not free, it is owned by `invocation`.

Since 2.26

### g_dbus_method_invocation_get_method_info ()

    const GDBusMethodInfo * g_dbus_method_invocation_get_method_info
                                                            (GDBusMethodInvocation *invocation);

Gets information about the method call, if any.

`invocation` : | A GDBusMethodInvocation.
Returns : | A GDBusMethodInfo or `NULL`. Do not free, it is owned by `invocation`.

Since 2.26

### g_dbus_method_invocation_get_connection ()

    GDBusConnection *   g_dbus_method_invocation_get_connection
                                                            (GDBusMethodInvocation *invocation);

Gets the GDBusConnection the method was invoked on.

`invocation` : | A GDBusMethodInvocation.
Returns : | A GDBusConnection. Do not free, it is owned by `invocation`. [transfer none]

Since 2.26

### g_dbus_method_invocation_get_message ()

    GDBusMessage *      g_dbus_method_invocation_get_message
                                                            (GDBusMethodInvocation *invocation);

Gets the GDBusMessage for the method invocation. This is useful if you need to use low-level protocol features, such as UNIX file descriptor passing, that cannot be properly expressed in the GVariant API.

See Example 2, “D-Bus server example” and Example 4, “D-Bus UNIX File Descriptor example” for an example of how to use this low-level API to send and receive UNIX file descriptors.

`invocation` : | A GDBusMethodInvocation.
Returns : | GDBusMessage. Do not free, it is owned by `invocation`. [transfer none]

Since 2.26

### g_dbus_method_invocation_get_parameters ()

    GVariant *          g_dbus_method_invocation_get_parameters
                                                            (GDBusMethodInvocation *invocation);

Gets the parameters of the method invocation. If there are no input parameters then this will return a GVariant with 0 children rather than NULL.

`invocation` : | A GDBusMethodInvocation.
Returns : | A GVariant tuple. Do not unref this because it is owned by `invocation`. [transfer none]

Since 2.26

### g_dbus_method_invocation_get_user_data ()

    gpointer            g_dbus_method_invocation_get_user_data
                                                            (GDBusMethodInvocation *invocation);

Gets the `user_data` gpointer passed to `g_dbus_connection_register_object()`.

`invocation` : | A GDBusMethodInvocation.
Returns : | A gpointer.

Since 2.26

### g_dbus_method_invocation_return_value ()

    void                g_dbus_method_invocation_return_value
                                                            (GDBusMethodInvocation *invocation,
                                                             GVariant *parameters);

Finishes handling a D-Bus method call by returning `parameters`. If the `parameters` GVariant is floating, it is consumed.

It is an error if `parameters` is not of the right format.

This method will free `invocation`, you cannot use it afterwards.

`invocation` : | A GDBusMethodInvocation. [transfer full]
`parameters` : | A GVariant tuple with out parameters for the method or `NULL` if not passing any parameters. [allow-none]

Since 2.26

### g_dbus_method_invocation_return_error ()

    void                g_dbus_method_invocation_return_error
                                                            (GDBusMethodInvocation *invocation,
                                                             GQuark domain,
                                                             gint code,
                                                             const gchar *format,
                                                             ...);

Finishes handling a D-Bus method call by returning an error.

See `g_dbus_error_encode_gerror()` for details about what error name will be returned on the wire. In a nutshell, if the given error is registered using `g_dbus_error_register_error()` the name given during registration is used. Otherwise, a name of the form `org.gtk.GDBus.UnmappedGError.Quark...` is used. This provides transparent mapping of GError between applications using GDBus.

If you are writing an application intended to be portable, always register errors with `g_dbus_error_register_error()` or use `g_dbus_method_invocation_return_dbus_error()`.

This method will free `invocation`, you cannot use it afterwards.

`invocation` : | A GDBusMethodInvocation. [transfer full]
`domain` : | A GQuark for the GError error domain.
`code` : | The error code.
`format` : | printf()-style format.
`...` : | Parameters for `format`.

Since 2.26

### g_dbus_method_invocation_return_error_valist ()

    void                g_dbus_method_invocation_return_error_valist
                                                            (GDBusMethodInvocation *invocation,
                                                             GQuark domain,
                                                             gint code,
                                                             const gchar *format,
                                                             va_list var_args);

Like `g_dbus_method_invocation_return_error()` but intended for language bindings.

This method will free `invocation`, you cannot use it afterwards.

`invocation` : | A GDBusMethodInvocation. [transfer full]
`domain` : | A GQuark for the GError error domain.
`code` : | The error code.
`format` : | printf()-style format.
`var_args` : | va_list of parameters for `format`.

Since 2.26

### g_dbus_method_invocation_return_error_literal ()

    void                g_dbus_method_invocation_return_error_literal
                                                            (GDBusMethodInvocation *invocation,
                                                             GQuark domain,
                                                             gint code,
                                                             const gchar *message);

Like `g_dbus_method_invocation_return_error()` but without `printf()`-style formatting.

This method will free `invocation`, you cannot use it afterwards.

`invocation` : | A GDBusMethodInvocation. [transfer full]
`domain` : | A GQuark for the GError error domain.
`code` : | The error code.
`message` : | The error message.

Since 2.26

### g_dbus_method_invocation_return_gerror ()

    void                g_dbus_method_invocation_return_gerror
                                                            (GDBusMethodInvocation *invocation,
                                                             const GError *error);

Like `g_dbus_method_invocation_return_error()` but takes a GError instead of the error domain, error code and message.

This method will free `invocation`, you cannot use it afterwards.

`invocation` : | A GDBusMethodInvocation. [transfer full]
`error` : | A GError.

Since 2.26

### g_dbus_method_invocation_return_dbus_error ()

    void                g_dbus_method_invocation_return_dbus_error
                                                            (GDBusMethodInvocation *invocation,
                                                             const gchar *error_name,
                                                             const gchar *error_message);

Finishes handling a D-Bus method call by returning an error.

This method will free `invocation`, you cannot use it afterwards.

`invocation` : | A GDBusMethodInvocation. [transfer full]
`error_name` : | A valid D-Bus error name.
`error_message` : | A valid D-Bus error message.

Since 2.26

### g_dbus_method_invocation_take_error ()

    void                g_dbus_method_invocation_take_error (GDBusMethodInvocation *invocation,
                                                             GError *error);

Like `g_dbus_method_invocation_return_gerror()` but takes ownership of `error` so the caller does not need to free it.

This method will free `invocation`, you cannot use it afterwards.

`invocation` : | A GDBusMethodInvocation. [transfer full]
`error` : | A GError. [transfer full]

Since 2.30

### g_dbus_method_invocation_return_value_with_unix_fd_list ()

    void                g_dbus_method_invocation_return_value_with_unix_fd_list
                                                            (GDBusMethodInvocation *invocation,
                                                             GVariant *parameters,
                                                             GUnixFDList *fd_list);

Like `g_dbus_method_invocation_return_value()` but also takes a GUnixFDList.

This method is only available on UNIX.

This method will free `invocation`, you cannot use it afterwards.

`invocation` : | A GDBusMethodInvocation. [transfer full]
`parameters` : | A GVariant tuple with out parameters for the method or `NULL` if not passing any parameters. [allow-none]
`fd_list` : | A GUnixFDList or `NULL`. [allow-none]

Since 2.30