Class DBusConnection

All Implemented Interfaces:
AsyncInitable, Initable, Proxy

@Generated("org.javagi.JavaGI") public class DBusConnection extends GObject implements AsyncInitable, Initable

The GDBusConnection type is used for D-Bus connections to remote peers such as a message buses.

It is a low-level API that offers a lot of flexibility. For instance, it lets you establish a connection over any transport that can by represented as a IOStream.

This class is rarely used directly in D-Bus clients. If you are writing a D-Bus client, it is often easier to use the Gio.busOwnName(BusType, String, Set, Closure, Closure, Closure), Gio.busWatchName(BusType, String, Set, Closure, Closure) or DBusProxy.newForBus(BusType, Set, DBusInterfaceInfo, String, String, String, Cancellable, AsyncReadyCallback) APIs.

As an exception to the usual GLib rule that a particular object must not be used by two threads at the same time, GDBusConnections methods may be called from any thread. This is so that Gio.busGet(BusType, Cancellable, AsyncReadyCallback) and Gio.busGetSync(BusType, Cancellable) can safely return the same GDBusConnection when called from any thread.

Most of the ways to obtain a GDBusConnection automatically initialize it (i.e. connect to D-Bus): for instance, new_(IOStream, String, Set, DBusAuthObserver, Cancellable, AsyncReadyCallback) and Gio.busGet(BusType, Cancellable, AsyncReadyCallback), and the synchronous versions of those methods, give you an initialized connection. Language bindings for GIO should use Initable.new_(Type, Cancellable, GError[], String, Object...) or AsyncInitable.newAsync(Type, int, Cancellable, AsyncReadyCallback, String, Object...), which also initialize the connection.

If you construct an uninitialized GDBusConnection, such as via GObject(), you must initialize it via Initable.init(Cancellable) or AsyncInitable.initAsync(int, Cancellable, AsyncReadyCallback) before using its methods or properties. Calling methods or accessing properties on a GDBusConnection that has not completed initialization successfully is considered to be invalid, and leads to undefined behaviour. In particular, if initialization fails with a GError, the only valid thing you can do with that GDBusConnection is to free it with GObject#unref.

An example D-Bus server

Here is an example for a D-Bus server: gdbus-example-server.c

An example for exporting a subtree

Here is an example for exporting a subtree: gdbus-example-subtree.c

An example for file descriptor passing

Here is an example for passing UNIX file descriptors: gdbus-unix-fd-client.c

An example for exporting a GObject

Here is an example for exporting a GObject: gdbus-example-export.c

