GDBusInterfaceSkeleton: GIO Reference Manual

## GDBusInterfaceSkeleton GDBusInterfaceSkeleton — Service-side D-Bus interface |

## Functions

void | g_dbus_interface_skeleton_flush ()
GDBusInterfaceInfo * | g_dbus_interface_skeleton_get_info ()
GDBusInterfaceVTable * | g_dbus_interface_skeleton_get_vtable ()
GVariant * | g_dbus_interface_skeleton_get_properties ()
gboolean | g_dbus_interface_skeleton_export ()
void | g_dbus_interface_skeleton_unexport ()
void | g_dbus_interface_skeleton_unexport_from_connection ()
GDBusConnection * | g_dbus_interface_skeleton_get_connection ()
GList * | g_dbus_interface_skeleton_get_connections ()
gboolean | g_dbus_interface_skeleton_has_connection ()
const gchar * | g_dbus_interface_skeleton_get_object_path ()
GDBusInterfaceSkeletonFlags | g_dbus_interface_skeleton_get_flags ()
void | g_dbus_interface_skeleton_set_flags ()

## Properties

GDBusInterfaceSkeletonFlags | g-flags | Read / Write

## Signals

gboolean | g-authorize-method | Run Last

## Types and Values

| GDBusInterfaceSkeleton
struct | GDBusInterfaceSkeletonClass
enum | GDBusInterfaceSkeletonFlags

## Object Hierarchy

        GObject
        ╰── GDBusInterfaceSkeleton

## Implemented Interfaces

GDBusInterfaceSkeleton implements GDBusInterface.

## Includes

    #include <gio/gio.h>

## Description

Abstract base class for D-Bus interfaces on the service side.

## Functions

### g_dbus_interface_skeleton_flush ()

    void
    g_dbus_interface_skeleton_flush (GDBusInterfaceSkeleton *interface_);

If `interface_` has outstanding changes, request for these changes to be emitted immediately.

For example, an exported D-Bus interface may queue up property changes and emit the `org.freedesktop.DBus.Properties.PropertiesChanged` signal later (e.g. in an idle handler). This technique is useful for collapsing multiple property changes into one.

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |

Since: 2.30

### g_dbus_interface_skeleton_get_info ()

    GDBusInterfaceInfo *
    g_dbus_interface_skeleton_get_info (GDBusInterfaceSkeleton *interface_);

Gets D-Bus introspection information for the D-Bus interface implemented by `interface_` .

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |

#### Returns

A GDBusInterfaceInfo (never `NULL`). Do not free.

[transfer none]

Since: 2.30

### g_dbus_interface_skeleton_get_vtable ()

    GDBusInterfaceVTable *
    g_dbus_interface_skeleton_get_vtable (GDBusInterfaceSkeleton *interface_);

Gets the interface vtable for the D-Bus interface implemented by `interface_` . The returned function pointers should expect `interface_` itself to be passed as `user_data` .

[skip]

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |

#### Returns

A GDBusInterfaceVTable (never `NULL`).

Since: 2.30

### g_dbus_interface_skeleton_get_properties ()

    GVariant *
    g_dbus_interface_skeleton_get_properties
                                   (GDBusInterfaceSkeleton *interface_);

Gets all D-Bus properties for `interface_` .

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |

#### Returns

A GVariant of type 'a{sv}'. Free with `g_variant_unref()`.

[transfer full]

Since: 2.30

### g_dbus_interface_skeleton_export ()

    gboolean
    g_dbus_interface_skeleton_export (GDBusInterfaceSkeleton *interface_,
                                      GDBusConnection *connection,
                                      const gchar *object_path,
                                      GError **error);

Exports `interface_` at `object_path` on `connection` .

This can be called multiple times to export the same `interface_` onto multiple connections however the `object_path` provided must be the same for all connections.

Use `g_dbus_interface_skeleton_unexport()` to unexport the object.

#### Parameters

interface_ | The D-Bus interface to export. |
connection | A GDBusConnection to export `interface_` on. |
object_path | The path to export the interface at. |
error | Return location for error or `NULL`. |

#### Returns

`TRUE` if the interface was exported on `connection` , otherwise `FALSE` with `error` set.

Since: 2.30

### g_dbus_interface_skeleton_unexport ()

    void
    g_dbus_interface_skeleton_unexport (GDBusInterfaceSkeleton *interface_);

Stops exporting `interface_` on all connections it is exported on.

To unexport `interface_` from only a single connection, use `g_dbus_interface_skeleton_unexport_from_connection()`

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |

Since: 2.30

### g_dbus_interface_skeleton_unexport_from_connection ()

    void
    g_dbus_interface_skeleton_unexport_from_connection
                                   (GDBusInterfaceSkeleton *interface_,
                                    GDBusConnection *connection);

Stops exporting `interface_` on `connection` .

To stop exporting on all connections the interface is exported on, use `g_dbus_interface_skeleton_unexport()`.

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |
connection | A GDBusConnection. |

Since: 2.32

### g_dbus_interface_skeleton_get_connection ()

    GDBusConnection *
    g_dbus_interface_skeleton_get_connection
                                   (GDBusInterfaceSkeleton *interface_);

Gets the first connection that `interface_` is exported on, if any.

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |

#### Returns

A GDBusConnection or `NULL` if `interface_` is not exported anywhere. Do not free, the object belongs to `interface_` .

[transfer none]

Since: 2.30

### g_dbus_interface_skeleton_get_connections ()

    GList *
    g_dbus_interface_skeleton_get_connections
                                   (GDBusInterfaceSkeleton *interface_);

Gets a list of the connections that `interface_` is exported on.

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |

#### Returns

