gi-gio-2.0.27: Gio bindings

Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria
Safe Haskell | None
Language | Haskell2010

GI.Gio.Structs.DBusInterfaceVTable

Contents

- Exported types
- Methods
  - Overloaded methods
- Properties
  - getProperty
  - methodCall
  - setProperty

Description

Virtual table for handling properties and method calls for a D-Bus interface.

Since 2.38, if you want to handle getting/setting D-Bus properties asynchronously, give `Nothing` 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 `DBusMethodInvocation` object passed to the `method_call()` function is transferred to your handler; you must call one of the methods of `DBusMethodInvocation` 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 `DBusMethodInvocation` passed to the `methodCall` handler can be queried with `dBusMethodInvocationGetPropertyInfo` to get a pointer to the `DBusPropertyInfo` of the property.

If you have readable properties specified in your interface info, you must ensure that you either provide a non-`Nothing` `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-`Nothing` `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`.

Since: 2.26

Synopsis

- newtype DBusInterfaceVTable = DBusInterfaceVTable (ManagedPtr DBusInterfaceVTable)
- newZeroDBusInterfaceVTable :: MonadIO m => m DBusInterfaceVTable
- clearDBusInterfaceVTableGetProperty :: MonadIO m => DBusInterfaceVTable -> m ()
- getDBusInterfaceVTableGetProperty :: MonadIO m => DBusInterfaceVTable -> m (Maybe DBusInterfaceGetPropertyFunc_WithClosures)
- setDBusInterfaceVTableGetProperty :: MonadIO m => DBusInterfaceVTable -> FunPtr C_DBusInterfaceGetPropertyFunc -> m ()
- clearDBusInterfaceVTableMethodCall :: MonadIO m => DBusInterfaceVTable -> m ()
- getDBusInterfaceVTableMethodCall :: MonadIO m => DBusInterfaceVTable -> m (Maybe DBusInterfaceMethodCallFunc_WithClosures)
- setDBusInterfaceVTableMethodCall :: MonadIO m => DBusInterfaceVTable -> FunPtr C_DBusInterfaceMethodCallFunc -> m ()
- clearDBusInterfaceVTableSetProperty :: MonadIO m => DBusInterfaceVTable -> m ()
- getDBusInterfaceVTableSetProperty :: MonadIO m => DBusInterfaceVTable -> m (Maybe DBusInterfaceSetPropertyFunc_WithClosures)
- setDBusInterfaceVTableSetProperty :: MonadIO m => DBusInterfaceVTable -> FunPtr C_DBusInterfaceSetPropertyFunc -> m ()

# Exported types

newtype DBusInterfaceVTable Source #

Memory-managed wrapper type.

Constructors

DBusInterfaceVTable (ManagedPtr DBusInterfaceVTable) |

#### Instances

Instances details

Eq DBusInterfaceVTable Source # |
Instance details Defined in GI.Gio.Structs.DBusInterfaceVTable Methods (==) :: DBusInterfaceVTable -> DBusInterfaceVTable -> Bool # (/=) :: DBusInterfaceVTable -> DBusInterfaceVTable -> Bool #
CallocPtr DBusInterfaceVTable Source # |
Instance details Defined in GI.Gio.Structs.DBusInterfaceVTable Methods boxedPtrCalloc :: IO (Ptr DBusInterfaceVTable) Source #
BoxedPtr DBusInterfaceVTable Source # |
Instance details Defined in GI.Gio.Structs.DBusInterfaceVTable Methods boxedPtrCopy :: DBusInterfaceVTable -> IO DBusInterfaceVTable Source # boxedPtrFree :: DBusInterfaceVTable -> IO () Source #
ManagedPtrNewtype DBusInterfaceVTable Source # |
Instance details Defined in GI.Gio.Structs.DBusInterfaceVTable Methods toManagedPtr :: DBusInterfaceVTable -> ManagedPtr DBusInterfaceVTable Source #
tag ~ 'AttrSet => Constructible DBusInterfaceVTable tag Source # |
Instance details Defined in GI.Gio.Structs.DBusInterfaceVTable Methods new :: MonadIO m => (ManagedPtr DBusInterfaceVTable -> DBusInterfaceVTable) -> [AttrOp DBusInterfaceVTable tag] -> m DBusInterfaceVTable Source #

newZeroDBusInterfaceVTable :: MonadIO m => m DBusInterfaceVTable Source #

Construct a `DBusInterfaceVTable` struct initialized to zero.

# Methods

## Overloaded methods

# Properties

## getProperty

Function for getting a property.

clearDBusInterfaceVTableGetProperty :: MonadIO m => DBusInterfaceVTable -> m () Source #

Set the value of the “`get_property`” field to `Nothing`. When overloading is enabled, this is equivalent to

    clear #getProperty

getDBusInterfaceVTableGetProperty :: MonadIO m => DBusInterfaceVTable -> m (Maybe DBusInterfaceGetPropertyFunc_WithClosures) Source #

Get the value of the “`get_property`” field. When overloading is enabled, this is equivalent to

    get dBusInterfaceVTable #getProperty

setDBusInterfaceVTableGetProperty :: MonadIO m => DBusInterfaceVTable -> FunPtr C_DBusInterfaceGetPropertyFunc -> m () Source #

Set the value of the “`get_property`” field. When overloading is enabled, this is equivalent to

    set dBusInterfaceVTable [ #getProperty := value ]

## methodCall

Function for handling incoming method calls.

clearDBusInterfaceVTableMethodCall :: MonadIO m => DBusInterfaceVTable -> m () Source #

Set the value of the “`method_call`” field to `Nothing`. When overloading is enabled, this is equivalent to

    clear #methodCall

getDBusInterfaceVTableMethodCall :: MonadIO m => DBusInterfaceVTable -> m (Maybe DBusInterfaceMethodCallFunc_WithClosures) Source #

Get the value of the “`method_call`” field. When overloading is enabled, this is equivalent to

    get dBusInterfaceVTable #methodCall

setDBusInterfaceVTableMethodCall :: MonadIO m => DBusInterfaceVTable -> FunPtr C_DBusInterfaceMethodCallFunc -> m () Source #

Set the value of the “`method_call`” field. When overloading is enabled, this is equivalent to

    set dBusInterfaceVTable [ #methodCall := value ]

## setProperty

Function for setting a property.

clearDBusInterfaceVTableSetProperty :: MonadIO m => DBusInterfaceVTable -> m () Source #

Set the value of the “`set_property`” field to `Nothing`. When overloading is enabled, this is equivalent to

    clear #setProperty

getDBusInterfaceVTableSetProperty :: MonadIO m => DBusInterfaceVTable -> m (Maybe DBusInterfaceSetPropertyFunc_WithClosures) Source #

Get the value of the “`set_property`” field. When overloading is enabled, this is equivalent to

    get dBusInterfaceVTable #setProperty

setDBusInterfaceVTableSetProperty :: MonadIO m => DBusInterfaceVTable -> FunPtr C_DBusInterfaceSetPropertyFunc -> m () Source #

Set the value of the “`set_property`” field. When overloading is enabled, this is equivalent to

    set dBusInterfaceVTable [ #setProperty := value ]