GioDBusConnection

自 2.26 起

说明 [src]

final class Gio.DBusConnection : GObject.Object
  implements Gio.AsyncInitable, Gio.Initable {
  /* No available fields */
}

GDBusConnection 类型用于连接到远程端点的 D-Bus,如消息总线。

它是一个低级的 API,提供了很大的灵活性。例如,您可以使用任何能够表示为 GIOStream 的传输

此类极少在 D-Bus 客户端中直接使用。如果您正在编写 D-Bus 客户端,通常使用 g_bus_own_name()g_bus_watch_name()g_dbus_proxy_new_for_bus() API 更方便。

作为与通常的 GLib 规则(其中某个对象不得同时在两条线程中使用)的例外,GDBusConnection 方法可在任意线程中调用。这是为了在从任意 线程调用时,g_bus_get()g_bus_get_sync() 可以安全地返回相同的 GDBusConnection

获取 GDBusConnection 的大多数方式都会自动初始化它(即连接到 D-Bus):例如,g_dbus_connection_new()g_bus_get() 以及这些方法的同步版本,都会提供一个已初始化的连接。用于 GIO 的语言绑定应使用 g_initable_new()g_async_initable_new_async(),它们也将初始化该 连接。

如果您构造了一个未初始化的 GDBusConnection(例如通过 g_object_new()),则必须通过 g_initable_init()g_async_initable_init_async() 来初始化它,然后才能使用它的方法或属性。在尚未成功完成初始化的 GDBusConnection 上调用方法或访问属性视为无效,并导致未定义的行为。特别是,如果初始化因 GError 而失败,那么您针对该 GDBusConnection 唯一可以做的事情是通过 g_object_unref() 释放它。

示例 D-Bus 服务器

下面是一个 D-Bus 服务器的示例: gdbus-example-server.c

导出一个子树的示例

下面是一个导出一个子树的示例: gdbus-example-subtree.c

文件描述符传递的示例

下面是一个传递 UNIX 文件描述符的示例: gdbus-unix-fd-client.c

导出 GObject 的示例

下面是一个导出 GObject 的示例: gdbus-example-export.c

自 2.26 起提供

父级

构造函数

g_dbus_connection_new_finish

完成使用 g_dbus_connection_new() 开始的操作。

自 2.26 起

g_dbus_connection_new_for_address_finish

完成使用 g_dbus_connection_new_for_address() 开始的操作。

自 2.26 起

g_dbus_connection_new_for_address_sync

同步连接并设置 D-Bus 客户端连接,以便与由 address 指定的端点(address 的格式必须为 DBus 地址格式)交换 DBus 消息。

自 2.26 起

g_dbus_connection_new_sync

同步为交换 D-Bus 消息设置一个 D-Bus 连接,该连接的目标端点由 stream 表示。

自 2.26 起

函数

g_dbus_connection_new

异步为交换 D-Bus 消息设置一个 D-Bus 连接,该连接的目标端点由 stream 表示。

自 2.26 起

g_dbus_connection_new_for_address

异步连接并设置 D-Bus 客户端连接,以便与 address 指定的端点交换 D-Bus 消息,该端点必须采用D-Bus 地址格式

自 2.26 起

实例方法

g_dbus_connection_add_filter

添加消息过滤器。过滤器是在所有传入和传出的消息在标准分派之前在这些消息上运行的处理程序。按添加的顺序运行过滤器。可将同一个处理程序添加为过滤器多次,在这种情况下,该处理程序将运行多次。在过滤器回调期间添加的过滤器将不会在正在处理的消息上运行。过滤器函数可以修改甚至删除消息。

自 2.26 起

g_dbus_connection_call

异步调用远程对象 object_path 上拥有 bus_nameinterface_name D-Bus 接口上的 method_name 方法。

自 2.26 起

g_dbus_connection_call_finish

完成使用 g_dbus_connection_call() 启动的操作。

自 2.26 起

g_dbus_connection_call_sync

同步调用远程对象 object_path 上拥有 bus_nameinterface_name D-Bus 接口上的 method_name 方法。

自 2.26 起

g_dbus_connection_call_with_unix_fd_list

