{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Instances of the 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation' class are used when handling D-Bus method calls. It provides a way to asynchronously return results and errors. The normal way to obtain a 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation' object is to receive it as an argument to the @/handle_method_call()/@ function in a 'GI.Gio.Structs.DBusInterfaceVTable.DBusInterfaceVTable' that was passed to @/g_dbus_connection_register_object()/@. /Since: 2.26/ -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gio.Objects.DBusMethodInvocation ( -- * Exported types DBusMethodInvocation(..) , IsDBusMethodInvocation , toDBusMethodInvocation , noDBusMethodInvocation , -- * Methods -- ** getConnection #method:getConnection# #if ENABLE_OVERLOADING DBusMethodInvocationGetConnectionMethodInfo, #endif dBusMethodInvocationGetConnection , -- ** getInterfaceName #method:getInterfaceName# #if ENABLE_OVERLOADING DBusMethodInvocationGetInterfaceNameMethodInfo, #endif dBusMethodInvocationGetInterfaceName , -- ** getMessage #method:getMessage# #if ENABLE_OVERLOADING DBusMethodInvocationGetMessageMethodInfo, #endif dBusMethodInvocationGetMessage , -- ** getMethodInfo #method:getMethodInfo# #if ENABLE_OVERLOADING DBusMethodInvocationGetMethodInfoMethodInfo, #endif dBusMethodInvocationGetMethodInfo , -- ** getMethodName #method:getMethodName# #if ENABLE_OVERLOADING DBusMethodInvocationGetMethodNameMethodInfo, #endif dBusMethodInvocationGetMethodName , -- ** getObjectPath #method:getObjectPath# #if ENABLE_OVERLOADING DBusMethodInvocationGetObjectPathMethodInfo, #endif dBusMethodInvocationGetObjectPath , -- ** getParameters #method:getParameters# #if ENABLE_OVERLOADING DBusMethodInvocationGetParametersMethodInfo, #endif dBusMethodInvocationGetParameters , -- ** getPropertyInfo #method:getPropertyInfo# #if ENABLE_OVERLOADING DBusMethodInvocationGetPropertyInfoMethodInfo, #endif dBusMethodInvocationGetPropertyInfo , -- ** getSender #method:getSender# #if ENABLE_OVERLOADING DBusMethodInvocationGetSenderMethodInfo , #endif dBusMethodInvocationGetSender , -- ** returnDbusError #method:returnDbusError# #if ENABLE_OVERLOADING DBusMethodInvocationReturnDbusErrorMethodInfo, #endif dBusMethodInvocationReturnDbusError , -- ** returnErrorLiteral #method:returnErrorLiteral# #if ENABLE_OVERLOADING DBusMethodInvocationReturnErrorLiteralMethodInfo, #endif dBusMethodInvocationReturnErrorLiteral , -- ** returnGerror #method:returnGerror# #if ENABLE_OVERLOADING DBusMethodInvocationReturnGerrorMethodInfo, #endif dBusMethodInvocationReturnGerror , -- ** returnValue #method:returnValue# #if ENABLE_OVERLOADING DBusMethodInvocationReturnValueMethodInfo, #endif dBusMethodInvocationReturnValue , -- ** returnValueWithUnixFdList #method:returnValueWithUnixFdList# #if ENABLE_OVERLOADING DBusMethodInvocationReturnValueWithUnixFdListMethodInfo, #endif dBusMethodInvocationReturnValueWithUnixFdList, ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GObject.Objects.Object as GObject.Object import {-# SOURCE #-} qualified GI.Gio.Objects.DBusConnection as Gio.DBusConnection import {-# SOURCE #-} qualified GI.Gio.Objects.DBusMessage as Gio.DBusMessage import {-# SOURCE #-} qualified GI.Gio.Objects.UnixFDList as Gio.UnixFDList import {-# SOURCE #-} qualified GI.Gio.Structs.DBusMethodInfo as Gio.DBusMethodInfo import {-# SOURCE #-} qualified GI.Gio.Structs.DBusPropertyInfo as Gio.DBusPropertyInfo -- | Memory-managed wrapper type. newtype DBusMethodInvocation = DBusMethodInvocation (ManagedPtr DBusMethodInvocation) foreign import ccall "g_dbus_method_invocation_get_type" c_g_dbus_method_invocation_get_type :: IO GType instance GObject DBusMethodInvocation where gobjectType = c_g_dbus_method_invocation_get_type -- | Type class for types which can be safely cast to `DBusMethodInvocation`, for instance with `toDBusMethodInvocation`. class (GObject o, O.IsDescendantOf DBusMethodInvocation o) => IsDBusMethodInvocation o instance (GObject o, O.IsDescendantOf DBusMethodInvocation o) => IsDBusMethodInvocation o instance O.HasParentTypes DBusMethodInvocation type instance O.ParentTypes DBusMethodInvocation = '[GObject.Object.Object] -- | Cast to `DBusMethodInvocation`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toDBusMethodInvocation :: (MonadIO m, IsDBusMethodInvocation o) => o -> m DBusMethodInvocation toDBusMethodInvocation = liftIO . unsafeCastTo DBusMethodInvocation -- | A convenience alias for `Nothing` :: `Maybe` `DBusMethodInvocation`. noDBusMethodInvocation :: Maybe DBusMethodInvocation noDBusMethodInvocation = Nothing #if ENABLE_OVERLOADING type family ResolveDBusMethodInvocationMethod (t :: Symbol) (o :: *) :: * where ResolveDBusMethodInvocationMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveDBusMethodInvocationMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveDBusMethodInvocationMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveDBusMethodInvocationMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveDBusMethodInvocationMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveDBusMethodInvocationMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveDBusMethodInvocationMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveDBusMethodInvocationMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveDBusMethodInvocationMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveDBusMethodInvocationMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveDBusMethodInvocationMethod "returnDbusError" o = DBusMethodInvocationReturnDbusErrorMethodInfo ResolveDBusMethodInvocationMethod "returnErrorLiteral" o = DBusMethodInvocationReturnErrorLiteralMethodInfo ResolveDBusMethodInvocationMethod "returnGerror" o = DBusMethodInvocationReturnGerrorMethodInfo ResolveDBusMethodInvocationMethod "returnValue" o = DBusMethodInvocationReturnValueMethodInfo ResolveDBusMethodInvocationMethod "returnValueWithUnixFdList" o = DBusMethodInvocationReturnValueWithUnixFdListMethodInfo ResolveDBusMethodInvocationMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveDBusMethodInvocationMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveDBusMethodInvocationMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveDBusMethodInvocationMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveDBusMethodInvocationMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveDBusMethodInvocationMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveDBusMethodInvocationMethod "getConnection" o = DBusMethodInvocationGetConnectionMethodInfo ResolveDBusMethodInvocationMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveDBusMethodInvocationMethod "getInterfaceName" o = DBusMethodInvocationGetInterfaceNameMethodInfo ResolveDBusMethodInvocationMethod "getMessage" o = DBusMethodInvocationGetMessageMethodInfo ResolveDBusMethodInvocationMethod "getMethodInfo" o = DBusMethodInvocationGetMethodInfoMethodInfo ResolveDBusMethodInvocationMethod "getMethodName" o = DBusMethodInvocationGetMethodNameMethodInfo ResolveDBusMethodInvocationMethod "getObjectPath" o = DBusMethodInvocationGetObjectPathMethodInfo ResolveDBusMethodInvocationMethod "getParameters" o = DBusMethodInvocationGetParametersMethodInfo ResolveDBusMethodInvocationMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveDBusMethodInvocationMethod "getPropertyInfo" o = DBusMethodInvocationGetPropertyInfoMethodInfo ResolveDBusMethodInvocationMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveDBusMethodInvocationMethod "getSender" o = DBusMethodInvocationGetSenderMethodInfo ResolveDBusMethodInvocationMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveDBusMethodInvocationMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveDBusMethodInvocationMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveDBusMethodInvocationMethod t DBusMethodInvocation, O.MethodInfo info DBusMethodInvocation p) => OL.IsLabel t (DBusMethodInvocation -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif #if ENABLE_OVERLOADING instance O.HasAttributeList DBusMethodInvocation type instance O.AttributeList DBusMethodInvocation = DBusMethodInvocationAttributeList type DBusMethodInvocationAttributeList = ('[ ] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING type instance O.SignalList DBusMethodInvocation = DBusMethodInvocationSignalList type DBusMethodInvocationSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)]) #endif -- method DBusMethodInvocation::get_connection -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "DBusConnection"})) -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_get_connection" g_dbus_method_invocation_get_connection :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) IO (Ptr Gio.DBusConnection.DBusConnection) {- | Gets the 'GI.Gio.Objects.DBusConnection.DBusConnection' the method was invoked on. /Since: 2.26/ -} dBusMethodInvocationGetConnection :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> m Gio.DBusConnection.DBusConnection {- ^ __Returns:__ A 'GI.Gio.Objects.DBusConnection.DBusConnection'. Do not free, it is owned by /@invocation@/. -} dBusMethodInvocationGetConnection invocation = liftIO $ do invocation' <- unsafeManagedPtrCastPtr invocation result <- g_dbus_method_invocation_get_connection invocation' checkUnexpectedReturnNULL "dBusMethodInvocationGetConnection" result result' <- (newObject Gio.DBusConnection.DBusConnection) result touchManagedPtr invocation return result' #if ENABLE_OVERLOADING data DBusMethodInvocationGetConnectionMethodInfo instance (signature ~ (m Gio.DBusConnection.DBusConnection), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationGetConnectionMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationGetConnection #endif -- method DBusMethodInvocation::get_interface_name -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_get_interface_name" g_dbus_method_invocation_get_interface_name :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) IO CString {- | Gets the name of the D-Bus interface the method was invoked on. If this method call is a property Get, Set or GetAll call that has been redirected to the method call handler then \"org.freedesktop.DBus.Properties\" will be returned. See 'GI.Gio.Structs.DBusInterfaceVTable.DBusInterfaceVTable' for more information. /Since: 2.26/ -} dBusMethodInvocationGetInterfaceName :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> m T.Text {- ^ __Returns:__ A string. Do not free, it is owned by /@invocation@/. -} dBusMethodInvocationGetInterfaceName invocation = liftIO $ do invocation' <- unsafeManagedPtrCastPtr invocation result <- g_dbus_method_invocation_get_interface_name invocation' checkUnexpectedReturnNULL "dBusMethodInvocationGetInterfaceName" result result' <- cstringToText result touchManagedPtr invocation return result' #if ENABLE_OVERLOADING data DBusMethodInvocationGetInterfaceNameMethodInfo instance (signature ~ (m T.Text), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationGetInterfaceNameMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationGetInterfaceName #endif -- method DBusMethodInvocation::get_message -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "DBusMessage"})) -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_get_message" g_dbus_method_invocation_get_message :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) IO (Ptr Gio.DBusMessage.DBusMessage) {- | Gets the 'GI.Gio.Objects.DBusMessage.DBusMessage' for the method invocation. This is useful if you need to use low-level protocol features, such as UNIX file descriptor passing, that cannot be properly expressed in the 'GVariant' API. See this [server][gdbus-server] and [client][gdbus-unix-fd-client] for an example of how to use this low-level API to send and receive UNIX file descriptors. /Since: 2.26/ -} dBusMethodInvocationGetMessage :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> m Gio.DBusMessage.DBusMessage {- ^ __Returns:__ 'GI.Gio.Objects.DBusMessage.DBusMessage'. Do not free, it is owned by /@invocation@/. -} dBusMethodInvocationGetMessage invocation = liftIO $ do invocation' <- unsafeManagedPtrCastPtr invocation result <- g_dbus_method_invocation_get_message invocation' checkUnexpectedReturnNULL "dBusMethodInvocationGetMessage" result result' <- (newObject Gio.DBusMessage.DBusMessage) result touchManagedPtr invocation return result' #if ENABLE_OVERLOADING data DBusMethodInvocationGetMessageMethodInfo instance (signature ~ (m Gio.DBusMessage.DBusMessage), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationGetMessageMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationGetMessage #endif -- method DBusMethodInvocation::get_method_info -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "DBusMethodInfo"})) -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_get_method_info" g_dbus_method_invocation_get_method_info :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) IO (Ptr Gio.DBusMethodInfo.DBusMethodInfo) {- | Gets information about the method call, if any. If this method invocation is a property Get, Set or GetAll call that has been redirected to the method call handler then 'Nothing' will be returned. See 'GI.Gio.Objects.DBusMethodInvocation.dBusMethodInvocationGetPropertyInfo' and 'GI.Gio.Structs.DBusInterfaceVTable.DBusInterfaceVTable' for more information. /Since: 2.26/ -} dBusMethodInvocationGetMethodInfo :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> m Gio.DBusMethodInfo.DBusMethodInfo {- ^ __Returns:__ A 'GI.Gio.Structs.DBusMethodInfo.DBusMethodInfo' or 'Nothing'. Do not free, it is owned by /@invocation@/. -} dBusMethodInvocationGetMethodInfo invocation = liftIO $ do invocation' <- unsafeManagedPtrCastPtr invocation result <- g_dbus_method_invocation_get_method_info invocation' checkUnexpectedReturnNULL "dBusMethodInvocationGetMethodInfo" result result' <- (newBoxed Gio.DBusMethodInfo.DBusMethodInfo) result touchManagedPtr invocation return result' #if ENABLE_OVERLOADING data DBusMethodInvocationGetMethodInfoMethodInfo instance (signature ~ (m Gio.DBusMethodInfo.DBusMethodInfo), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationGetMethodInfoMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationGetMethodInfo #endif -- method DBusMethodInvocation::get_method_name -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_get_method_name" g_dbus_method_invocation_get_method_name :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) IO CString {- | Gets the name of the method that was invoked. /Since: 2.26/ -} dBusMethodInvocationGetMethodName :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> m T.Text {- ^ __Returns:__ A string. Do not free, it is owned by /@invocation@/. -} dBusMethodInvocationGetMethodName invocation = liftIO $ do invocation' <- unsafeManagedPtrCastPtr invocation result <- g_dbus_method_invocation_get_method_name invocation' checkUnexpectedReturnNULL "dBusMethodInvocationGetMethodName" result result' <- cstringToText result touchManagedPtr invocation return result' #if ENABLE_OVERLOADING data DBusMethodInvocationGetMethodNameMethodInfo instance (signature ~ (m T.Text), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationGetMethodNameMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationGetMethodName #endif -- method DBusMethodInvocation::get_object_path -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_get_object_path" g_dbus_method_invocation_get_object_path :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) IO CString {- | Gets the object path the method was invoked on. /Since: 2.26/ -} dBusMethodInvocationGetObjectPath :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> m T.Text {- ^ __Returns:__ A string. Do not free, it is owned by /@invocation@/. -} dBusMethodInvocationGetObjectPath invocation = liftIO $ do invocation' <- unsafeManagedPtrCastPtr invocation result <- g_dbus_method_invocation_get_object_path invocation' checkUnexpectedReturnNULL "dBusMethodInvocationGetObjectPath" result result' <- cstringToText result touchManagedPtr invocation return result' #if ENABLE_OVERLOADING data DBusMethodInvocationGetObjectPathMethodInfo instance (signature ~ (m T.Text), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationGetObjectPathMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationGetObjectPath #endif -- method DBusMethodInvocation::get_parameters -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just TVariant -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_get_parameters" g_dbus_method_invocation_get_parameters :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) IO (Ptr GVariant) {- | Gets the parameters of the method invocation. If there are no input parameters then this will return a GVariant with 0 children rather than NULL. /Since: 2.26/ -} dBusMethodInvocationGetParameters :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> m GVariant {- ^ __Returns:__ A 'GVariant' tuple. Do not unref this because it is owned by /@invocation@/. -} dBusMethodInvocationGetParameters invocation = liftIO $ do invocation' <- unsafeManagedPtrCastPtr invocation result <- g_dbus_method_invocation_get_parameters invocation' checkUnexpectedReturnNULL "dBusMethodInvocationGetParameters" result result' <- B.GVariant.newGVariantFromPtr result touchManagedPtr invocation return result' #if ENABLE_OVERLOADING data DBusMethodInvocationGetParametersMethodInfo instance (signature ~ (m GVariant), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationGetParametersMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationGetParameters #endif -- method DBusMethodInvocation::get_property_info -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gio", name = "DBusPropertyInfo"})) -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_get_property_info" g_dbus_method_invocation_get_property_info :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) IO (Ptr Gio.DBusPropertyInfo.DBusPropertyInfo) {- | Gets information about the property that this method call is for, if any. This will only be set in the case of an invocation in response to a property Get or Set call that has been directed to the method call handler for an object on account of its @/property_get()/@ or @/property_set()/@ vtable pointers being unset. See 'GI.Gio.Structs.DBusInterfaceVTable.DBusInterfaceVTable' for more information. If the call was GetAll, 'Nothing' will be returned. /Since: 2.38/ -} dBusMethodInvocationGetPropertyInfo :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation' -} -> m Gio.DBusPropertyInfo.DBusPropertyInfo {- ^ __Returns:__ a 'GI.Gio.Structs.DBusPropertyInfo.DBusPropertyInfo' or 'Nothing' -} dBusMethodInvocationGetPropertyInfo invocation = liftIO $ do invocation' <- unsafeManagedPtrCastPtr invocation result <- g_dbus_method_invocation_get_property_info invocation' checkUnexpectedReturnNULL "dBusMethodInvocationGetPropertyInfo" result result' <- (newBoxed Gio.DBusPropertyInfo.DBusPropertyInfo) result touchManagedPtr invocation return result' #if ENABLE_OVERLOADING data DBusMethodInvocationGetPropertyInfoMethodInfo instance (signature ~ (m Gio.DBusPropertyInfo.DBusPropertyInfo), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationGetPropertyInfoMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationGetPropertyInfo #endif -- method DBusMethodInvocation::get_sender -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_get_sender" g_dbus_method_invocation_get_sender :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) IO CString {- | Gets the bus name that invoked the method. /Since: 2.26/ -} dBusMethodInvocationGetSender :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> m T.Text {- ^ __Returns:__ A string. Do not free, it is owned by /@invocation@/. -} dBusMethodInvocationGetSender invocation = liftIO $ do invocation' <- unsafeManagedPtrCastPtr invocation result <- g_dbus_method_invocation_get_sender invocation' checkUnexpectedReturnNULL "dBusMethodInvocationGetSender" result result' <- cstringToText result touchManagedPtr invocation return result' #if ENABLE_OVERLOADING data DBusMethodInvocationGetSenderMethodInfo instance (signature ~ (m T.Text), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationGetSenderMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationGetSender #endif -- method DBusMethodInvocation::return_dbus_error -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "error_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A valid D-Bus error name.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "error_message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A valid D-Bus error message.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_return_dbus_error" g_dbus_method_invocation_return_dbus_error :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) CString -> -- error_name : TBasicType TUTF8 CString -> -- error_message : TBasicType TUTF8 IO () {- | Finishes handling a D-Bus method call by returning an error. This method will take ownership of /@invocation@/. See 'GI.Gio.Structs.DBusInterfaceVTable.DBusInterfaceVTable' for more information about the ownership of /@invocation@/. /Since: 2.26/ -} dBusMethodInvocationReturnDbusError :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> T.Text {- ^ /@errorName@/: A valid D-Bus error name. -} -> T.Text {- ^ /@errorMessage@/: A valid D-Bus error message. -} -> m () dBusMethodInvocationReturnDbusError invocation errorName errorMessage = liftIO $ do invocation' <- B.ManagedPtr.disownObject invocation errorName' <- textToCString errorName errorMessage' <- textToCString errorMessage g_dbus_method_invocation_return_dbus_error invocation' errorName' errorMessage' touchManagedPtr invocation freeMem errorName' freeMem errorMessage' return () #if ENABLE_OVERLOADING data DBusMethodInvocationReturnDbusErrorMethodInfo instance (signature ~ (T.Text -> T.Text -> m ()), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationReturnDbusErrorMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationReturnDbusError #endif -- method DBusMethodInvocation::return_error_literal -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "domain", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GQuark for the #GError error domain.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "code", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The error code.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "message", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The error message.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_return_error_literal" g_dbus_method_invocation_return_error_literal :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) Word32 -> -- domain : TBasicType TUInt32 Int32 -> -- code : TBasicType TInt CString -> -- message : TBasicType TUTF8 IO () {- | Like @/g_dbus_method_invocation_return_error()/@ but without @/printf()/@-style formatting. This method will take ownership of /@invocation@/. See 'GI.Gio.Structs.DBusInterfaceVTable.DBusInterfaceVTable' for more information about the ownership of /@invocation@/. /Since: 2.26/ -} dBusMethodInvocationReturnErrorLiteral :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> Word32 {- ^ /@domain@/: A @/GQuark/@ for the 'GError' error domain. -} -> Int32 {- ^ /@code@/: The error code. -} -> T.Text {- ^ /@message@/: The error message. -} -> m () dBusMethodInvocationReturnErrorLiteral invocation domain code message = liftIO $ do invocation' <- B.ManagedPtr.disownObject invocation message' <- textToCString message g_dbus_method_invocation_return_error_literal invocation' domain code message' touchManagedPtr invocation freeMem message' return () #if ENABLE_OVERLOADING data DBusMethodInvocationReturnErrorLiteralMethodInfo instance (signature ~ (Word32 -> Int32 -> T.Text -> m ()), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationReturnErrorLiteralMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationReturnErrorLiteral #endif -- method DBusMethodInvocation::return_gerror -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "error", argType = TError, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GError.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_return_gerror" g_dbus_method_invocation_return_gerror :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) Ptr GError -> -- error : TError IO () {- | Like @/g_dbus_method_invocation_return_error()/@ but takes a 'GError' instead of the error domain, error code and message. This method will take ownership of /@invocation@/. See 'GI.Gio.Structs.DBusInterfaceVTable.DBusInterfaceVTable' for more information about the ownership of /@invocation@/. /Since: 2.26/ -} dBusMethodInvocationReturnGerror :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> GError {- ^ /@error@/: A 'GError'. -} -> m () dBusMethodInvocationReturnGerror invocation error_ = liftIO $ do invocation' <- B.ManagedPtr.disownObject invocation error_' <- unsafeManagedPtrGetPtr error_ g_dbus_method_invocation_return_gerror invocation' error_' touchManagedPtr invocation touchManagedPtr error_ return () #if ENABLE_OVERLOADING data DBusMethodInvocationReturnGerrorMethodInfo instance (signature ~ (GError -> m ()), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationReturnGerrorMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationReturnGerror #endif -- method DBusMethodInvocation::return_value -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "parameters", argType = TVariant, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "A #GVariant tuple with out parameters for the method or %NULL if not passing any parameters.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_return_value" g_dbus_method_invocation_return_value :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) Ptr GVariant -> -- parameters : TVariant IO () {- | Finishes handling a D-Bus method call by returning /@parameters@/. If the /@parameters@/ GVariant is floating, it is consumed. It is an error if /@parameters@/ is not of the right format: it must be a tuple containing the out-parameters of the D-Bus method. Even if the method has a single out-parameter, it must be contained in a tuple. If the method has no out-parameters, /@parameters@/ may be 'Nothing' or an empty tuple. === /C code/ > >GDBusMethodInvocation *invocation = some_invocation; >g_autofree gchar *result_string = NULL; >g_autoptr (GError) error = NULL; > >result_string = calculate_result (&error); > >if (error != NULL) > g_dbus_method_invocation_return_gerror (invocation, error); >else > g_dbus_method_invocation_return_value (invocation, > g_variant_new ("(s)", result_string)); > >// Do not free @invocation here; returning a value does that This method will take ownership of /@invocation@/. See 'GI.Gio.Structs.DBusInterfaceVTable.DBusInterfaceVTable' for more information about the ownership of /@invocation@/. Since 2.48, if the method call requested for a reply not to be sent then this call will sink /@parameters@/ and free /@invocation@/, but otherwise do nothing (as per the recommendations of the D-Bus specification). /Since: 2.26/ -} dBusMethodInvocationReturnValue :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> Maybe (GVariant) {- ^ /@parameters@/: A 'GVariant' tuple with out parameters for the method or 'Nothing' if not passing any parameters. -} -> m () dBusMethodInvocationReturnValue invocation parameters = liftIO $ do invocation' <- B.ManagedPtr.disownObject invocation maybeParameters <- case parameters of Nothing -> return nullPtr Just jParameters -> do jParameters' <- unsafeManagedPtrGetPtr jParameters return jParameters' g_dbus_method_invocation_return_value invocation' maybeParameters touchManagedPtr invocation whenJust parameters touchManagedPtr return () #if ENABLE_OVERLOADING data DBusMethodInvocationReturnValueMethodInfo instance (signature ~ (Maybe (GVariant) -> m ()), MonadIO m, IsDBusMethodInvocation a) => O.MethodInfo DBusMethodInvocationReturnValueMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationReturnValue #endif -- method DBusMethodInvocation::return_value_with_unix_fd_list -- method type : OrdinaryMethod -- Args : [Arg {argCName = "invocation", argType = TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GDBusMethodInvocation.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "parameters", argType = TVariant, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "A #GVariant tuple with out parameters for the method or %NULL if not passing any parameters.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd_list", argType = TInterface (Name {namespace = "Gio", name = "UnixFDList"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "A #GUnixFDList or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "g_dbus_method_invocation_return_value_with_unix_fd_list" g_dbus_method_invocation_return_value_with_unix_fd_list :: Ptr DBusMethodInvocation -> -- invocation : TInterface (Name {namespace = "Gio", name = "DBusMethodInvocation"}) Ptr GVariant -> -- parameters : TVariant Ptr Gio.UnixFDList.UnixFDList -> -- fd_list : TInterface (Name {namespace = "Gio", name = "UnixFDList"}) IO () {- | Like 'GI.Gio.Objects.DBusMethodInvocation.dBusMethodInvocationReturnValue' but also takes a 'GI.Gio.Objects.UnixFDList.UnixFDList'. This method is only available on UNIX. This method will take ownership of /@invocation@/. See 'GI.Gio.Structs.DBusInterfaceVTable.DBusInterfaceVTable' for more information about the ownership of /@invocation@/. /Since: 2.30/ -} dBusMethodInvocationReturnValueWithUnixFdList :: (B.CallStack.HasCallStack, MonadIO m, IsDBusMethodInvocation a, Gio.UnixFDList.IsUnixFDList b) => a {- ^ /@invocation@/: A 'GI.Gio.Objects.DBusMethodInvocation.DBusMethodInvocation'. -} -> Maybe (GVariant) {- ^ /@parameters@/: A 'GVariant' tuple with out parameters for the method or 'Nothing' if not passing any parameters. -} -> Maybe (b) {- ^ /@fdList@/: A 'GI.Gio.Objects.UnixFDList.UnixFDList' or 'Nothing'. -} -> m () dBusMethodInvocationReturnValueWithUnixFdList invocation parameters fdList = liftIO $ do invocation' <- B.ManagedPtr.disownObject invocation maybeParameters <- case parameters of Nothing -> return nullPtr Just jParameters -> do jParameters' <- unsafeManagedPtrGetPtr jParameters return jParameters' maybeFdList <- case fdList of Nothing -> return nullPtr Just jFdList -> do jFdList' <- unsafeManagedPtrCastPtr jFdList return jFdList' g_dbus_method_invocation_return_value_with_unix_fd_list invocation' maybeParameters maybeFdList touchManagedPtr invocation whenJust parameters touchManagedPtr whenJust fdList touchManagedPtr return () #if ENABLE_OVERLOADING data DBusMethodInvocationReturnValueWithUnixFdListMethodInfo instance (signature ~ (Maybe (GVariant) -> Maybe (b) -> m ()), MonadIO m, IsDBusMethodInvocation a, Gio.UnixFDList.IsUnixFDList b) => O.MethodInfo DBusMethodInvocationReturnValueWithUnixFdListMethodInfo a signature where overloadedMethod _ = dBusMethodInvocationReturnValueWithUnixFdList #endif