Class DBusInterfaceVTable
- All Implemented Interfaces:
Proxy
Since 2.38, if you want to handle getting/setting D-Bus properties
asynchronously, give null
as your get_property() or set_property()
function. The D-Bus call will be directed to your methodCall
function,
with the provided interfaceName
set to "org.freedesktop.DBus.Properties".
Ownership of the GDBusMethodInvocation
object passed to the
method_call() function is transferred to your handler; you must
call one of the methods of GDBusMethodInvocation
to return a reply
(possibly empty), or an error. These functions also take ownership
of the passed-in invocation object, so unless the invocation
object has otherwise been referenced, it will be then be freed.
Calling one of these functions may be done within your
method_call() implementation but it also can be done at a later
point to handle the method asynchronously.
The usual checks on the validity of the calls is performed. For
Get
calls, an error is automatically returned if the property does
not exist or the permissions do not allow access. The same checks are
performed for Set
calls, and the provided value is also checked for
being the correct type.
For both Get
and Set
calls, the GDBusMethodInvocation
passed to the methodCall
handler can be queried with
g_dbus_method_invocation_get_property_info() to get a pointer
to the GDBusPropertyInfo
of the property.
If you have readable properties specified in your interface info,
you must ensure that you either provide a non-null
getProperty
()
function or provide implementations of both the Get
and GetAll
methods on org.freedesktop.DBus.Properties interface in your methodCall
function. Note that the required return type of the Get
call is
(v)
, not the type of the property. GetAll
expects a return value
of type a{sv}
.
If you have writable properties specified in your interface info,
you must ensure that you either provide a non-null
setProperty
()
function or provide an implementation of the Set
call. If implementing
the call, you must return the value of type G_VARIANT_TYPE_UNIT
.
-
Constructor Summary
ConstructorDescriptionAllocate a new DBusInterfaceVTable.DBusInterfaceVTable
(Arena arena) Allocate a new DBusInterfaceVTable.DBusInterfaceVTable
(MemorySegment address) Create a DBusInterfaceVTable proxy instance for the provided memory address.DBusInterfaceVTable
(DBusInterfaceMethodCallFunc methodCall, DBusInterfaceGetPropertyFunc getProperty, DBusInterfaceSetPropertyFunc setProperty) Allocate a new DBusInterfaceVTable with the fields set to the provided values.DBusInterfaceVTable
(DBusInterfaceMethodCallFunc methodCall, DBusInterfaceGetPropertyFunc getProperty, DBusInterfaceSetPropertyFunc setProperty, Arena arena) Allocate a new DBusInterfaceVTable with the fields set to the provided values. -
Method Summary
Modifier and TypeMethodDescriptionstatic MemoryLayout
The memory layout of the native struct.Read the value of the fieldget_property
.Read the value of the fieldmethod_call
.Read the value of the fieldset_property
.void
writeGetProperty
(DBusInterfaceGetPropertyFunc getProperty, Arena _arena) Write a value in the fieldget_property
.void
writeMethodCall
(DBusInterfaceMethodCallFunc methodCall, Arena _arena) Write a value in the fieldmethod_call
.void
writeSetProperty
(DBusInterfaceSetPropertyFunc setProperty, Arena _arena) Write a value in the fieldset_property
.Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
-
Constructor Details
-
DBusInterfaceVTable
Create a DBusInterfaceVTable proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
DBusInterfaceVTable
Allocate a new DBusInterfaceVTable.- Parameters:
arena
- to control the memory allocation scope
-
DBusInterfaceVTable
public DBusInterfaceVTable()Allocate a new DBusInterfaceVTable. The memory is allocated withArena.ofAuto()
. -
DBusInterfaceVTable
public DBusInterfaceVTable(DBusInterfaceMethodCallFunc methodCall, DBusInterfaceGetPropertyFunc getProperty, DBusInterfaceSetPropertyFunc setProperty, Arena arena) Allocate a new DBusInterfaceVTable with the fields set to the provided values.- Parameters:
methodCall
- value for the fieldmethodCall
getProperty
- value for the fieldgetProperty
setProperty
- value for the fieldsetProperty
arena
- to control the memory allocation scope
-
DBusInterfaceVTable
public DBusInterfaceVTable(DBusInterfaceMethodCallFunc methodCall, DBusInterfaceGetPropertyFunc getProperty, DBusInterfaceSetPropertyFunc setProperty) Allocate a new DBusInterfaceVTable with the fields set to the provided values. The memory is allocated withArena.ofAuto()
.- Parameters:
methodCall
- value for the fieldmethodCall
getProperty
- value for the fieldgetProperty
setProperty
- value for the fieldsetProperty
-
-
Method Details
-
getMemoryLayout
The memory layout of the native struct.- Returns:
- the memory layout
-
readMethodCall
Read the value of the fieldmethod_call
.- Returns:
- The value of the field
method_call
-
writeMethodCall
Write a value in the fieldmethod_call
.- Parameters:
methodCall
- The new value for the fieldmethod_call
_arena
- to control the memory allocation scope
-
readGetProperty
Read the value of the fieldget_property
.- Returns:
- The value of the field
get_property
-
writeGetProperty
Write a value in the fieldget_property
.- Parameters:
getProperty
- The new value for the fieldget_property
_arena
- to control the memory allocation scope
-
readSetProperty
Read the value of the fieldset_property
.- Returns:
- The value of the field
set_property
-
writeSetProperty
Write a value in the fieldset_property
.- Parameters:
setProperty
- The new value for the fieldset_property
_arena
- to control the memory allocation scope
-