方法

自 2.26以来

声明 [源代码]

GVariant*
g_dbus_connection_call_sync (
  GDBusConnection* connection,
  const gchar* bus_name,
  const gchar* object_path,
  const gchar* interface_name,
  const gchar* method_name,
  GVariant* parameters,
  const GVariantType* reply_type,
  GDBusCallFlags flags,
  gint timeout_msec,
  GCancellable* cancellable,
  GError** error
)

描述 [源代码]

同步在远程对象上的interface_name D-Bus接口调用method_name方法,该对象由bus_name拥有。

如果connection被关闭,则操作将以G_IO_ERROR_CLOSED失败。如果取消cancellable,则操作将以G_IO_ERROR_CANCELLED失败。如果parameters包含与D-Bus协议不兼容的值,则操作以G_IO_ERROR_INVALID_ARGUMENT失败。

如果reply_type非空,则检查回复是否有此类型并触发错误,如果不匹配。换句话说,如果你提供reply_type,则任何非空返回值都将为此类型。

如果parameters GVariant是浮动的,它将被消耗。这允许方便地使用 g_variant_new() ,例如。

 g_dbus_connection_call_sync (connection,
                              "org.freedesktop.StringThings",
                              "/org/freedesktop/StringThings",
                              "org.freedesktop.StringThings",
                              "TwoStrings",
                              g_variant_new ("(ss)",
                                             "Thing One",
                                             "Thing Two"),
                              NULL,
                              G_DBUS_CALL_FLAGS_NONE,
                              -1,
                              NULL,
                              &error);

调用线程将被阻塞,直到收到回复。请参阅此方法的异步版本g_dbus_connection_call()

自 2.26以来

参数

bus_name

类型: const gchar*

一个唯一或已知的总线名称,或如果connection不是一个消息总线连接,则为NULL

此参数可以是NULL
数据由方法的调用者所有。
该值是一个以NUL结尾的UTF-8字符串。
object_path

类型: const gchar*

远程对象的路径。

数据由方法的调用者所有。
该值是一个以NUL结尾的UTF-8字符串。
interface_name

类型: const gchar*

在D-Bus接口上调用方法的接口。

数据由方法的调用者所有。
该值是一个以NUL结尾的UTF-8字符串。
method_name

类型: const gchar*

要调用的方法名。

数据由方法的调用者所有。
该值是一个以NUL结尾的UTF-8字符串。
parameters

类型: GVariant

包含方法参数的GVariant元组,或者如果不传递参数则为NULL

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

类型: GVariantType

回复的预期类型,或NULL

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

类型: GDBusCallFlags

GDBusCallFlags枚举中的标志。

timeout_msec

类型: gint

以毫秒为单位的超时时间,-1表示使用默认超时,或G_MAXINT表示无超时。

cancellable

类型: GCancellable

一个GCancellableNULL

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

类型: GError **

可恢复错误的返回位置。

此参数可以是NULL
如果返回位置不是NULL,那么您必须将其初始化为NULLGError*
如果没有错误,方法将保留参数的初始化为NULL
出错时,参数将被设置为新的GError分配;调用者将拥有数据,并负责释放它。

返回值

类型: GVariant

NULL如果设置了error。否则是一个具有返回值的非浮动GVariant元组。使用g_variant_unref()释放。

方法调用者拥有返回的数据,并负责释放它。