方法
GioDBusConnectionsend_message_with_reply
since: 2.26
声明 [src]
void
g_dbus_connection_send_message_with_reply (
GDBusConnection* connection,
GDBusMessage* message,
GDBusSendMessageFlags flags,
gint timeout_msec,
volatile guint32* out_serial,
GCancellable* cancellable,
GAsyncReadyCallback callback,
gpointer user_data
)
描述 [src]
异步地向由 connection
表示的伙伴发送 message
。
除非 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
。
这是一个异步方法。操作完成后,callback
将在调用此方法的线程的 [线程默认主上下文][g-main-context-push-thread-default] 中被调用。然后,您可以调用 g_dbus_connection_send_message_with_reply_finish()
来获取操作的结果。关于同步版本,请参阅 g_dbus_connection_send_message_with_reply_sync()
。
注意,除非 flags
包含 G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL
标志,否则 message
必须解锁。
请参阅此 [服务器][gdbus-server] 和 [客户端][gdbus-unix-fd-client],了解如何使用此底层 API 来发送和接收 UNIX 文件描述符的示例。
自 2.26 版本起可用。
此方法会异步完成。请使用 g_dbus_connection_send_message_with_reply_finish()
在 GAsyncReadyCallback
中获取操作结果。
参数
message
-
类型:
GDBusMessage
GDBusMessage
。数据由方法调用者所有。 flags
-
影响消息发送方式的标志。
timeout_msec
-
类型:
gint
超时时间(毫秒),-1 使用默认超时或
G_MAXINT
无超时。 out_serial
-
类型:
volatile guint32*
发送消息时为
message
分配的序列号的返回位置或NULL
。该参数将由函数设置。 该参数可以是 NULL
。 cancellable
-
类型:
GCancellable
GCancellable
或NULL
。该参数可以是 NULL
。数据由方法调用者所有。 callback
-
请求满足时调用的
GAsyncReadyCallback
或NULL
(如果您不关心结果)。该参数可以是 NULL
。 user_data
-
类型:
gpointer
传递给
callback
的数据。该参数可以是 NULL
。数据由方法调用者所有。