方法
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
-
影响消息发送的标志。
timeout_msec
-
类型:
gint
超时时间(毫秒),-1 使用默认超时或
G_MAXINT
为无超时。 out_serial
-
类型:
volatile guint32*
返回发送
message
时分配给它的序列号的位置或NULL
。此参数将由函数设置。 此参数可以是 NULL
。 cancellable
-
类型:
GCancellable
GCancellable
或NULL
。此参数可以是 NULL
。数据由方法的调用者所有。 error
-
类型:
GError **
可恢复错误的返回位置。
此参数可以是 NULL
。如果返回位置不是 NULL
,那么您必须将其初始化为NULL
GError*
。如果没有错误,方法会将该参数初始化为 NULL
。发生错误时,此参数将设置为新分配的 GError
;调用者将获取数据的所有权,并负责释放它。
返回值
类型: GDBusMessage
一个锁定状态的 GDBusMessage
,它是 message
的回复,或如果 error
被设置则为 NULL
。
方法调用者获取返回数据的所有权,并负责释放它。 |