类
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_for_address_sync
同步连接并设置 D-Bus 客户端连接,以便与由 address
指定的端点(address
的格式必须为 DBus 地址格式)交换 DBus 消息。
自 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_name
的 interface_name
D-Bus 接口上的 method_name
方法。
自 2.26 起
g_dbus_connection_call_sync
同步调用远程对象 object_path
上拥有 bus_name
的 interface_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_sync
同步关闭 connection
。该调用线程将被阻塞,直到此操作完成。有关此方法的异步版本及其执行的操作的更多详细信息,请参见 g_dbus_connection_close()。
自 2.26 起
g_dbus_connection_flush
异步刷新 connection
,即,将所有排队的传出消息写入传输,然后刷新传输(使用 g_output_stream_flush_async())。这对于想要发出 D-Bus 信号然后立即退出的程序非常有用。如果不刷新连接,则无法保证已将消息发送到 OS 内核的网络缓冲区。
自 2.26 起
g_dbus_connection_flush_sync
同步刷新 connection
。该调用线程将被阻塞,直到此操作完成。有关此方法的异步版本及其执行的操作的更多详细信息,请参见 g_dbus_connection_flush()。
自 2.26 起
g_dbus_connection_get_exit_on_close
获取当远程对等体关闭 connection
时进程是否终止。有关更多详细信息,请参见 GDBusConnection:exit-on-close
。
自 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_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_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_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
从 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)
信号
从 GObject 中继承的信号 (1)
GObject::notify
当对象的一个属性已通过 g_object_set_property()、g_object_set() 等设置其值时,会在该对象上发出通知信号。