A list of all the connections that `interface_` is exported on. The returned list should be freed with `g_list_free()` after each element has been freed with `g_object_unref()`.

[element-type GDBusConnection][transfer full]

Since: 2.32

### g_dbus_interface_skeleton_has_connection ()

    gboolean
    g_dbus_interface_skeleton_has_connection
                                   (GDBusInterfaceSkeleton *interface_,
                                    GDBusConnection *connection);

Checks if `interface_` is exported on `connection` .

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |
connection | A GDBusConnection. |

#### Returns

`TRUE` if `interface_` is exported on `connection` , `FALSE` otherwise.

Since: 2.32

### g_dbus_interface_skeleton_get_object_path ()

    const gchar *
    g_dbus_interface_skeleton_get_object_path
                                   (GDBusInterfaceSkeleton *interface_);

Gets the object path that `interface_` is exported on, if any.

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |

#### Returns

A string owned by `interface_` or `NULL` if `interface_` is not exported anywhere. Do not free, the string belongs to `interface_` .

Since: 2.30

### g_dbus_interface_skeleton_get_flags ()

    GDBusInterfaceSkeletonFlags
    g_dbus_interface_skeleton_get_flags (GDBusInterfaceSkeleton *interface_);

Gets the GDBusInterfaceSkeletonFlags that describes what the behavior of `interface_`

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |

#### Returns

One or more flags from the GDBusInterfaceSkeletonFlags enumeration.

Since: 2.30

### g_dbus_interface_skeleton_set_flags ()

    void
    g_dbus_interface_skeleton_set_flags (GDBusInterfaceSkeleton *interface_,
                                         GDBusInterfaceSkeletonFlags flags);

Sets flags describing what the behavior of `skeleton` should be.

#### Parameters

interface_ | A GDBusInterfaceSkeleton. |
flags | Flags from the GDBusInterfaceSkeletonFlags enumeration. |

Since: 2.30

## Types and Values

### GDBusInterfaceSkeleton

    typedef struct _GDBusInterfaceSkeleton GDBusInterfaceSkeleton;

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

Since: 2.30

### struct GDBusInterfaceSkeletonClass

    struct GDBusInterfaceSkeletonClass {
      GObjectClass parent_class;

      /* Virtual Functions */
      GDBusInterfaceInfo   *(*get_info)       (GDBusInterfaceSkeleton  *interface_);
      GDBusInterfaceVTable *(*get_vtable)     (GDBusInterfaceSkeleton  *interface_);
      GVariant             *(*get_properties) (GDBusInterfaceSkeleton  *interface_);
      void                  (*flush)          (GDBusInterfaceSkeleton  *interface_);

      /* Signals */
      gboolean (*g_authorize_method) (GDBusInterfaceSkeleton  *interface_,
                                      GDBusMethodInvocation   *invocation);
    };

Class structure for GDBusInterfaceSkeleton.

#### Members

`get_info` () | Returns a GDBusInterfaceInfo. See `g_dbus_interface_skeleton_get_info()` for details. |
`get_vtable` () | Returns a GDBusInterfaceVTable. See `g_dbus_interface_skeleton_get_vtable()` for details. |
`get_properties` () | Returns a GVariant with all properties. See `g_dbus_interface_skeleton_get_properties()`. |
`flush` () | Emits outstanding changes, if any. See `g_dbus_interface_skeleton_flush()`. |
`g_authorize_method` () | Signal class handler for the “g-authorize-method” signal. |

Since: 2.30

### enum GDBusInterfaceSkeletonFlags

Flags describing the behavior of a GDBusInterfaceSkeleton instance.

#### Members

G_DBUS_INTERFACE_SKELETON_FLAGS_NONE | No flags set. |
G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD | Each method invocation is handled in a thread dedicated to the invocation. This means that the method implementation can use blocking IO without blocking any other part of the process. It also means that the method implementation must use locking to access data structures used by other threads. |

Since: 2.30

## Property Details

### The `“g-flags”` property

      “g-flags”                  GDBusInterfaceSkeletonFlags

Flags from the GDBusInterfaceSkeletonFlags enumeration.

Flags: Read / Write

Since: 2.30

## Signal Details

### The `“g-authorize-method”` signal

    gboolean
    user_function (GDBusInterfaceSkeleton *interface,
                   GDBusMethodInvocation  *invocation,
                   gpointer                user_data)

Emitted when a method is invoked by a remote caller and used to determine if the method call is authorized.

Note that this signal is emitted in a thread dedicated to handling the method call so handlers are allowed to perform blocking IO. This means that it is appropriate to call e.g. `polkit_authority_check_authorization_sync()` with the POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION flag set.

If `FALSE` is returned then no further handlers are run and the signal handler must take a reference to `invocation` and finish handling the call (e.g. return an error via `g_dbus_method_invocation_return_error()`).

Otherwise, if `TRUE` is returned, signal emission continues. If no handlers return `FALSE`, then the method is dispatched. If `interface` has an enclosing GDBusObjectSkeleton, then the “authorize-method” signal handlers run before the handlers for this signal.

The default class handler just returns `TRUE`.

Please note that the common case is optimized: if no signals handlers are connected and the default class handler isn't overridden (for both `interface` and the enclosing GDBusObjectSkeleton, if any) and “g-flags” does not have the `G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD` flags set, no dedicated thread is ever used and the call will be handled in the same thread as the object that `interface` belongs to was exported in.

#### Parameters

interface | The GDBusInterfaceSkeleton emitting the signal. |
invocation | A GDBusMethodInvocation. |
user_data | user data set when the signal handler was connected. |

#### Returns

`TRUE` if the call is authorized, `FALSE` otherwise.

Flags: Run Last

Since: 2.30