Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
- Exported types
- Methods
- call
- callFinish
- callSync
- callWithUnixFdList
- callWithUnixFdListFinish
- callWithUnixFdListSync
- getCachedProperty
- getCachedPropertyNames
- getConnection
- getDefaultTimeout
- getFlags
- getInterfaceInfo
- getInterfaceName
- getName
- getNameOwner
- getObjectPath
- new
- newFinish
- newForBus
- newForBusFinish
- newForBusSync
- newSync
- setCachedProperty
- setDefaultTimeout
- setInterfaceInfo
- Properties
- Signals
DBusProxy
is a base class used for proxies to access a D-Bus
interface on a remote object. A DBusProxy
can be constructed for
both well-known and unique names.
By default, DBusProxy
will cache all properties (and listen to
changes) of the remote object, and proxy all signals that gets
emitted. This behaviour can be changed by passing suitable
DBusProxyFlags
when the proxy is created. If the proxy is for a
well-known name, the property cache is flushed when the name owner
vanishes and reloaded when a name owner appears.
If a DBusProxy
is used for a well-known name, the owner of the
name is tracked and can be read from
DBusProxy
:g-name-owner
. Connect to the Object
::notify
signal to
get notified of changes. Additionally, only signals and property
changes emitted from the current name owner are considered and
calls are always sent to the current name owner. This avoids a
number of race conditions when the name is lost by one owner and
claimed by another. However, if no name owner currently exists,
then calls will be sent to the well-known name which may result in
the message bus launching an owner (unless
DBusProxyFlagsDoNotAutoStart
is set).
The generic DBusProxy
::g-properties-changed
and
DBusProxy
::g-signal
signals are not very convenient to work with.
Therefore, the recommended way of working with proxies is to subclass
DBusProxy
, and have more natural properties and signals in your derived
class. This [example][gdbus-example-gdbus-codegen] shows how this can
easily be done using the [gdbus-codegen][gdbus-codegen] tool.
A DBusProxy
instance can be used from multiple threads but note
that all signals (e.g. DBusProxy
::g-signal
, DBusProxy
::g-properties-changed
and Object
::notify
) are emitted in the
[thread-default main context][g-main-context-push-thread-default]
of the thread where the instance was constructed.
An example using a proxy for a well-known name can be found in gdbus-example-watch-proxy.c
- newtype DBusProxy = DBusProxy (ManagedPtr DBusProxy)
- class GObject o => IsDBusProxy o
- toDBusProxy :: IsDBusProxy o => o -> IO DBusProxy
- noDBusProxy :: Maybe DBusProxy
- data DBusProxyCallMethodInfo
- dBusProxyCall :: (HasCallStack, MonadIO m, IsDBusProxy a, IsCancellable b) => a -> Text -> Maybe GVariant -> [DBusCallFlags] -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()
- data DBusProxyCallFinishMethodInfo
- dBusProxyCallFinish :: (HasCallStack, MonadIO m, IsDBusProxy a, IsAsyncResult b) => a -> b -> m GVariant
- data DBusProxyCallSyncMethodInfo
- dBusProxyCallSync :: (HasCallStack, MonadIO m, IsDBusProxy a, IsCancellable b) => a -> Text -> Maybe GVariant -> [DBusCallFlags] -> Int32 -> Maybe b -> m GVariant
- data DBusProxyCallWithUnixFdListMethodInfo
- dBusProxyCallWithUnixFdList :: (HasCallStack, MonadIO m, IsDBusProxy a, IsUnixFDList b, IsCancellable c) => a -> Text -> Maybe GVariant -> [DBusCallFlags] -> Int32 -> Maybe b -> Maybe c -> Maybe AsyncReadyCallback -> m ()
- data DBusProxyCallWithUnixFdListFinishMethodInfo
- dBusProxyCallWithUnixFdListFinish :: (HasCallStack, MonadIO m, IsDBusProxy a, IsAsyncResult b) => a -> b -> m (GVariant, UnixFDList)
- data DBusProxyCallWithUnixFdListSyncMethodInfo
- dBusProxyCallWithUnixFdListSync :: (HasCallStack, MonadIO m, IsDBusProxy a, IsUnixFDList b, IsCancellable c) => a -> Text -> Maybe GVariant -> [DBusCallFlags] -> Int32 -> Maybe b -> Maybe c -> m (GVariant, UnixFDList)
- data DBusProxyGetCachedPropertyMethodInfo
- dBusProxyGetCachedProperty :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> Text -> m GVariant
- data DBusProxyGetCachedPropertyNamesMethodInfo
- dBusProxyGetCachedPropertyNames :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> m [Text]
- data DBusProxyGetConnectionMethodInfo
- dBusProxyGetConnection :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> m DBusConnection
- data DBusProxyGetDefaultTimeoutMethodInfo
- dBusProxyGetDefaultTimeout :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> m Int32
- data DBusProxyGetFlagsMethodInfo
- dBusProxyGetFlags :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> m [DBusProxyFlags]
- data DBusProxyGetInterfaceInfoMethodInfo
- dBusProxyGetInterfaceInfo :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> m DBusInterfaceInfo
- data DBusProxyGetInterfaceNameMethodInfo
- dBusProxyGetInterfaceName :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> m Text
- data DBusProxyGetNameMethodInfo
- dBusProxyGetName :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> m Text
- data DBusProxyGetNameOwnerMethodInfo
- dBusProxyGetNameOwner :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> m Text
- data DBusProxyGetObjectPathMethodInfo
- dBusProxyGetObjectPath :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> m Text
- dBusProxyNew :: (HasCallStack, MonadIO m, IsDBusConnection a, IsCancellable b) => a -> [DBusProxyFlags] -> Maybe DBusInterfaceInfo -> Maybe Text -> Text -> Text -> Maybe b -> Maybe AsyncReadyCallback -> m ()
- dBusProxyNewFinish :: (HasCallStack, MonadIO m, IsAsyncResult a) => a -> m DBusProxy
- dBusProxyNewForBus :: (HasCallStack, MonadIO m, IsCancellable a) => BusType -> [DBusProxyFlags] -> Maybe DBusInterfaceInfo -> Text -> Text -> Text -> Maybe a -> Maybe AsyncReadyCallback -> m ()
- dBusProxyNewForBusFinish :: (HasCallStack, MonadIO m, IsAsyncResult a) => a -> m DBusProxy
- dBusProxyNewForBusSync :: (HasCallStack, MonadIO m, IsCancellable a) => BusType -> [DBusProxyFlags] -> Maybe DBusInterfaceInfo -> Text -> Text -> Text -> Maybe a -> m DBusProxy
- dBusProxyNewSync :: (HasCallStack, MonadIO m, IsDBusConnection a, IsCancellable b) => a -> [DBusProxyFlags] -> Maybe DBusInterfaceInfo -> Maybe Text -> Text -> Text -> Maybe b -> m DBusProxy
- data DBusProxySetCachedPropertyMethodInfo
- dBusProxySetCachedProperty :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> Text -> Maybe GVariant -> m ()
- data DBusProxySetDefaultTimeoutMethodInfo
- dBusProxySetDefaultTimeout :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> Int32 -> m ()
- data DBusProxySetInterfaceInfoMethodInfo
- dBusProxySetInterfaceInfo :: (HasCallStack, MonadIO m, IsDBusProxy a) => a -> Maybe DBusInterfaceInfo -> m ()
- data DBusProxyGBusTypePropertyInfo
- constructDBusProxyGBusType :: IsDBusProxy o => BusType -> IO (GValueConstruct o)
- dBusProxyGBusType :: AttrLabelProxy "gBusType"
- data DBusProxyGConnectionPropertyInfo
- constructDBusProxyGConnection :: (IsDBusProxy o, IsDBusConnection a) => a -> IO (GValueConstruct o)
- dBusProxyGConnection :: AttrLabelProxy "gConnection"
- getDBusProxyGConnection :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe DBusConnection)
- data DBusProxyGDefaultTimeoutPropertyInfo
- constructDBusProxyGDefaultTimeout :: IsDBusProxy o => Int32 -> IO (GValueConstruct o)
- dBusProxyGDefaultTimeout :: AttrLabelProxy "gDefaultTimeout"
- getDBusProxyGDefaultTimeout :: (MonadIO m, IsDBusProxy o) => o -> m Int32
- setDBusProxyGDefaultTimeout :: (MonadIO m, IsDBusProxy o) => o -> Int32 -> m ()
- data DBusProxyGFlagsPropertyInfo
- constructDBusProxyGFlags :: IsDBusProxy o => [DBusProxyFlags] -> IO (GValueConstruct o)
- dBusProxyGFlags :: AttrLabelProxy "gFlags"
- getDBusProxyGFlags :: (MonadIO m, IsDBusProxy o) => o -> m [DBusProxyFlags]
- data DBusProxyGInterfaceInfoPropertyInfo
- clearDBusProxyGInterfaceInfo :: (MonadIO m, IsDBusProxy o) => o -> m ()
- constructDBusProxyGInterfaceInfo :: IsDBusProxy o => DBusInterfaceInfo -> IO (GValueConstruct o)
- dBusProxyGInterfaceInfo :: AttrLabelProxy "gInterfaceInfo"
- getDBusProxyGInterfaceInfo :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe DBusInterfaceInfo)
- setDBusProxyGInterfaceInfo :: (MonadIO m, IsDBusProxy o) => o -> DBusInterfaceInfo -> m ()
- data DBusProxyGInterfaceNamePropertyInfo
- constructDBusProxyGInterfaceName :: IsDBusProxy o => Text -> IO (GValueConstruct o)
- dBusProxyGInterfaceName :: AttrLabelProxy "gInterfaceName"
- getDBusProxyGInterfaceName :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe Text)
- data DBusProxyGNamePropertyInfo
- constructDBusProxyGName :: IsDBusProxy o => Text -> IO (GValueConstruct o)
- dBusProxyGName :: AttrLabelProxy "gName"
- getDBusProxyGName :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe Text)
- data DBusProxyGNameOwnerPropertyInfo
- dBusProxyGNameOwner :: AttrLabelProxy "gNameOwner"
- getDBusProxyGNameOwner :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe Text)
- data DBusProxyGObjectPathPropertyInfo
- constructDBusProxyGObjectPath :: IsDBusProxy o => Text -> IO (GValueConstruct o)
- dBusProxyGObjectPath :: AttrLabelProxy "gObjectPath"
- getDBusProxyGObjectPath :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe Text)
- type C_DBusProxyGPropertiesChangedCallback = Ptr () -> Ptr GVariant -> Ptr CString -> Ptr () -> IO ()
- type DBusProxyGPropertiesChangedCallback = GVariant -> [Text] -> IO ()
- data DBusProxyGPropertiesChangedSignalInfo
- afterDBusProxyGPropertiesChanged :: (GObject a, MonadIO m) => a -> DBusProxyGPropertiesChangedCallback -> m SignalHandlerId
- genClosure_DBusProxyGPropertiesChanged :: DBusProxyGPropertiesChangedCallback -> IO Closure
- mk_DBusProxyGPropertiesChangedCallback :: C_DBusProxyGPropertiesChangedCallback -> IO (FunPtr C_DBusProxyGPropertiesChangedCallback)
- noDBusProxyGPropertiesChangedCallback :: Maybe DBusProxyGPropertiesChangedCallback
- onDBusProxyGPropertiesChanged :: (GObject a, MonadIO m) => a -> DBusProxyGPropertiesChangedCallback -> m SignalHandlerId
- wrap_DBusProxyGPropertiesChangedCallback :: DBusProxyGPropertiesChangedCallback -> Ptr () -> Ptr GVariant -> Ptr CString -> Ptr () -> IO ()
- type C_DBusProxyGSignalCallback = Ptr () -> CString -> CString -> Ptr GVariant -> Ptr () -> IO ()
- type DBusProxyGSignalCallback = Maybe Text -> Text -> GVariant -> IO ()
- data DBusProxyGSignalSignalInfo
- afterDBusProxyGSignal :: (GObject a, MonadIO m) => a -> DBusProxyGSignalCallback -> m SignalHandlerId
- genClosure_DBusProxyGSignal :: DBusProxyGSignalCallback -> IO Closure
- mk_DBusProxyGSignalCallback :: C_DBusProxyGSignalCallback -> IO (FunPtr C_DBusProxyGSignalCallback)
- noDBusProxyGSignalCallback :: Maybe DBusProxyGSignalCallback
- onDBusProxyGSignal :: (GObject a, MonadIO m) => a -> DBusProxyGSignalCallback -> m SignalHandlerId
- wrap_DBusProxyGSignalCallback :: DBusProxyGSignalCallback -> Ptr () -> CString -> CString -> Ptr GVariant -> Ptr () -> IO ()
Exported types
GObject DBusProxy Source # | |
IsObject DBusProxy Source # | |
IsDBusProxy DBusProxy Source # | |
IsInitable DBusProxy Source # | |
IsDBusInterface DBusProxy Source # | |
IsAsyncInitable DBusProxy Source # | |
((~) * info (ResolveDBusProxyMethod t DBusProxy), MethodInfo * info DBusProxy p) => IsLabel t (DBusProxy -> p) Source # | |
((~) * info (ResolveDBusProxyMethod t DBusProxy), MethodInfo * info DBusProxy p) => IsLabelProxy t (DBusProxy -> p) Source # | |
HasAttributeList * DBusProxy Source # | |
type AttributeList DBusProxy Source # | |
type SignalList DBusProxy Source # | |
class GObject o => IsDBusProxy o Source #
toDBusProxy :: IsDBusProxy o => o -> IO DBusProxy Source #
Methods
call
data DBusProxyCallMethodInfo Source #
((~) * signature (Text -> Maybe GVariant -> [DBusCallFlags] -> Int32 -> Maybe b -> Maybe AsyncReadyCallback -> m ()), MonadIO m, IsDBusProxy a, IsCancellable b) => MethodInfo * DBusProxyCallMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsDBusProxy a, IsCancellable b) | |
=> a |
|
-> Text |
|
-> Maybe GVariant |
|
-> [DBusCallFlags] |
|
-> Int32 |
|
-> Maybe b |
|
-> Maybe AsyncReadyCallback |
|
-> m () |
Asynchronously invokes the methodName
method on proxy
.
If methodName
contains any dots, then name
is split into interface and
method name parts. This allows using proxy
for invoking methods on
other interfaces.
If the DBusConnection
associated with proxy
is closed then
the operation will fail with IOErrorEnumClosed
. If
cancellable
is canceled, the operation will fail with
IOErrorEnumCancelled
. If parameters
contains a value not
compatible with the D-Bus protocol, the operation fails with
IOErrorEnumInvalidArgument
.
If the parameters
GVariant
is floating, it is consumed. This allows
convenient 'inline' use of g_variant_new()
, e.g.:
C code
g_dbus_proxy_call (proxy, "TwoStrings", g_variant_new ("(ss)", "Thing One", "Thing Two"), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) two_strings_done, &data);
If proxy
has an expected interface (see
DBusProxy
:g-interface-info
) and methodName
is referenced by it,
then the return value is checked against the return type.
This is an asynchronous method. When the operation is finished,
callback
will be invoked in the
[thread-default main context][g-main-context-push-thread-default]
of the thread you are calling this method from.
You can then call dBusProxyCallFinish
to get the result of
the operation. See dBusProxyCallSync
for the synchronous
version of this method.
If callback
is Nothing
then the D-Bus method call message will be sent with
the DBusMessageFlagsNoReplyExpected
flag set.
Since: 2.26
callFinish
data DBusProxyCallFinishMethodInfo Source #
((~) * signature (b -> m GVariant), MonadIO m, IsDBusProxy a, IsAsyncResult b) => MethodInfo * DBusProxyCallFinishMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsDBusProxy a, IsAsyncResult b) | |
=> a |
|
-> b |
|
-> m GVariant | Returns: |
Finishes an operation started with dBusProxyCall
.
Since: 2.26
callSync
data DBusProxyCallSyncMethodInfo Source #
((~) * signature (Text -> Maybe GVariant -> [DBusCallFlags] -> Int32 -> Maybe b -> m GVariant), MonadIO m, IsDBusProxy a, IsCancellable b) => MethodInfo * DBusProxyCallSyncMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsDBusProxy a, IsCancellable b) | |
=> a |
|
-> Text |
|
-> Maybe GVariant |
|
-> [DBusCallFlags] |
|
-> Int32 |
|
-> Maybe b |
|
-> m GVariant | Returns: |
Synchronously invokes the methodName
method on proxy
.
If methodName
contains any dots, then name
is split into interface and
method name parts. This allows using proxy
for invoking methods on
other interfaces.
If the DBusConnection
associated with proxy
is disconnected then
the operation will fail with IOErrorEnumClosed
. If
cancellable
is canceled, the operation will fail with
IOErrorEnumCancelled
. If parameters
contains a value not
compatible with the D-Bus protocol, the operation fails with
IOErrorEnumInvalidArgument
.
If the parameters
GVariant
is floating, it is consumed. This allows
convenient 'inline' use of g_variant_new()
, e.g.:
C code
g_dbus_proxy_call_sync (proxy, "TwoStrings", g_variant_new ("(ss)", "Thing One", "Thing Two"), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
The calling thread is blocked until a reply is received. See
dBusProxyCall
for the asynchronous version of this
method.
If proxy
has an expected interface (see
DBusProxy
:g-interface-info
) and methodName
is referenced by it,
then the return value is checked against the return type.
Since: 2.26
callWithUnixFdList
data DBusProxyCallWithUnixFdListMethodInfo Source #
((~) * signature (Text -> Maybe GVariant -> [DBusCallFlags] -> Int32 -> Maybe b -> Maybe c -> Maybe AsyncReadyCallback -> m ()), MonadIO m, IsDBusProxy a, IsUnixFDList b, IsCancellable c) => MethodInfo * DBusProxyCallWithUnixFdListMethodInfo a signature Source # | |
dBusProxyCallWithUnixFdList Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a, IsUnixFDList b, IsCancellable c) | |
=> a |
|
-> Text |
|
-> Maybe GVariant |
|
-> [DBusCallFlags] |
|
-> Int32 |
|
-> Maybe b |
|
-> Maybe c |
|
-> Maybe AsyncReadyCallback |
|
-> m () |
Like dBusProxyCall
but also takes a UnixFDList
object.
This method is only available on UNIX.
Since: 2.30
callWithUnixFdListFinish
data DBusProxyCallWithUnixFdListFinishMethodInfo Source #
((~) * signature (b -> m (GVariant, UnixFDList)), MonadIO m, IsDBusProxy a, IsAsyncResult b) => MethodInfo * DBusProxyCallWithUnixFdListFinishMethodInfo a signature Source # | |
dBusProxyCallWithUnixFdListFinish Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a, IsAsyncResult b) | |
=> a |
|
-> b |
|
-> m (GVariant, UnixFDList) | Returns: |
Finishes an operation started with dBusProxyCallWithUnixFdList
.
Since: 2.30
callWithUnixFdListSync
data DBusProxyCallWithUnixFdListSyncMethodInfo Source #
((~) * signature (Text -> Maybe GVariant -> [DBusCallFlags] -> Int32 -> Maybe b -> Maybe c -> m (GVariant, UnixFDList)), MonadIO m, IsDBusProxy a, IsUnixFDList b, IsCancellable c) => MethodInfo * DBusProxyCallWithUnixFdListSyncMethodInfo a signature Source # | |
dBusProxyCallWithUnixFdListSync Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a, IsUnixFDList b, IsCancellable c) | |
=> a |
|
-> Text |
|
-> Maybe GVariant |
|
-> [DBusCallFlags] |
|
-> Int32 |
|
-> Maybe b |
|
-> Maybe c |
|
-> m (GVariant, UnixFDList) | Returns: |
Like dBusProxyCallSync
but also takes and returns UnixFDList
objects.
This method is only available on UNIX.
Since: 2.30
getCachedProperty
data DBusProxyGetCachedPropertyMethodInfo Source #
((~) * signature (Text -> m GVariant), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetCachedPropertyMethodInfo a signature Source # | |
dBusProxyGetCachedProperty Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> Text |
|
-> m GVariant | Returns: A reference to the |
Looks up the value for a property from the cache. This call does no blocking IO.
If proxy
has an expected interface (see
DBusProxy
:g-interface-info
) and propertyName
is referenced by
it, then value
is checked against the type of the property.
Since: 2.26
getCachedPropertyNames
data DBusProxyGetCachedPropertyNamesMethodInfo Source #
((~) * signature (m [Text]), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetCachedPropertyNamesMethodInfo a signature Source # | |
dBusProxyGetCachedPropertyNames Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> m [Text] | Returns: A |
Gets the names of all cached properties on proxy
.
Since: 2.26
getConnection
data DBusProxyGetConnectionMethodInfo Source #
((~) * signature (m DBusConnection), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetConnectionMethodInfo a signature Source # | |
dBusProxyGetConnection Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> m DBusConnection | Returns: A |
Gets the connection proxy
is for.
Since: 2.26
getDefaultTimeout
data DBusProxyGetDefaultTimeoutMethodInfo Source #
((~) * signature (m Int32), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetDefaultTimeoutMethodInfo a signature Source # | |
dBusProxyGetDefaultTimeout Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> m Int32 | Returns: Timeout to use for |
Gets the timeout to use if -1 (specifying default timeout) is
passed as timeoutMsec
in the dBusProxyCall
and
dBusProxyCallSync
functions.
See the DBusProxy
:g-default-timeout
property for more details.
Since: 2.26
getFlags
data DBusProxyGetFlagsMethodInfo Source #
((~) * signature (m [DBusProxyFlags]), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetFlagsMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> m [DBusProxyFlags] | Returns: Flags from the |
Gets the flags that proxy
was constructed with.
Since: 2.26
getInterfaceInfo
data DBusProxyGetInterfaceInfoMethodInfo Source #
((~) * signature (m DBusInterfaceInfo), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetInterfaceInfoMethodInfo a signature Source # | |
dBusProxyGetInterfaceInfo Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> m DBusInterfaceInfo | Returns: A |
Returns the DBusInterfaceInfo
, if any, specifying the interface
that proxy
conforms to. See the DBusProxy
:g-interface-info
property for more details.
Since: 2.26
getInterfaceName
data DBusProxyGetInterfaceNameMethodInfo Source #
((~) * signature (m Text), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetInterfaceNameMethodInfo a signature Source # | |
dBusProxyGetInterfaceName Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> m Text | Returns: A string owned by |
Gets the D-Bus interface name proxy
is for.
Since: 2.26
getName
data DBusProxyGetNameMethodInfo Source #
((~) * signature (m Text), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetNameMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> m Text | Returns: A string owned by |
Gets the name that proxy
was constructed for.
Since: 2.26
getNameOwner
data DBusProxyGetNameOwnerMethodInfo Source #
((~) * signature (m Text), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetNameOwnerMethodInfo a signature Source # | |
dBusProxyGetNameOwner Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> m Text | Returns: The name owner or |
getObjectPath
data DBusProxyGetObjectPathMethodInfo Source #
((~) * signature (m Text), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxyGetObjectPathMethodInfo a signature Source # | |
dBusProxyGetObjectPath Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> m Text | Returns: A string owned by |
Gets the object path proxy
is for.
Since: 2.26
new
:: (HasCallStack, MonadIO m, IsDBusConnection a, IsCancellable b) | |
=> a |
|
-> [DBusProxyFlags] |
|
-> Maybe DBusInterfaceInfo |
|
-> Maybe Text |
|
-> Text |
|
-> Text |
|
-> Maybe b |
|
-> Maybe AsyncReadyCallback |
|
-> m () |
Creates a proxy for accessing interfaceName
on the remote object
at objectPath
owned by name
at connection
and asynchronously
loads D-Bus properties unless the
DBusProxyFlagsDoNotLoadProperties
flag is used. Connect to
the DBusProxy
::g-properties-changed
signal to get notified about
property changes.
If the DBusProxyFlagsDoNotConnectSignals
flag is not set, also sets up
match rules for signals. Connect to the DBusProxy
::g-signal
signal
to handle signals from the remote object.
If name
is a well-known name and the
DBusProxyFlagsDoNotAutoStart
and DBusProxyFlagsDoNotAutoStartAtConstruction
flags aren't set and no name owner currently exists, the message bus
will be requested to launch a name owner for the name.
This is a failable asynchronous constructor - when the proxy is
ready, callback
will be invoked and you can use
dBusProxyNewFinish
to get the result.
See dBusProxyNewSync
and for a synchronous version of this constructor.
DBusProxy
is used in this [example][gdbus-wellknown-proxy].
Since: 2.26
newFinish
:: (HasCallStack, MonadIO m, IsAsyncResult a) | |
=> a |
|
-> m DBusProxy | Returns: A |
Finishes creating a DBusProxy
.
Since: 2.26
newForBus
:: (HasCallStack, MonadIO m, IsCancellable a) | |
=> BusType |
|
-> [DBusProxyFlags] |
|
-> Maybe DBusInterfaceInfo |
|
-> Text |
|
-> Text |
|
-> Text |
|
-> Maybe a |
|
-> Maybe AsyncReadyCallback |
|
-> m () |
Like dBusProxyNew
but takes a BusType
instead of a DBusConnection
.
DBusProxy
is used in this [example][gdbus-wellknown-proxy].
Since: 2.26
newForBusFinish
dBusProxyNewForBusFinish Source #
:: (HasCallStack, MonadIO m, IsAsyncResult a) | |
=> a |
|
-> m DBusProxy | Returns: A |
Finishes creating a DBusProxy
.
Since: 2.26
newForBusSync
dBusProxyNewForBusSync Source #
:: (HasCallStack, MonadIO m, IsCancellable a) | |
=> BusType |
|
-> [DBusProxyFlags] |
|
-> Maybe DBusInterfaceInfo |
|
-> Text |
|
-> Text |
|
-> Text |
|
-> Maybe a |
|
-> m DBusProxy | Returns: A |
Like dBusProxyNewSync
but takes a BusType
instead of a DBusConnection
.
DBusProxy
is used in this [example][gdbus-wellknown-proxy].
Since: 2.26
newSync
:: (HasCallStack, MonadIO m, IsDBusConnection a, IsCancellable b) | |
=> a |
|
-> [DBusProxyFlags] |
|
-> Maybe DBusInterfaceInfo |
|
-> Maybe Text |
|
-> Text |
|
-> Text |
|
-> Maybe b |
|
-> m DBusProxy | Returns: A |
Creates a proxy for accessing interfaceName
on the remote object
at objectPath
owned by name
at connection
and synchronously
loads D-Bus properties unless the
DBusProxyFlagsDoNotLoadProperties
flag is used.
If the DBusProxyFlagsDoNotConnectSignals
flag is not set, also sets up
match rules for signals. Connect to the DBusProxy
::g-signal
signal
to handle signals from the remote object.
If name
is a well-known name and the
DBusProxyFlagsDoNotAutoStart
and DBusProxyFlagsDoNotAutoStartAtConstruction
flags aren't set and no name owner currently exists, the message bus
will be requested to launch a name owner for the name.
This is a synchronous failable constructor. See dBusProxyNew
and dBusProxyNewFinish
for the asynchronous version.
DBusProxy
is used in this [example][gdbus-wellknown-proxy].
Since: 2.26
setCachedProperty
data DBusProxySetCachedPropertyMethodInfo Source #
((~) * signature (Text -> Maybe GVariant -> m ()), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxySetCachedPropertyMethodInfo a signature Source # | |
dBusProxySetCachedProperty Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> Text |
|
-> Maybe GVariant |
|
-> m () |
If value
is not Nothing
, sets the cached value for the property with
name propertyName
to the value in value
.
If value
is Nothing
, then the cached value is removed from the
property cache.
If proxy
has an expected interface (see
DBusProxy
:g-interface-info
) and propertyName
is referenced by
it, then value
is checked against the type of the property.
If the value
GVariant
is floating, it is consumed. This allows
convenient 'inline' use of g_variant_new()
, e.g.
C code
g_dbus_proxy_set_cached_property (proxy, "SomeProperty", g_variant_new ("(si)", "A String", 42));
Normally you will not need to use this method since proxy
is tracking changes using the
org.freedesktop.DBus.Properties.PropertiesChanged
D-Bus signal. However, for performance reasons an object may
decide to not use this signal for some properties and instead
use a proprietary out-of-band mechanism to transmit changes.
As a concrete example, consider an object with a property
ChatroomParticipants
which is an array of strings. Instead of
transmitting the same (long) array every time the property changes,
it is more efficient to only transmit the delta using e.g. signals
ChatroomParticipantJoined(String name)
and
ChatroomParticipantParted(String name)
.
Since: 2.26
setDefaultTimeout
data DBusProxySetDefaultTimeoutMethodInfo Source #
((~) * signature (Int32 -> m ()), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxySetDefaultTimeoutMethodInfo a signature Source # | |
dBusProxySetDefaultTimeout Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> Int32 |
|
-> m () |
Sets the timeout to use if -1 (specifying default timeout) is
passed as timeoutMsec
in the dBusProxyCall
and
dBusProxyCallSync
functions.
See the DBusProxy
:g-default-timeout
property for more details.
Since: 2.26
setInterfaceInfo
data DBusProxySetInterfaceInfoMethodInfo Source #
((~) * signature (Maybe DBusInterfaceInfo -> m ()), MonadIO m, IsDBusProxy a) => MethodInfo * DBusProxySetInterfaceInfoMethodInfo a signature Source # | |
dBusProxySetInterfaceInfo Source #
:: (HasCallStack, MonadIO m, IsDBusProxy a) | |
=> a |
|
-> Maybe DBusInterfaceInfo |
|
-> m () |
Ensure that interactions with proxy
conform to the given
interface. See the DBusProxy
:g-interface-info
property for more
details.
Since: 2.26
Properties
gBusType
data DBusProxyGBusTypePropertyInfo Source #
constructDBusProxyGBusType :: IsDBusProxy o => BusType -> IO (GValueConstruct o) Source #
dBusProxyGBusType :: AttrLabelProxy "gBusType" Source #
gConnection
data DBusProxyGConnectionPropertyInfo Source #
constructDBusProxyGConnection :: (IsDBusProxy o, IsDBusConnection a) => a -> IO (GValueConstruct o) Source #
dBusProxyGConnection :: AttrLabelProxy "gConnection" Source #
getDBusProxyGConnection :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe DBusConnection) Source #
gDefaultTimeout
data DBusProxyGDefaultTimeoutPropertyInfo Source #
constructDBusProxyGDefaultTimeout :: IsDBusProxy o => Int32 -> IO (GValueConstruct o) Source #
dBusProxyGDefaultTimeout :: AttrLabelProxy "gDefaultTimeout" Source #
getDBusProxyGDefaultTimeout :: (MonadIO m, IsDBusProxy o) => o -> m Int32 Source #
setDBusProxyGDefaultTimeout :: (MonadIO m, IsDBusProxy o) => o -> Int32 -> m () Source #
gFlags
data DBusProxyGFlagsPropertyInfo Source #
constructDBusProxyGFlags :: IsDBusProxy o => [DBusProxyFlags] -> IO (GValueConstruct o) Source #
dBusProxyGFlags :: AttrLabelProxy "gFlags" Source #
getDBusProxyGFlags :: (MonadIO m, IsDBusProxy o) => o -> m [DBusProxyFlags] Source #
gInterfaceInfo
data DBusProxyGInterfaceInfoPropertyInfo Source #
clearDBusProxyGInterfaceInfo :: (MonadIO m, IsDBusProxy o) => o -> m () Source #
constructDBusProxyGInterfaceInfo :: IsDBusProxy o => DBusInterfaceInfo -> IO (GValueConstruct o) Source #
dBusProxyGInterfaceInfo :: AttrLabelProxy "gInterfaceInfo" Source #
getDBusProxyGInterfaceInfo :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe DBusInterfaceInfo) Source #
setDBusProxyGInterfaceInfo :: (MonadIO m, IsDBusProxy o) => o -> DBusInterfaceInfo -> m () Source #
gInterfaceName
data DBusProxyGInterfaceNamePropertyInfo Source #
constructDBusProxyGInterfaceName :: IsDBusProxy o => Text -> IO (GValueConstruct o) Source #
dBusProxyGInterfaceName :: AttrLabelProxy "gInterfaceName" Source #
getDBusProxyGInterfaceName :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe Text) Source #
gName
data DBusProxyGNamePropertyInfo Source #
constructDBusProxyGName :: IsDBusProxy o => Text -> IO (GValueConstruct o) Source #
dBusProxyGName :: AttrLabelProxy "gName" Source #
getDBusProxyGName :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe Text) Source #
gNameOwner
data DBusProxyGNameOwnerPropertyInfo Source #
dBusProxyGNameOwner :: AttrLabelProxy "gNameOwner" Source #
getDBusProxyGNameOwner :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe Text) Source #
gObjectPath
data DBusProxyGObjectPathPropertyInfo Source #
constructDBusProxyGObjectPath :: IsDBusProxy o => Text -> IO (GValueConstruct o) Source #
dBusProxyGObjectPath :: AttrLabelProxy "gObjectPath" Source #
getDBusProxyGObjectPath :: (MonadIO m, IsDBusProxy o) => o -> m (Maybe Text) Source #
Signals
gPropertiesChanged
type C_DBusProxyGPropertiesChangedCallback = Ptr () -> Ptr GVariant -> Ptr CString -> Ptr () -> IO () Source #
afterDBusProxyGPropertiesChanged :: (GObject a, MonadIO m) => a -> DBusProxyGPropertiesChangedCallback -> m SignalHandlerId Source #
genClosure_DBusProxyGPropertiesChanged :: DBusProxyGPropertiesChangedCallback -> IO Closure Source #
mk_DBusProxyGPropertiesChangedCallback :: C_DBusProxyGPropertiesChangedCallback -> IO (FunPtr C_DBusProxyGPropertiesChangedCallback) Source #
onDBusProxyGPropertiesChanged :: (GObject a, MonadIO m) => a -> DBusProxyGPropertiesChangedCallback -> m SignalHandlerId Source #
wrap_DBusProxyGPropertiesChangedCallback :: DBusProxyGPropertiesChangedCallback -> Ptr () -> Ptr GVariant -> Ptr CString -> Ptr () -> IO () Source #
gSignal
type C_DBusProxyGSignalCallback = Ptr () -> CString -> CString -> Ptr GVariant -> Ptr () -> IO () Source #
afterDBusProxyGSignal :: (GObject a, MonadIO m) => a -> DBusProxyGSignalCallback -> m SignalHandlerId Source #
mk_DBusProxyGSignalCallback :: C_DBusProxyGSignalCallback -> IO (FunPtr C_DBusProxyGSignalCallback) Source #
onDBusProxyGSignal :: (GObject a, MonadIO m) => a -> DBusProxyGSignalCallback -> m SignalHandlerId Source #