g_dbus_connection_call() 相同,但还采用一个 GUnixFDList 对象。

版本:2.30

g_dbus_connection_call_with_unix_fd_list_finish

完成使用 g_dbus_connection_call_with_unix_fd_list() 启动的操作。

版本:2.30

g_dbus_connection_call_with_unix_fd_list_sync

g_dbus_connection_call_sync() 相同,但还采用并返回 GUnixFDList 对象。有关更多详细信息,请参见 g_dbus_connection_call_with_unix_fd_list() 和 g_dbus_connection_call_with_unix_fd_list_finish()。

版本:2.30

g_dbus_connection_close

关闭 connection。请注意,这绝不会导致进程退出(仅当共享消息总线连接的另一端断开连接时,这种情况才可能发生,请参见 GDBusConnection:exit-on-close)。

自 2.26 起

g_dbus_connection_close_finish

完成使用 g_dbus_connection_close() 启动的操作。

自 2.26 起

g_dbus_connection_close_sync

同步关闭 connection。该调用线程将被阻塞,直到此操作完成。有关此方法的异步版本及其执行的操作的更多详细信息,请参见 g_dbus_connection_close()。

自 2.26 起

g_dbus_connection_emit_signal

发出信号。

自 2.26 起

g_dbus_connection_export_action_group

connection 上的 object_path 处导出 action_group

版本:2.32

g_dbus_connection_export_menu_model

connection 上的 object_path 处导出 menu

版本:2.32

g_dbus_connection_flush

异步刷新 connection,即,将所有排队的传出消息写入传输,然后刷新传输(使用 g_output_stream_flush_async())。这对于想要发出 D-Bus 信号然后立即退出的程序非常有用。如果不刷新连接,则无法保证已将消息发送到 OS 内核的网络缓冲区。

自 2.26 起

g_dbus_connection_flush_finish

完成使用 g_dbus_connection_flush() 启动的操作。

自 2.26 起

g_dbus_connection_flush_sync

同步刷新 connection。该调用线程将被阻塞,直到此操作完成。有关此方法的异步版本及其执行的操作的更多详细信息,请参见 g_dbus_connection_flush()。

自 2.26 起

g_dbus_connection_get_capabilities

获取与远程对等体协商的功能。

自 2.26 起

g_dbus_connection_get_exit_on_close

获取当远程对等体关闭 connection 时进程是否终止。有关更多详细信息,请参见 GDBusConnection:exit-on-close

自 2.26 起

g_dbus_connection_get_flags

获取用于构建此连接的标志。

版本:2.60

g_dbus_connection_get_guid

执行身份验证时的服务器角色的对等体的 GUID。有关更多详细信息,请参见 GDBusConnection:guid

自 2.26 起

g_dbus_connection_get_last_serial

检索分配给当前线程上 GDBusMessage 的最后一个序列号。这包括通过低级别的 API(如 g_dbus_connection_send_message())和高级 API(如 g_dbus_connection_emit_signal()、g_dbus_connection_call() 或 g_dbus_proxy_call())发送的消息。

版本:2.34

g_dbus_connection_get_peer_credentials

获取已授权对等方的凭证。如果不使用连接作为服务器(例如,在设置时传递了 G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER),并且客户端作为认证过程的一部分传递了凭证,那么这将始终返回 NULL

自 2.26 起

g_dbus_connection_get_stream

获取用于 IO 的底层流。

自 2.26 起

g_dbus_connection_get_unique_name

获取消息总线分配的 connection 的唯一名称。也可以用于找出 connection 是否是消息总线连接。

自 2.26 起

g_dbus_connection_is_closed

获取 connection 是否已关闭。

自 2.26 起

g_dbus_connection_register_object

使用 interface_info 中描述的 D-Bus 接口在 object_path 上为导出的对象注册回调。

自 2.26 起

g_dbus_connection_register_object_with_closures

g_dbus_connection_register_object() 的版本,为其他语言中更简单的绑定使用闭包,而不是 GDBusInterfaceVTable

since: 2.46

g_dbus_connection_register_subtree

注册动态对象的整个子树。

自 2.26 起

g_dbus_connection_remove_filter

