方法

GioDBusConnectionsend_message_with_reply_sync

自:2.26

声明显示 [源代码]

GDBusMessage*
g_dbus_connection_send_message_with_reply_sync (
  GDBusConnection* connection,
  GDBusMessage* message,
  GDBusSendMessageFlags flags,
  gint timeout_msec,
  volatile guint32* out_serial,
  GCancellable* cancellable,
  GError** error
)

描述 [源代码]

同步地向由 connection 表示的对方发送 message,并在收到回复或达到超时限制时阻止调用线程。有关此方法的异步版本,请参见 g_dbus_connection_send_message_with_reply()

除非 flags 包含了 G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL 标志,否则序列号将由 connection 分配,并通过 g_dbus_message_set_serial() 设置在 message 上。如果 out_serial 不是 NULL,则使用的序列号将在此提交消息到底层传输之前写入该位置。虽然它有一个 volatile 质量限定符,但这是一种历史遗物,传递给它的参数不应为 volatile

如果 connection 被关闭,操作将失败并返回 G_IO_ERROR_CLOSED。如果 cancellable 被取消,操作将失败并返回 G_IO_ERROR_CANCELLED。如果 message 格式不正确,操作将失败并返回 G_IO_ERROR_INVALID_ARGUMENT

注意,只有当进程内发生局部错误时,才会设置 error。也就是说,返回的 GDBusMessage 对象可能是 G_DBUS_MESSAGE_TYPE_ERROR 类型。使用 g_dbus_message_to_gerror() 将其转换为 GError

请参阅此 [服务器][gdbus-server] 和 [客户端][gdbus-unix-fd-client],了解如何使用此低级 API 发送和接收 UNIX 文件描述符的示例。

注意,除非 flags 包含 G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL 标志,否则 message 必须解锁。

自 2.26 版本起可用

参数

message

类型: GDBusMessage

一个 GDBusMessage

数据由方法的调用者所有。
flags

类型: GDBusSendMessageFlags

影响消息发送的标志。

timeout_msec

类型: gint

超时时间(毫秒),-1 使用默认超时或 G_MAXINT 为无超时。

out_serial

类型: volatile guint32*

返回发送message时分配给它的序列号的位置或 NULL

此参数将由函数设置。
此参数可以是 NULL
cancellable

类型: GCancellable

GCancellableNULL

此参数可以是 NULL
数据由方法的调用者所有。
error

类型: GError **

可恢复错误的返回位置。

此参数可以是 NULL
如果返回位置不是 NULL,那么您必须将其初始化为 NULL GError*
如果没有错误,方法会将该参数初始化为 NULL
发生错误时,此参数将设置为新分配的 GError;调用者将获取数据的所有权,并负责释放它。

返回值

类型: GDBusMessage

一个锁定状态的 GDBusMessage,它是 message 的回复,或如果 error 被设置则为 NULL

方法调用者获取返回数据的所有权,并负责释放它。