方法

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

类型: GDBusSendMessageFlags

影响消息发送方式的标志。

timeout_msec

类型: gint

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

out_serial

类型: volatile guint32*

发送消息时为 message 分配的序列号的返回位置或 NULL

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

类型: GCancellable

GCancellableNULL

该参数可以是 NULL
数据由方法调用者所有。
callback

类型: GAsyncReadyCallback

请求满足时调用的 GAsyncReadyCallbackNULL(如果您不关心结果)。

该参数可以是 NULL
user_data

类型: gpointer

传递给 callback 的数据。

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