移除一个过滤器。

自 2.26 起

g_dbus_connection_send_message

异步向 connection 表示的对等方发送 message

自 2.26 起

g_dbus_connection_send_message_with_reply

异步向 connection 表示的对等方发送 message

自 2.26 起

g_dbus_connection_send_message_with_reply_finish

完成使用 g_dbus_connection_send_message_with_reply() 启动的操作。

自 2.26 起

g_dbus_connection_send_message_with_reply_sync

同步向 connection 表示的对等方发送 message,并在收到回复或超时之前阻塞调用线程。有关此方法的异步版本,请参阅 g_dbus_connection_send_message_with_reply()

自 2.26 起

g_dbus_connection_set_exit_on_close

设置当远端对等方关闭 `connection` 时是否终止进程。有关更多详情,请参阅 `GDBusConnection:exit-on-close`。

自 2.26 起

g_dbus_connection_signal_subscribe

订阅 `connection` 上的信号,并在收到信号时调用 `callback`。请注意,将在您调用此方法所属线程的 [线程默认主上下文][g-main-context-push-thread-default] 中调用 `callback`。

自 2.26 起

g_dbus_connection_signal_unsubscribe

取消订阅信号。

自 2.26 起

g_dbus_connection_start_message_processing

如果使用 G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING 创建了 connection,则此方法开始处理消息。如果不使用该标志创建了 connection,或者已经调用了该方法,则此方法不执行任何操作。

自 2.26 起

g_dbus_connection_unexport_action_group

撤消对 g_dbus_connection_export_action_group() 的先前调用的影响。

版本:2.32

g_dbus_connection_unexport_menu_model

撤消对 g_dbus_connection_export_menu_model() 的先前调用的影响。

版本:2.32

g_dbus_connection_unregister_object

取消注册一个对象。

自 2.26 起

g_dbus_connection_unregister_subtree

取消注册一个子树。

自 2.26 起

GObject 继承的方法 (43)

有关方法的完整列表,请参阅 GObject

GAsyncInitable 继承的方法 (3)
g_async_initable_init_async

启动对实现该接口对象的异步初始化。在最初构建后,在实际使用对象之前必须完成此操作。如果对象还实现了 GInitable,您还可以选择调用 g_initable_init()

since: 2.22

g_async_initable_init_finish

完成异步初始化并返回结果。请参阅 g_async_initable_init_async()。

since: 2.22

g_async_initable_new_finish

完成各种 g_async_initable_new 调用的异步构造,在执行时返回 created 对象或 NULL 执行。

since: 2.22

GInitable 中继承的方法 (1)
g_initable_init

用于初始化要实现的接口对象。

since: 2.22

属性

Gio.DBusConnection:address

一个 D-Bus 地址,用于在建立连接时指定可以使用的潜在端点。

自 2.26 起

Gio.DBusConnection:authentication-observer

一个 GDBusAuthObserver 对象,用于帮助执行认证过程或为 NULL

自 2.26 起

Gio.DBusConnection:capabilities

GDBusCapabilityFlags 枚举代表与其他对等方协商的连接功能的标志。

自 2.26 起

Gio.DBusConnection:closed

一个布尔值,指定连接是否已关闭。

自 2.26 起

Gio.DBusConnection:exit-on-close

一个布尔值,用于指定如果连接是由远程对等方关闭,是否会终止进程(通过调用 raise(SIGTERM))。

自 2.26 起

Gio.DBusConnection:flags

GDBusConnectionFlags 枚举的标志。

自 2.26 起

Gio.DBusConnection:guid

在进行认证时执行服务器角色的对等方的 GUID

自 2.26 起

Gio.DBusConnection:stream

用于 I/O 的基础 GIOStream

自 2.26 起

Gio.DBusConnection:unique-name

由消息总线指定唯一名称或 NULL,如果连接未打开或不是消息总线连接。

自 2.26 起

信号

Gio.DBusConnection::closed

当完成连接时会发出。

自 2.26 起

GObject 中继承的信号 (1)
GObject::notify

当对象的一个属性已通过 g_object_set_property()、g_object_set() 等设置其值时,会在该对象上发出通知信号。