Since:
2.26
  • Constructor Details

    • DBusConnection

      public DBusConnection(MemorySegment address)
      Create a DBusConnection instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • DBusConnection

      public DBusConnection()
      Create a new DBusConnection.
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the DBusConnection class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • asParent

      protected DBusConnection asParent()
      Return this instance as if it were its parent type. Comparable to the Java super keyword, but ensures the parent typeclass is also used in native code.
      Overrides:
      asParent in class GObject
      Returns:
      the instance as if it were its parent type
    • finish

      public static DBusConnection finish(AsyncResult res) throws GErrorException
      Finishes an operation started with g_dbus_connection_new().
      Parameters:
      res - a GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_connection_new().
      Returns:
      a GDBusConnection or null if error is set. Free with g_object_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • forAddressFinish

      public static DBusConnection forAddressFinish(AsyncResult res) throws GErrorException
      Finishes an operation started with g_dbus_connection_new_for_address().
      Parameters:
      res - a GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_connection_new()
      Returns:
      a GDBusConnection or null if error is set. Free with g_object_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • forAddressSync

      public static DBusConnection forAddressSync(String address, Set<DBusConnectionFlags> flags, @Nullable DBusAuthObserver observer, @Nullable Cancellable cancellable) throws GErrorException

      Synchronously connects and sets up a D-Bus client connection for exchanging D-Bus messages with an endpoint specified by address which must be in the D-Bus address format.

      This constructor can only be used to initiate client-side connections - use g_dbus_connection_new_sync() if you need to act as the server. In particular, flags cannot contain the DBusConnectionFlags.AUTHENTICATION_SERVER, DBusConnectionFlags.AUTHENTICATION_ALLOW_ANONYMOUS or DBusConnectionFlags.AUTHENTICATION_REQUIRE_SAME_USER flags.

      This is a synchronous failable constructor. See g_dbus_connection_new_for_address() for the asynchronous version.

      If observer is not null it may be used to control the authentication process.

      Parameters:
      address - a D-Bus address
      flags - flags describing how to make the connection
      observer - a GDBusAuthObserver or null
      cancellable - a GCancellable or null
      Returns:
      a GDBusConnection or null if error is set. Free with g_object_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • forAddressSync

      public static DBusConnection forAddressSync(String address, DBusConnectionFlags flags, @Nullable DBusAuthObserver observer, @Nullable Cancellable cancellable) throws GErrorException

      Synchronously connects and sets up a D-Bus client connection for exchanging D-Bus messages with an endpoint specified by address which must be in the D-Bus address format.

      This constructor can only be used to initiate client-side connections - use g_dbus_connection_new_sync() if you need to act as the server. In particular, flags cannot contain the DBusConnectionFlags.AUTHENTICATION_SERVER, DBusConnectionFlags.AUTHENTICATION_ALLOW_ANONYMOUS or DBusConnectionFlags.AUTHENTICATION_REQUIRE_SAME_USER flags.

      This is a synchronous failable constructor. See g_dbus_connection_new_for_address() for the asynchronous version.

      If observer is not null it may be used to control the authentication process.

      Parameters:
      address - a D-Bus address
      flags - flags describing how to make the connection
      observer - a GDBusAuthObserver or null
      cancellable - a GCancellable or null
      Returns:
      a GDBusConnection or null if error is set. Free with g_object_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • sync

      public static DBusConnection sync(IOStream stream, @Nullable String guid, Set<DBusConnectionFlags> flags, @Nullable DBusAuthObserver observer, @Nullable Cancellable cancellable) throws GErrorException

      Synchronously sets up a D-Bus connection for exchanging D-Bus messages with the end represented by stream.

      If stream is a GSocketConnection, then the corresponding GSocket will be put into non-blocking mode.

      The D-Bus connection will interact with stream from a worker thread. As a result, the caller should not interact with stream after this method has been called, except by calling g_object_unref() on it.

      If observer is not null it may be used to control the authentication process.

      This is a synchronous failable constructor. See g_dbus_connection_new() for the asynchronous version.

      Parameters:
      stream - a GIOStream
      guid - the GUID to use if authenticating as a server or null
      flags - flags describing how to make the connection
      observer - a GDBusAuthObserver or null
      cancellable - a GCancellable or null
      Returns:
      a GDBusConnection or null if error is set. Free with g_object_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • sync

      public static DBusConnection sync(IOStream stream, @Nullable String guid, DBusConnectionFlags flags, @Nullable DBusAuthObserver observer, @Nullable Cancellable cancellable) throws GErrorException

      Synchronously sets up a D-Bus connection for exchanging D-Bus messages with the end represented by stream.

      If stream is a GSocketConnection, then the corresponding GSocket will be put into non-blocking mode.

      The D-Bus connection will interact with stream from a worker thread. As a result, the caller should not interact with stream after this method has been called, except by calling g_object_unref() on it.

      If observer is not null it may be used to control the authentication process.

      This is a synchronous failable constructor. See g_dbus_connection_new() for the asynchronous version.

      Parameters:
      stream - a GIOStream
      guid - the GUID to use if authenticating as a server or null
      flags - flags describing how to make the connection
      observer - a GDBusAuthObserver or null
      cancellable - a GCancellable or null
      Returns:
      a GDBusConnection or null if error is set. Free with g_object_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • new_

      public static void new_(IOStream stream, @Nullable String guid, Set<DBusConnectionFlags> flags, @Nullable DBusAuthObserver observer, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Asynchronously sets up a D-Bus connection for exchanging D-Bus messages with the end represented by stream.

      If stream is a GSocketConnection, then the corresponding GSocket will be put into non-blocking mode.

      The D-Bus connection will interact with stream from a worker thread. As a result, the caller should not interact with stream after this method has been called, except by calling g_object_unref() on it.

      If observer is not null it may be used to control the authentication process.

      When the operation is finished, callback will be invoked. You can then call g_dbus_connection_new_finish() to get the result of the operation.

      This is an asynchronous failable constructor. See g_dbus_connection_new_sync() for the synchronous version.

      Parameters:
      stream - a GIOStream
      guid - the GUID to use if authenticating as a server or null
      flags - flags describing how to make the connection
      observer - a GDBusAuthObserver or null
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied
      Since:
      2.26
    • new_

      public static void new_(IOStream stream, @Nullable String guid, DBusConnectionFlags flags, @Nullable DBusAuthObserver observer, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Asynchronously sets up a D-Bus connection for exchanging D-Bus messages with the end represented by stream.

      If stream is a GSocketConnection, then the corresponding GSocket will be put into non-blocking mode.

      The D-Bus connection will interact with stream from a worker thread. As a result, the caller should not interact with stream after this method has been called, except by calling g_object_unref() on it.

      If observer is not null it may be used to control the authentication process.

      When the operation is finished, callback will be invoked. You can then call g_dbus_connection_new_finish() to get the result of the operation.

      This is an asynchronous failable constructor. See g_dbus_connection_new_sync() for the synchronous version.

      Parameters:
      stream - a GIOStream
      guid - the GUID to use if authenticating as a server or null
      flags - flags describing how to make the connection
      observer - a GDBusAuthObserver or null
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied
      Since:
      2.26
    • newForAddress

      public static void newForAddress(String address, Set<DBusConnectionFlags> flags, @Nullable DBusAuthObserver observer, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Asynchronously connects and sets up a D-Bus client connection for exchanging D-Bus messages with an endpoint specified by address which must be in the D-Bus address format.

      This constructor can only be used to initiate client-side connections - use g_dbus_connection_new() if you need to act as the server. In particular, flags cannot contain the DBusConnectionFlags.AUTHENTICATION_SERVER, DBusConnectionFlags.AUTHENTICATION_ALLOW_ANONYMOUS or DBusConnectionFlags.AUTHENTICATION_REQUIRE_SAME_USER flags.

      When the operation is finished, callback will be invoked. You can then call g_dbus_connection_new_for_address_finish() to get the result of the operation.

      If observer is not null it may be used to control the authentication process.

      This is an asynchronous failable constructor. See g_dbus_connection_new_for_address_sync() for the synchronous version.

      Parameters:
      address - a D-Bus address
      flags - flags describing how to make the connection
      observer - a GDBusAuthObserver or null
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied
      Since:
      2.26
    • newForAddress

      public static void newForAddress(String address, DBusConnectionFlags flags, @Nullable DBusAuthObserver observer, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Asynchronously connects and sets up a D-Bus client connection for exchanging D-Bus messages with an endpoint specified by address which must be in the D-Bus address format.

      This constructor can only be used to initiate client-side connections - use g_dbus_connection_new() if you need to act as the server. In particular, flags cannot contain the DBusConnectionFlags.AUTHENTICATION_SERVER, DBusConnectionFlags.AUTHENTICATION_ALLOW_ANONYMOUS or DBusConnectionFlags.AUTHENTICATION_REQUIRE_SAME_USER flags.

      When the operation is finished, callback will be invoked. You can then call g_dbus_connection_new_for_address_finish() to get the result of the operation.

      If observer is not null it may be used to control the authentication process.

      This is an asynchronous failable constructor. See g_dbus_connection_new_for_address_sync() for the synchronous version.

      Parameters:
      address - a D-Bus address
      flags - flags describing how to make the connection
      observer - a GDBusAuthObserver or null
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied
      Since:
      2.26
    • addFilter

      public int addFilter(@Nullable DBusMessageFilterFunction filterFunction)

      Adds a message filter. Filters are handlers that are run on all incoming and outgoing messages, prior to standard dispatch. Filters are run in the order that they were added. The same handler can be added as a filter more than once, in which case it will be run more than once. Filters added during a filter callback won't be run on the message being processed. Filter functions are allowed to modify and even drop messages.

      Note that filters are run in a dedicated message handling thread so they can't block and, generally, can't do anything but signal a worker thread. Also note that filters are rarely needed - use API such as g_dbus_connection_send_message_with_reply(), g_dbus_connection_signal_subscribe() or g_dbus_connection_call() instead.

      If a filter consumes an incoming message the message is not dispatched anywhere else - not even the standard dispatch machinery (that API such as g_dbus_connection_signal_subscribe() and g_dbus_connection_send_message_with_reply() relies on) will see the message. Similarly, if a filter consumes an outgoing message, the message will not be sent to the other peer.

      If userDataFreeFunc is non-null, it will be called (in the thread-default main context of the thread you are calling this method from) at some point after userData is no longer needed. (It is not guaranteed to be called synchronously when the filter is removed, and may be called after this DBusConnection has been destroyed.)

      Parameters:
      filterFunction - a filter function
      Returns:
      a filter identifier that can be used with g_dbus_connection_remove_filter()
      Since:
      2.26
    • call

      public void call(@Nullable String busName, String objectPath, String interfaceName, String methodName, @Nullable Variant parameters, @Nullable VariantType replyType, Set<DBusCallFlags> flags, int timeoutMsec, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Asynchronously invokes the methodName method on the interfaceName D-Bus interface on the remote object at objectPath owned by busName.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If cancellable is canceled, the operation will fail with IOErrorEnum.CANCELLED. If parameters contains a value not compatible with the D-Bus protocol, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      If replyType is non-null then the reply will be checked for having this type and an error will be raised if it does not match. Said another way, if you give a replyType then any non-null return value will be of this type. Unless it’s G_VARIANT_TYPE_UNIT, the replyType will be a tuple containing one or more values.

      If the parameters GVariant is floating, it is consumed. This allows convenient 'inline' use of g_variant_new(), e.g.:

       g_dbus_connection_call (connection,
                               "org.freedesktop.StringThings",
                               "/org/freedesktop/StringThings",
                               "org.freedesktop.StringThings",
                               "TwoStrings",
                               g_variant_new ("(ss)",
                                              "Thing One",
                                              "Thing Two"),
                               NULL,
                               G_DBUS_CALL_FLAGS_NONE,
                               -1,
                               NULL,
                               (GAsyncReadyCallback) two_strings_done,
                               NULL);
      

      This is an asynchronous method. When the operation is finished, callback will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from. You can then call g_dbus_connection_call_finish() to get the result of the operation. See g_dbus_connection_call_sync() for the synchronous version of this function.

      If callback is null then the D-Bus method call message will be sent with the DBusMessageFlags.NO_REPLY_EXPECTED flag set.

      Parameters:
      busName - a unique or well-known bus name or null if this DBusConnection is not a message bus connection
      objectPath - path of remote object
      interfaceName - D-Bus interface to invoke method on
      methodName - the name of the method to invoke
      parameters - a GVariant tuple with parameters for the method or null if not passing parameters
      replyType - the expected type of the reply (which will be a tuple), or null
      flags - flags from the GDBusCallFlags enumeration
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied or null if you don't care about the result of the method invocation
      Since:
      2.26
    • call

      public void call(@Nullable String busName, String objectPath, String interfaceName, String methodName, @Nullable Variant parameters, @Nullable VariantType replyType, DBusCallFlags flags, int timeoutMsec, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Asynchronously invokes the methodName method on the interfaceName D-Bus interface on the remote object at objectPath owned by busName.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If cancellable is canceled, the operation will fail with IOErrorEnum.CANCELLED. If parameters contains a value not compatible with the D-Bus protocol, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      If replyType is non-null then the reply will be checked for having this type and an error will be raised if it does not match. Said another way, if you give a replyType then any non-null return value will be of this type. Unless it’s G_VARIANT_TYPE_UNIT, the replyType will be a tuple containing one or more values.

      If the parameters GVariant is floating, it is consumed. This allows convenient 'inline' use of g_variant_new(), e.g.:

       g_dbus_connection_call (connection,
                               "org.freedesktop.StringThings",
                               "/org/freedesktop/StringThings",
                               "org.freedesktop.StringThings",
                               "TwoStrings",
                               g_variant_new ("(ss)",
                                              "Thing One",
                                              "Thing Two"),
                               NULL,
                               G_DBUS_CALL_FLAGS_NONE,
                               -1,
                               NULL,
                               (GAsyncReadyCallback) two_strings_done,
                               NULL);
      

      This is an asynchronous method. When the operation is finished, callback will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from. You can then call g_dbus_connection_call_finish() to get the result of the operation. See g_dbus_connection_call_sync() for the synchronous version of this function.

      If callback is null then the D-Bus method call message will be sent with the DBusMessageFlags.NO_REPLY_EXPECTED flag set.

      Parameters:
      busName - a unique or well-known bus name or null if this DBusConnection is not a message bus connection
      objectPath - path of remote object
      interfaceName - D-Bus interface to invoke method on
      methodName - the name of the method to invoke
      parameters - a GVariant tuple with parameters for the method or null if not passing parameters
      replyType - the expected type of the reply (which will be a tuple), or null
      flags - flags from the GDBusCallFlags enumeration
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied or null if you don't care about the result of the method invocation
      Since:
      2.26
    • callFinish

      public Variant callFinish(AsyncResult res) throws GErrorException
      Finishes an operation started with g_dbus_connection_call().
      Parameters:
      res - a GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_connection_call()
      Returns:
      null if error is set. Otherwise a non-floating GVariant tuple with return values. Free with g_variant_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • callSync

      public Variant callSync(@Nullable String busName, String objectPath, String interfaceName, String methodName, @Nullable Variant parameters, @Nullable VariantType replyType, Set<DBusCallFlags> flags, int timeoutMsec, @Nullable Cancellable cancellable) throws GErrorException

      Synchronously invokes the methodName method on the interfaceName D-Bus interface on the remote object at objectPath owned by busName.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If cancellable is canceled, the operation will fail with IOErrorEnum.CANCELLED. If parameters contains a value not compatible with the D-Bus protocol, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      If replyType is non-null then the reply will be checked for having this type and an error will be raised if it does not match. Said another way, if you give a replyType then any non-null return value will be of this type.

      If the parameters GVariant is floating, it is consumed. This allows convenient 'inline' use of g_variant_new(), e.g.:

       g_dbus_connection_call_sync (connection,
                                    "org.freedesktop.StringThings",
                                    "/org/freedesktop/StringThings",
                                    "org.freedesktop.StringThings",
                                    "TwoStrings",
                                    g_variant_new ("(ss)",
                                                   "Thing One",
                                                   "Thing Two"),
                                    NULL,
                                    G_DBUS_CALL_FLAGS_NONE,
                                    -1,
                                    NULL,
                                    &error);
      

      The calling thread is blocked until a reply is received. See g_dbus_connection_call() for the asynchronous version of this method.

      Parameters:
      busName - a unique or well-known bus name or null if this DBusConnection is not a message bus connection
      objectPath - path of remote object
      interfaceName - D-Bus interface to invoke method on
      methodName - the name of the method to invoke
      parameters - a GVariant tuple with parameters for the method or null if not passing parameters
      replyType - the expected type of the reply, or null
      flags - flags from the GDBusCallFlags enumeration
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      cancellable - a GCancellable or null
      Returns:
      null if error is set. Otherwise a non-floating GVariant tuple with return values. Free with g_variant_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • callSync

      public Variant callSync(@Nullable String busName, String objectPath, String interfaceName, String methodName, @Nullable Variant parameters, @Nullable VariantType replyType, DBusCallFlags flags, int timeoutMsec, @Nullable Cancellable cancellable) throws GErrorException

      Synchronously invokes the methodName method on the interfaceName D-Bus interface on the remote object at objectPath owned by busName.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If cancellable is canceled, the operation will fail with IOErrorEnum.CANCELLED. If parameters contains a value not compatible with the D-Bus protocol, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      If replyType is non-null then the reply will be checked for having this type and an error will be raised if it does not match. Said another way, if you give a replyType then any non-null return value will be of this type.

      If the parameters GVariant is floating, it is consumed. This allows convenient 'inline' use of g_variant_new(), e.g.:

       g_dbus_connection_call_sync (connection,
                                    "org.freedesktop.StringThings",
                                    "/org/freedesktop/StringThings",
                                    "org.freedesktop.StringThings",
                                    "TwoStrings",
                                    g_variant_new ("(ss)",
                                                   "Thing One",
                                                   "Thing Two"),
                                    NULL,
                                    G_DBUS_CALL_FLAGS_NONE,
                                    -1,
                                    NULL,
                                    &error);
      

      The calling thread is blocked until a reply is received. See g_dbus_connection_call() for the asynchronous version of this method.

      Parameters:
      busName - a unique or well-known bus name or null if this DBusConnection is not a message bus connection
      objectPath - path of remote object
      interfaceName - D-Bus interface to invoke method on
      methodName - the name of the method to invoke
      parameters - a GVariant tuple with parameters for the method or null if not passing parameters
      replyType - the expected type of the reply, or null
      flags - flags from the GDBusCallFlags enumeration
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      cancellable - a GCancellable or null
      Returns:
      null if error is set. Otherwise a non-floating GVariant tuple with return values. Free with g_variant_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • callWithUnixFdList

      public void callWithUnixFdList(@Nullable String busName, String objectPath, String interfaceName, String methodName, @Nullable Variant parameters, @Nullable VariantType replyType, Set<DBusCallFlags> flags, int timeoutMsec, @Nullable UnixFDList fdList, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Like g_dbus_connection_call() but also takes a GUnixFDList object.

      The file descriptors normally correspond to G_VARIANT_TYPE_HANDLE values in the body of the message. For example, if a message contains two file descriptors, fdList would have length 2, and g_variant_new_handle (0) and g_variant_new_handle (1) would appear somewhere in the body of the message (not necessarily in that order!) to represent the file descriptors at indexes 0 and 1 respectively.

      When designing D-Bus APIs that are intended to be interoperable, please note that non-GDBus implementations of D-Bus can usually only access file descriptors if they are referenced in this way by a value of type G_VARIANT_TYPE_HANDLE in the body of the message.

      This method is only available on UNIX.

      Parameters:
      busName - a unique or well-known bus name or null if this DBusConnection is not a message bus connection
      objectPath - path of remote object
      interfaceName - D-Bus interface to invoke method on
      methodName - the name of the method to invoke
      parameters - a GVariant tuple with parameters for the method or null if not passing parameters
      replyType - the expected type of the reply, or null
      flags - flags from the GDBusCallFlags enumeration
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      fdList - a GUnixFDList or null
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied or null if you don't * care about the result of the method invocation
      Since:
      2.30
    • callWithUnixFdList

      public void callWithUnixFdList(@Nullable String busName, String objectPath, String interfaceName, String methodName, @Nullable Variant parameters, @Nullable VariantType replyType, DBusCallFlags flags, int timeoutMsec, @Nullable UnixFDList fdList, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Like g_dbus_connection_call() but also takes a GUnixFDList object.

      The file descriptors normally correspond to G_VARIANT_TYPE_HANDLE values in the body of the message. For example, if a message contains two file descriptors, fdList would have length 2, and g_variant_new_handle (0) and g_variant_new_handle (1) would appear somewhere in the body of the message (not necessarily in that order!) to represent the file descriptors at indexes 0 and 1 respectively.

      When designing D-Bus APIs that are intended to be interoperable, please note that non-GDBus implementations of D-Bus can usually only access file descriptors if they are referenced in this way by a value of type G_VARIANT_TYPE_HANDLE in the body of the message.

      This method is only available on UNIX.

      Parameters:
      busName - a unique or well-known bus name or null if this DBusConnection is not a message bus connection
      objectPath - path of remote object
      interfaceName - D-Bus interface to invoke method on
      methodName - the name of the method to invoke
      parameters - a GVariant tuple with parameters for the method or null if not passing parameters
      replyType - the expected type of the reply, or null
      flags - flags from the GDBusCallFlags enumeration
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      fdList - a GUnixFDList or null
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied or null if you don't * care about the result of the method invocation
      Since:
      2.30
    • callWithUnixFdListFinish

      public Variant callWithUnixFdListFinish(@Nullable Out<UnixFDList> outFdList, AsyncResult res) throws GErrorException

      Finishes an operation started with g_dbus_connection_call_with_unix_fd_list().

      The file descriptors normally correspond to G_VARIANT_TYPE_HANDLE values in the body of the message. For example, if g_variant_get_handle() returns 5, that is intended to be a reference to the file descriptor that can be accessed by g_unix_fd_list_get (*out_fd_list, 5, ...).

      When designing D-Bus APIs that are intended to be interoperable, please note that non-GDBus implementations of D-Bus can usually only access file descriptors if they are referenced in this way by a value of type G_VARIANT_TYPE_HANDLE in the body of the message.

      Parameters:
      outFdList - return location for a GUnixFDList or null
      res - a GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_connection_call_with_unix_fd_list()
      Returns:
      null if error is set. Otherwise a non-floating GVariant tuple with return values. Free with g_variant_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.30
    • callWithUnixFdListSync

      public Variant callWithUnixFdListSync(@Nullable String busName, String objectPath, String interfaceName, String methodName, @Nullable Variant parameters, @Nullable VariantType replyType, Set<DBusCallFlags> flags, int timeoutMsec, @Nullable UnixFDList fdList, @Nullable Out<UnixFDList> outFdList, @Nullable Cancellable cancellable) throws GErrorException

      Like g_dbus_connection_call_sync() but also takes and returns GUnixFDList objects. See g_dbus_connection_call_with_unix_fd_list() and g_dbus_connection_call_with_unix_fd_list_finish() for more details.

      This method is only available on UNIX.

      Parameters:
      busName - a unique or well-known bus name or null if this DBusConnection is not a message bus connection
      objectPath - path of remote object
      interfaceName - D-Bus interface to invoke method on
      methodName - the name of the method to invoke
      parameters - a GVariant tuple with parameters for the method or null if not passing parameters
      replyType - the expected type of the reply, or null
      flags - flags from the GDBusCallFlags enumeration
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      fdList - a GUnixFDList or null
      outFdList - return location for a GUnixFDList or null
      cancellable - a GCancellable or null
      Returns:
      null if error is set. Otherwise a non-floating GVariant tuple with return values. Free with g_variant_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.30
    • callWithUnixFdListSync

      public Variant callWithUnixFdListSync(@Nullable String busName, String objectPath, String interfaceName, String methodName, @Nullable Variant parameters, @Nullable VariantType replyType, DBusCallFlags flags, int timeoutMsec, @Nullable UnixFDList fdList, @Nullable Out<UnixFDList> outFdList, @Nullable Cancellable cancellable) throws GErrorException

      Like g_dbus_connection_call_sync() but also takes and returns GUnixFDList objects. See g_dbus_connection_call_with_unix_fd_list() and g_dbus_connection_call_with_unix_fd_list_finish() for more details.

      This method is only available on UNIX.

      Parameters:
      busName - a unique or well-known bus name or null if this DBusConnection is not a message bus connection
      objectPath - path of remote object
      interfaceName - D-Bus interface to invoke method on
      methodName - the name of the method to invoke
      parameters - a GVariant tuple with parameters for the method or null if not passing parameters
      replyType - the expected type of the reply, or null
      flags - flags from the GDBusCallFlags enumeration
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      fdList - a GUnixFDList or null
      outFdList - return location for a GUnixFDList or null
      cancellable - a GCancellable or null
      Returns:
      null if error is set. Otherwise a non-floating GVariant tuple with return values. Free with g_variant_unref().
      Throws:
      GErrorException - see GError
      Since:
      2.30
    • close

      public void close(@Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Closes connection. Note that this never causes the process to exit (this might only happen if the other end of a shared message bus connection disconnects, see GDBusConnection:exit-on-close).

      Once the connection is closed, operations such as sending a message will return with the error IOErrorEnum.CLOSED. Closing a connection will not automatically flush the connection so queued messages may be lost. Use g_dbus_connection_flush() if you need such guarantees.

      If this DBusConnection is already closed, this method fails with IOErrorEnum.CLOSED.

      When this DBusConnection has been closed, the GDBusConnection::closed signal is emitted in the thread-default main context (see MainContext#pushThreadDefault) of the thread that this DBusConnection was constructed in.

      This is an asynchronous method. When the operation is finished, callback will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from. You can then call g_dbus_connection_close_finish() to get the result of the operation. See g_dbus_connection_close_sync() for the synchronous version.

      Parameters:
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied or null if you don't care about the result
      Since:
      2.26
    • closeFinish

      public boolean closeFinish(AsyncResult res) throws GErrorException
      Finishes an operation started with g_dbus_connection_close().
      Parameters:
      res - a GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_connection_close()
      Returns:
      true if the operation succeeded, false if error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • closeSync

      public boolean closeSync(@Nullable Cancellable cancellable) throws GErrorException
      Synchronously closes connection. The calling thread is blocked until this is done. See g_dbus_connection_close() for the asynchronous version of this method and more details about what it does.
      Parameters:
      cancellable - a GCancellable or null
      Returns:
      true if the operation succeeded, false if error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • emitSignal

      public boolean emitSignal(@Nullable String destinationBusName, String objectPath, String interfaceName, String signalName, @Nullable Variant parameters) throws GErrorException

      Emits a signal.

      If the parameters GVariant is floating, it is consumed.

      This can only fail if parameters is not compatible with the D-Bus protocol (IOErrorEnum.INVALID_ARGUMENT), or if this DBusConnection has been closed (IOErrorEnum.CLOSED).

      Parameters:
      destinationBusName - the unique bus name for the destination for the signal or null to emit to all listeners
      objectPath - path of remote object
      interfaceName - D-Bus interface to emit a signal on
      signalName - the name of the signal to emit
      parameters - a GVariant tuple with parameters for the signal or null if not passing parameters
      Returns:
      true unless error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • exportActionGroup

      public int exportActionGroup(String objectPath, ActionGroup actionGroup) throws GErrorException

      Exports actionGroup on this DBusConnection at objectPath.

      The implemented D-Bus API should be considered private. It is subject to change in the future.

      A given object path can only have one action group exported on it. If this constraint is violated, the export will fail and 0 will be returned (with error set accordingly).

      You can unexport the action group using unexportActionGroup(int) with the return value of this function.

      The thread default main context is taken at the time of this call. All incoming action activations and state change requests are reported from this context. Any changes on the action group that cause it to emit signals must also come from this same context. Since incoming action activations and state change requests are rather likely to cause changes on the action group, this effectively limits a given action group to being exported from only one main context.

      Parameters:
      objectPath - a D-Bus object path
      actionGroup - an action group
      Returns:
      the ID of the export (never zero), or 0 in case of failure
      Throws:
      GErrorException - see GError
      Since:
      2.32
    • exportMenuModel

      public int exportMenuModel(String objectPath, MenuModel menu) throws GErrorException

      Exports menu on this DBusConnection at objectPath.

      The implemented D-Bus API should be considered private. It is subject to change in the future.

      An object path can only have one menu model exported on it. If this constraint is violated, the export will fail and 0 will be returned (with error set accordingly).

      Exporting menus with sections containing more than G_MENU_EXPORTER_MAX_SECTION_SIZE items is not supported and results in undefined behavior.

      You can unexport the menu model using g_dbus_connection_unexport_menu_model() with the return value of this function.

      Parameters:
      objectPath - a D-Bus object path
      menu - a GMenuModel
      Returns:
      the ID of the export (never zero), or 0 in case of failure
      Throws:
      GErrorException - see GError
      Since:
      2.32
    • flush

      public void flush(@Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Asynchronously flushes connection, that is, writes all queued outgoing messages to the transport and then flushes the transport (using g_output_stream_flush_async()). This is useful in programs that want to emit a D-Bus signal and then exit immediately. Without flushing the connection, there is no guarantee that the message has been sent to the networking buffers in the OS kernel.

      This is an asynchronous method. When the operation is finished, callback will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from. You can then call g_dbus_connection_flush_finish() to get the result of the operation. See g_dbus_connection_flush_sync() for the synchronous version.

      Parameters:
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied or null if you don't care about the result
      Since:
      2.26
    • flushFinish

      public boolean flushFinish(AsyncResult res) throws GErrorException
      Finishes an operation started with g_dbus_connection_flush().
      Parameters:
      res - a GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_connection_flush()
      Returns:
      true if the operation succeeded, false if error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • flushSync

      public boolean flushSync(@Nullable Cancellable cancellable) throws GErrorException
      Synchronously flushes connection. The calling thread is blocked until this is done. See g_dbus_connection_flush() for the asynchronous version of this method and more details about what it does.
      Parameters:
      cancellable - a GCancellable or null
      Returns:
      true if the operation succeeded, false if error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • getCapabilities

      public Set<DBusCapabilityFlags> getCapabilities()
      Gets the capabilities negotiated with the remote peer
      Returns:
      zero or more flags from the GDBusCapabilityFlags enumeration
      Since:
      2.26
    • getExitOnClose

      public boolean getExitOnClose()
      Gets whether the process is terminated when this DBusConnection is closed by the remote peer. See GDBusConnection:exit-on-close for more details.
      Returns:
      whether the process is terminated when this DBusConnection is closed by the remote peer
      Since:
      2.26
    • getFlags

      public Set<DBusConnectionFlags> getFlags()
      Gets the flags used to construct this connection
      Returns:
      zero or more flags from the GDBusConnectionFlags enumeration
      Since:
      2.60
    • getGuid

      public String getGuid()
      The GUID of the peer performing the role of server when authenticating. See GDBusConnection:guid for more details.
      Returns:
      The GUID. Do not free this string, it is owned by connection.
      Since:
      2.26
    • getLastSerial

      public int getLastSerial()
      Retrieves the last serial number assigned to a GDBusMessage on the current thread. This includes messages sent via both low-level API such as g_dbus_connection_send_message() as well as high-level API such as g_dbus_connection_emit_signal(), g_dbus_connection_call() or g_dbus_proxy_call().
      Returns:
      the last used serial or zero when no message has been sent within the current thread
      Since:
      2.34
    • getPeerCredentials

      public @Nullable Credentials getPeerCredentials()

      Gets the credentials of the authenticated peer. This will always return null unless this DBusConnection acted as a server (e.g. DBusConnectionFlags.AUTHENTICATION_SERVER was passed) when set up and the client passed credentials as part of the authentication process.

      In a message bus setup, the message bus is always the server and each application is a client. So this method will always return null for message bus clients.

      Returns:
      a GCredentials or null if not available. Do not free this object, it is owned by connection.
      Since:
      2.26
    • getStream

      public IOStream getStream()

      Gets the underlying stream used for IO.

      While the GDBusConnection is active, it will interact with this stream from a worker thread, so it is not safe to interact with the stream directly.

      Returns:
      the stream used for IO
      Since:
      2.26
    • getUniqueName

      public @Nullable String getUniqueName()
      Gets the unique name of this DBusConnection as assigned by the message bus. This can also be used to figure out if this DBusConnection is a message bus connection.
      Returns:
      the unique name or null if this DBusConnection is not a message bus connection. Do not free this string, it is owned by connection.
      Since:
      2.26
    • isClosed

      public boolean isClosed()
      Gets whether this DBusConnection is closed.
      Returns:
      true if the connection is closed, false otherwise
      Since:
      2.26
    • registerObject

      public int registerObject(String objectPath, DBusInterfaceInfo interfaceInfo, @Nullable DBusInterfaceVTable vtable, @Nullable MemorySegment userData) throws GErrorException

      Registers callbacks for exported objects at objectPath with the D-Bus interface that is described in interfaceInfo.

      Calls to functions in vtable (and userDataFreeFunc) will happen in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from.

      Note that all GVariant values passed to functions in vtable will match the signature given in interfaceInfo - if a remote caller passes incorrect values, the org.freedesktop.DBus.Error.InvalidArgs is returned to the remote caller.

      Additionally, if the remote caller attempts to invoke methods or access properties not mentioned in interfaceInfo the org.freedesktop.DBus.Error.UnknownMethod resp. org.freedesktop.DBus.Error.InvalidArgs errors are returned to the caller.

      It is considered a programming error if the GDBusInterfaceGetPropertyFunc function in vtable returns a GVariant of incorrect type.

      If an existing callback is already registered at objectPath and interfaceName, then error is set to IOErrorEnum.EXISTS.

      GDBus automatically implements the standard D-Bus interfaces org.freedesktop.DBus.Properties, org.freedesktop.DBus.Introspectable and org.freedesktop.Peer, so you don't have to implement those for the objects you export. You can implement org.freedesktop.DBus.Properties yourself, e.g. to handle getting and setting of properties asynchronously.

      Note that the reference count on interfaceInfo will be incremented by 1 (unless allocated statically, e.g. if the reference count is -1, see g_dbus_interface_info_ref()) for as long as the object is exported. Also note that vtable will be copied.

      See this Gio.DBusConnection#an-example-d-bus-server for an example of how to use this method.

      Parameters:
      objectPath - the object path to register at
      interfaceInfo - introspection data for the interface
      vtable - a GDBusInterfaceVTable to call into or null
      userData - data to pass to functions in vtable
      Returns:
      0 if error is set, otherwise a registration id (never 0) that can be used with g_dbus_connection_unregister_object()
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • registerObjectWithClosures

      @Deprecated public int registerObjectWithClosures(String objectPath, DBusInterfaceInfo interfaceInfo, @Nullable Closure methodCallClosure, @Nullable Closure getPropertyClosure, @Nullable Closure setPropertyClosure) throws GErrorException
      Deprecated.
      Deprecated in favour of registerObjectWithClosures2(String, DBusInterfaceInfo, Closure, Closure, Closure), which has more binding-friendly reference counting semantics.

      Version of g_dbus_connection_register_object() using closures instead of a GDBusInterfaceVTable for easier binding in other languages.

      Note that the reference counting semantics of the function wrapped by methodCallClosure are the same as those of Gio.DBusInterfaceMethodCallFunc: ownership of a reference to the DBusMethodInvocation is transferred to the function.

      Parameters:
      objectPath - The object path to register at.
      interfaceInfo - Introspection data for the interface.
      methodCallClosure - GClosure for handling incoming method calls.
      getPropertyClosure - GClosure for getting a property.
      setPropertyClosure - GClosure for setting a property.
      Returns:
      0 if error is set, otherwise a registration ID (never 0) that can be used with g_dbus_connection_unregister_object() .
      Throws:
      GErrorException - see GError
      Since:
      2.46
    • registerObjectWithClosures2

      public int registerObjectWithClosures2(String objectPath, DBusInterfaceInfo interfaceInfo, @Nullable Closure methodCallClosure, @Nullable Closure getPropertyClosure, @Nullable Closure setPropertyClosure) throws GErrorException

      Version of registerObject(String, DBusInterfaceInfo, DBusInterfaceVTable, MemorySegment) using closures instead of a Gio.DBusInterfaceVTable for easier binding in other languages.

      In contrast to registerObject(String, DBusInterfaceInfo, DBusInterfaceVTable, MemorySegment) and registerObjectWithClosures(String, DBusInterfaceInfo, Closure, Closure, Closure), the reference counting semantics of the function wrapped by methodCallClosure are not the same as those of Gio.DBusInterfaceMethodCallFunc. Ownership of a reference to the DBusMethodInvocation is not transferred to the function. Bindings must ensure that they add a reference to the DBusMethodInvocation before calling any g_dbus_method_invocation_return_*() methods on it. This should be automatic as a result of the introspection annotations on those methods.

      Parameters:
      objectPath - The object path to register at.
      interfaceInfo - Introspection data for the interface.
      methodCallClosure - GObject.Closure for handling incoming method calls.
      getPropertyClosure - GObject.Closure for getting a property.
      setPropertyClosure - GObject.Closure for setting a property.
      Returns:
      0 if error is set, otherwise a registration ID (never 0) that can be used with unregisterObject(int).
      Throws:
      GErrorException - see GError
      Since:
      2.84
    • registerSubtree

      public int registerSubtree(String objectPath, DBusSubtreeVTable vtable, Set<DBusSubtreeFlags> flags, @Nullable MemorySegment userData) throws GErrorException

      Registers a whole subtree of dynamic objects.

      The enumerate and introspection functions in vtable are used to convey, to remote callers, what nodes exist in the subtree rooted by objectPath.

      When handling remote calls into any node in the subtree, first the enumerate function is used to check if the node exists. If the node exists or the DBusSubtreeFlags.DISPATCH_TO_UNENUMERATED_NODES flag is set the introspection function is used to check if the node supports the requested method. If so, the dispatch function is used to determine where to dispatch the call. The collected GDBusInterfaceVTable and gpointer will be used to call into the interface vtable for processing the request.

      All calls into user-provided code will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from.

      If an existing subtree is already registered at objectPath or then error is set to IOErrorEnum.EXISTS.

      Note that it is valid to register regular objects (using g_dbus_connection_register_object()) in a subtree registered with g_dbus_connection_register_subtree() - if so, the subtree handler is tried as the last resort. One way to think about a subtree handler is to consider it a fallback handler for object paths not registered via g_dbus_connection_register_object() or other bindings.

      Note that vtable will be copied so you cannot change it after registration.

      See this Gio.DBusConnection#an-example-for-exporting-a-subtree for an example of how to use this method.

      Parameters:
      objectPath - the object path to register the subtree at
      vtable - a GDBusSubtreeVTable to enumerate, introspect and dispatch nodes in the subtree
      flags - flags used to fine tune the behavior of the subtree
      userData - data to pass to functions in vtable
      Returns:
      0 if error is set, otherwise a subtree registration ID (never 0) that can be used with g_dbus_connection_unregister_subtree()
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • registerSubtree

      public int registerSubtree(String objectPath, DBusSubtreeVTable vtable, DBusSubtreeFlags flags, @Nullable MemorySegment userData) throws GErrorException

      Registers a whole subtree of dynamic objects.

      The enumerate and introspection functions in vtable are used to convey, to remote callers, what nodes exist in the subtree rooted by objectPath.

      When handling remote calls into any node in the subtree, first the enumerate function is used to check if the node exists. If the node exists or the DBusSubtreeFlags.DISPATCH_TO_UNENUMERATED_NODES flag is set the introspection function is used to check if the node supports the requested method. If so, the dispatch function is used to determine where to dispatch the call. The collected GDBusInterfaceVTable and gpointer will be used to call into the interface vtable for processing the request.

      All calls into user-provided code will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from.

      If an existing subtree is already registered at objectPath or then error is set to IOErrorEnum.EXISTS.

      Note that it is valid to register regular objects (using g_dbus_connection_register_object()) in a subtree registered with g_dbus_connection_register_subtree() - if so, the subtree handler is tried as the last resort. One way to think about a subtree handler is to consider it a fallback handler for object paths not registered via g_dbus_connection_register_object() or other bindings.

      Note that vtable will be copied so you cannot change it after registration.

      See this Gio.DBusConnection#an-example-for-exporting-a-subtree for an example of how to use this method.

      Parameters:
      objectPath - the object path to register the subtree at
      vtable - a GDBusSubtreeVTable to enumerate, introspect and dispatch nodes in the subtree
      flags - flags used to fine tune the behavior of the subtree
      userData - data to pass to functions in vtable
      Returns:
      0 if error is set, otherwise a subtree registration ID (never 0) that can be used with g_dbus_connection_unregister_subtree()
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • removeFilter

      public void removeFilter(int filterId)

      Removes a filter.

      Note that since filters run in a different thread, there is a race condition where it is possible that the filter will be running even after calling g_dbus_connection_remove_filter(), so you cannot just free data that the filter might be using. Instead, you should pass a GDestroyNotify to g_dbus_connection_add_filter(), which will be called when it is guaranteed that the data is no longer needed.

      Parameters:
      filterId - an identifier obtained from g_dbus_connection_add_filter()
      Since:
      2.26
    • sendMessage

      public boolean sendMessage(DBusMessage message, Set<DBusSendMessageFlags> flags, @Nullable Out<Integer> outSerial) throws GErrorException

      Asynchronously sends message to the peer represented by connection.

      Unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag, the serial number will be assigned by this DBusConnection and set on message via g_dbus_message_set_serial(). If outSerial is not null, then the serial number used will be written to this location prior to submitting the message to the underlying transport. While it has a volatile qualifier, this is a historical artifact and the argument passed to it should not be volatile.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If message is not well-formed, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      See this Gio.DBusConnection#an-example-d-bus-server and Gio.DBusConnection#an-example-for-file-descriptor-passing for an example of how to use this low-level API to send and receive UNIX file descriptors.

      Note that message must be unlocked, unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag.

      Parameters:
      message - a GDBusMessage
      flags - flags affecting how the message is sent
      outSerial - return location for serial number assigned to message when sending it or null
      Returns:
      true if the message was well-formed and queued for transmission, false if error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • sendMessage

      public boolean sendMessage(DBusMessage message, DBusSendMessageFlags flags, @Nullable Out<Integer> outSerial) throws GErrorException

      Asynchronously sends message to the peer represented by connection.

      Unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag, the serial number will be assigned by this DBusConnection and set on message via g_dbus_message_set_serial(). If outSerial is not null, then the serial number used will be written to this location prior to submitting the message to the underlying transport. While it has a volatile qualifier, this is a historical artifact and the argument passed to it should not be volatile.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If message is not well-formed, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      See this Gio.DBusConnection#an-example-d-bus-server and Gio.DBusConnection#an-example-for-file-descriptor-passing for an example of how to use this low-level API to send and receive UNIX file descriptors.

      Note that message must be unlocked, unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag.

      Parameters:
      message - a GDBusMessage
      flags - flags affecting how the message is sent
      outSerial - return location for serial number assigned to message when sending it or null
      Returns:
      true if the message was well-formed and queued for transmission, false if error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • sendMessageWithReply

      public void sendMessageWithReply(DBusMessage message, Set<DBusSendMessageFlags> flags, int timeoutMsec, @Nullable Out<Integer> outSerial, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Asynchronously sends message to the peer represented by connection.

      Unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag, the serial number will be assigned by this DBusConnection and set on message via g_dbus_message_set_serial(). If outSerial is not null, then the serial number used will be written to this location prior to submitting the message to the underlying transport. While it has a volatile qualifier, this is a historical artifact and the argument passed to it should not be volatile.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If cancellable is canceled, the operation will fail with IOErrorEnum.CANCELLED. If message is not well-formed, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      This is an asynchronous method. When the operation is finished, callback will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from. You can then call g_dbus_connection_send_message_with_reply_finish() to get the result of the operation. See g_dbus_connection_send_message_with_reply_sync() for the synchronous version.

      Note that message must be unlocked, unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag.

      See this Gio.DBusConnection#an-example-d-bus-server and Gio.DBusConnection#an-example-for-file-descriptor-passing for an example of how to use this low-level API to send and receive UNIX file descriptors.

      Parameters:
      message - a GDBusMessage
      flags - flags affecting how the message is sent
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      outSerial - return location for serial number assigned to message when sending it or null
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied or null if you don't care about the result
      Since:
      2.26
    • sendMessageWithReply

      public void sendMessageWithReply(DBusMessage message, DBusSendMessageFlags flags, int timeoutMsec, @Nullable Out<Integer> outSerial, @Nullable Cancellable cancellable, @Nullable AsyncReadyCallback callback)

      Asynchronously sends message to the peer represented by connection.

      Unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag, the serial number will be assigned by this DBusConnection and set on message via g_dbus_message_set_serial(). If outSerial is not null, then the serial number used will be written to this location prior to submitting the message to the underlying transport. While it has a volatile qualifier, this is a historical artifact and the argument passed to it should not be volatile.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If cancellable is canceled, the operation will fail with IOErrorEnum.CANCELLED. If message is not well-formed, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      This is an asynchronous method. When the operation is finished, callback will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from. You can then call g_dbus_connection_send_message_with_reply_finish() to get the result of the operation. See g_dbus_connection_send_message_with_reply_sync() for the synchronous version.

      Note that message must be unlocked, unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag.

      See this Gio.DBusConnection#an-example-d-bus-server and Gio.DBusConnection#an-example-for-file-descriptor-passing for an example of how to use this low-level API to send and receive UNIX file descriptors.

      Parameters:
      message - a GDBusMessage
      flags - flags affecting how the message is sent
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      outSerial - return location for serial number assigned to message when sending it or null
      cancellable - a GCancellable or null
      callback - a GAsyncReadyCallback to call when the request is satisfied or null if you don't care about the result
      Since:
      2.26
    • sendMessageWithReplyFinish

      public DBusMessage sendMessageWithReplyFinish(AsyncResult res) throws GErrorException

      Finishes an operation started with g_dbus_connection_send_message_with_reply().

      Note that error is only set if a local in-process error occurred. That is to say that the returned GDBusMessage object may be of type DBusMessageType.ERROR. Use g_dbus_message_to_gerror() to transcode this to a GError.

      See this Gio.DBusConnection#an-example-d-bus-server and Gio.DBusConnection#an-example-for-file-descriptor-passing for an example of how to use this low-level API to send and receive UNIX file descriptors.

      Parameters:
      res - a GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_connection_send_message_with_reply()
      Returns:
      a locked GDBusMessage or null if error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • sendMessageWithReplySync

      public DBusMessage sendMessageWithReplySync(DBusMessage message, Set<DBusSendMessageFlags> flags, int timeoutMsec, @Nullable Out<Integer> outSerial, @Nullable Cancellable cancellable) throws GErrorException

      Synchronously sends message to the peer represented by this DBusConnection and blocks the calling thread until a reply is received or the timeout is reached. See g_dbus_connection_send_message_with_reply() for the asynchronous version of this method.

      Unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag, the serial number will be assigned by this DBusConnection and set on message via g_dbus_message_set_serial(). If outSerial is not null, then the serial number used will be written to this location prior to submitting the message to the underlying transport. While it has a volatile qualifier, this is a historical artifact and the argument passed to it should not be volatile.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If cancellable is canceled, the operation will fail with IOErrorEnum.CANCELLED. If message is not well-formed, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      Note that error is only set if a local in-process error occurred. That is to say that the returned GDBusMessage object may be of type DBusMessageType.ERROR. Use g_dbus_message_to_gerror() to transcode this to a GError.

      See this Gio.DBusConnection#an-example-d-bus-server and Gio.DBusConnection#an-example-for-file-descriptor-passing for an example of how to use this low-level API to send and receive UNIX file descriptors.

      Note that message must be unlocked, unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag.

      Parameters:
      message - a GDBusMessage
      flags - flags affecting how the message is sent.
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      outSerial - return location for serial number assigned to message when sending it or null
      cancellable - a GCancellable or null
      Returns:
      a locked GDBusMessage that is the reply to message or null if error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • sendMessageWithReplySync

      public DBusMessage sendMessageWithReplySync(DBusMessage message, DBusSendMessageFlags flags, int timeoutMsec, @Nullable Out<Integer> outSerial, @Nullable Cancellable cancellable) throws GErrorException

      Synchronously sends message to the peer represented by this DBusConnection and blocks the calling thread until a reply is received or the timeout is reached. See g_dbus_connection_send_message_with_reply() for the asynchronous version of this method.

      Unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag, the serial number will be assigned by this DBusConnection and set on message via g_dbus_message_set_serial(). If outSerial is not null, then the serial number used will be written to this location prior to submitting the message to the underlying transport. While it has a volatile qualifier, this is a historical artifact and the argument passed to it should not be volatile.

      If this DBusConnection is closed then the operation will fail with IOErrorEnum.CLOSED. If cancellable is canceled, the operation will fail with IOErrorEnum.CANCELLED. If message is not well-formed, the operation fails with IOErrorEnum.INVALID_ARGUMENT.

      Note that error is only set if a local in-process error occurred. That is to say that the returned GDBusMessage object may be of type DBusMessageType.ERROR. Use g_dbus_message_to_gerror() to transcode this to a GError.

      See this Gio.DBusConnection#an-example-d-bus-server and Gio.DBusConnection#an-example-for-file-descriptor-passing for an example of how to use this low-level API to send and receive UNIX file descriptors.

      Note that message must be unlocked, unless flags contain the DBusSendMessageFlags.PRESERVE_SERIAL flag.

      Parameters:
      message - a GDBusMessage
      flags - flags affecting how the message is sent.
      timeoutMsec - the timeout in milliseconds, -1 to use the default timeout or G_MAXINT for no timeout
      outSerial - return location for serial number assigned to message when sending it or null
      cancellable - a GCancellable or null
      Returns:
      a locked GDBusMessage that is the reply to message or null if error is set
      Throws:
      GErrorException - see GError
      Since:
      2.26
    • setExitOnClose

      public void setExitOnClose(boolean exitOnClose)

      Sets whether the process should be terminated when this DBusConnection is closed by the remote peer. See GDBusConnection:exit-on-close for more details.

      Note that this function should be used with care. Most modern UNIX desktops tie the notion of a user session with the session bus, and expect all of a user's applications to quit when their bus connection goes away. If you are setting exitOnClose to false for the shared session bus connection, you should make sure that your application exits when the user session ends.

      Parameters:
      exitOnClose - whether the process should be terminated when this DBusConnection is closed by the remote peer
      Since:
      2.26
    • signalSubscribe

      public int signalSubscribe(@Nullable String sender, @Nullable String interfaceName, @Nullable String member, @Nullable String objectPath, @Nullable String arg0, Set<DBusSignalFlags> flags, @Nullable DBusSignalCallback callback)

      Subscribes to signals on this DBusConnection and invokes callback whenever the signal is received. Note that callback will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from.

      If this DBusConnection is not a message bus connection, sender must be null.

      If sender is a well-known name note that callback is invoked with the unique name for the owner of sender, not the well-known name as one would expect. This is because the message bus rewrites the name. As such, to avoid certain race conditions, users should be tracking the name owner of the well-known name and use that when processing the received signal.

      If one of DBusSignalFlags.MATCH_ARG0_NAMESPACE or DBusSignalFlags.MATCH_ARG0_PATH are given, arg0 is interpreted as part of a namespace or path. The first argument of a signal is matched against that part as specified by D-Bus.

      If userDataFreeFunc is non-null, it will be called (in the thread-default main context of the thread you are calling this method from) at some point after userData is no longer needed. (It is not guaranteed to be called synchronously when the signal is unsubscribed from, and may be called after this DBusConnection has been destroyed.)

      As callback is potentially invoked in a different thread from where it’s emitted, it’s possible for this to happen after g_dbus_connection_signal_unsubscribe() has been called in another thread. Due to this, userData should have a strong reference which is freed with userDataFreeFunc, rather than pointing to data whose lifecycle is tied to the signal subscription. For example, if a GObject is used to store the subscription ID from g_dbus_connection_signal_subscribe(), a strong reference to that GObject must be passed to userData, and g_object_unref() passed to userDataFreeFunc. You are responsible for breaking the resulting reference count cycle by explicitly unsubscribing from the signal when dropping the last external reference to the GObject. Alternatively, a weak reference may be used.

      It is guaranteed that if you unsubscribe from a signal using g_dbus_connection_signal_unsubscribe() from the same thread which made the corresponding g_dbus_connection_signal_subscribe() call, callback will not be invoked after g_dbus_connection_signal_unsubscribe() returns.

      The returned subscription identifier is an opaque value which is guaranteed to never be zero.

      This function can never fail.

      Parameters:
      sender - sender name to match on (unique or well-known name) or null to listen from all senders
      interfaceName - D-Bus interface name to match on or null to match on all interfaces
      member - D-Bus signal name to match on or null to match on all signals
      objectPath - object path to match on or null to match on all object paths
      arg0 - contents of first string argument to match on or null to match on all kinds of arguments
      flags - GDBusSignalFlags describing how arg0 is used in subscribing to the signal
      callback - callback to invoke when there is a signal matching the requested data
      Returns:
      a subscription identifier that can be used with g_dbus_connection_signal_unsubscribe()
      Since:
      2.26
    • signalSubscribe

      public int signalSubscribe(@Nullable String sender, @Nullable String interfaceName, @Nullable String member, @Nullable String objectPath, @Nullable String arg0, DBusSignalFlags flags, @Nullable DBusSignalCallback callback)

      Subscribes to signals on this DBusConnection and invokes callback whenever the signal is received. Note that callback will be invoked in the thread-default main context (see MainContext#pushThreadDefault) of the thread you are calling this method from.

      If this DBusConnection is not a message bus connection, sender must be null.

      If sender is a well-known name note that callback is invoked with the unique name for the owner of sender, not the well-known name as one would expect. This is because the message bus rewrites the name. As such, to avoid certain race conditions, users should be tracking the name owner of the well-known name and use that when processing the received signal.

      If one of DBusSignalFlags.MATCH_ARG0_NAMESPACE or DBusSignalFlags.MATCH_ARG0_PATH are given, arg0 is interpreted as part of a namespace or path. The first argument of a signal is matched against that part as specified by D-Bus.

      If userDataFreeFunc is non-null, it will be called (in the thread-default main context of the thread you are calling this method from) at some point after userData is no longer needed. (It is not guaranteed to be called synchronously when the signal is unsubscribed from, and may be called after this DBusConnection has been destroyed.)

      As callback is potentially invoked in a different thread from where it’s emitted, it’s possible for this to happen after g_dbus_connection_signal_unsubscribe() has been called in another thread. Due to this, userData should have a strong reference which is freed with userDataFreeFunc, rather than pointing to data whose lifecycle is tied to the signal subscription. For example, if a GObject is used to store the subscription ID from g_dbus_connection_signal_subscribe(), a strong reference to that GObject must be passed to userData, and g_object_unref() passed to userDataFreeFunc. You are responsible for breaking the resulting reference count cycle by explicitly unsubscribing from the signal when dropping the last external reference to the GObject. Alternatively, a weak reference may be used.

      It is guaranteed that if you unsubscribe from a signal using g_dbus_connection_signal_unsubscribe() from the same thread which made the corresponding g_dbus_connection_signal_subscribe() call, callback will not be invoked after g_dbus_connection_signal_unsubscribe() returns.

      The returned subscription identifier is an opaque value which is guaranteed to never be zero.

      This function can never fail.

      Parameters:
      sender - sender name to match on (unique or well-known name) or null to listen from all senders
      interfaceName - D-Bus interface name to match on or null to match on all interfaces
      member - D-Bus signal name to match on or null to match on all signals
      objectPath - object path to match on or null to match on all object paths
      arg0 - contents of first string argument to match on or null to match on all kinds of arguments
      flags - GDBusSignalFlags describing how arg0 is used in subscribing to the signal
      callback - callback to invoke when there is a signal matching the requested data
      Returns:
      a subscription identifier that can be used with g_dbus_connection_signal_unsubscribe()
      Since:
      2.26
    • signalUnsubscribe

      public void signalUnsubscribe(int subscriptionId)

      Unsubscribes from signals.

      Note that there may still be D-Bus traffic to process (relating to this signal subscription) in the current thread-default GMainContext after this function has returned. You should continue to iterate the GMainContext until the GDestroyNotify function passed to g_dbus_connection_signal_subscribe() is called, in order to avoid memory leaks through callbacks queued on the GMainContext after it’s stopped being iterated. Alternatively, any idle source with a priority lower than G_PRIORITY_DEFAULT that was scheduled after unsubscription, also indicates that all resources of this subscription are released.

      Parameters:
      subscriptionId - a subscription id obtained from g_dbus_connection_signal_subscribe()
      Since:
      2.26
    • startMessageProcessing

      public void startMessageProcessing()
      If this DBusConnection was created with DBusConnectionFlags.DELAY_MESSAGE_PROCESSING, this method starts processing messages. Does nothing on if this DBusConnection wasn't created with this flag or if the method has already been called.
      Since:
      2.26
    • unexportActionGroup

      public void unexportActionGroup(int exportId)

      Reverses the effect of a previous call to exportActionGroup(String, ActionGroup).

      It is an error to call this function with an ID that wasn’t returned from exportActionGroup(String, ActionGroup) or to call it with the same ID more than once.

      Parameters:
      exportId - the ID from exportActionGroup(String, ActionGroup)
      Since:
      2.32
    • unexportMenuModel

      public void unexportMenuModel(int exportId)

      Reverses the effect of a previous call to g_dbus_connection_export_menu_model().

      It is an error to call this function with an ID that wasn't returned from g_dbus_connection_export_menu_model() or to call it with the same ID more than once.

      Parameters:
      exportId - the ID from g_dbus_connection_export_menu_model()
      Since:
      2.32
    • unregisterObject

      public boolean unregisterObject(int registrationId)
      Unregisters an object.
      Parameters:
      registrationId - a registration id obtained from g_dbus_connection_register_object()
      Returns:
      true if the object was unregistered, false otherwise
      Since:
      2.26
    • unregisterSubtree

      public boolean unregisterSubtree(int registrationId)
      Unregisters a subtree.
      Parameters:
      registrationId - a subtree registration id obtained from g_dbus_connection_register_subtree()
      Returns:
      true if the subtree was unregistered, false otherwise
      Since:
      2.26
    • onClosed

      Emitted when the connection is closed.

      The cause of this event can be

      • If g_dbus_connection_close() is called. In this case remotePeerVanished is set to false and error is null.

      • If the remote peer closes the connection. In this case remotePeerVanished is set to true and error is set.

      • If the remote peer sends invalid or malformed data. In this case remotePeerVanished is set to false and error is set.

      Upon receiving this signal, you should give up your reference to connection. You are guaranteed that this signal is emitted only once.

      Parameters:
      handler - the signal handler
      Returns:
      a signal handler ID to keep track of the signal connection
      Since:
      2.26
      See Also:
    • emitClosed

      public void emitClosed(boolean remotePeerVanished, @Nullable GError error)
      Emits the "closed" signal. See onClosed(DBusConnection.ClosedCallback).
    • builder

      public static DBusConnection.Builder<? extends DBusConnection.Builder> builder()
      A DBusConnection.Builder object constructs a DBusConnection with the specified properties. Use the various set...() methods to set properties, and finish construction with DBusConnection.Builder.build().
      Returns:
      the builder object