{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) The 'GI.GstPbutils.Objects.Discoverer.Discoverer' is a utility object which allows to get as much information as possible from one or many URIs. It provides two APIs, allowing usage in blocking or non-blocking mode. The blocking mode just requires calling 'GI.GstPbutils.Objects.Discoverer.discovererDiscoverUri' with the URI one wishes to discover. The non-blocking mode requires a running 'GI.GLib.Structs.MainLoop.MainLoop' iterating a 'GI.GLib.Structs.MainContext.MainContext', where one connects to the various signals, appends the URIs to be processed (through 'GI.GstPbutils.Objects.Discoverer.discovererDiscoverUriAsync') and then asks for the discovery to begin (through 'GI.GstPbutils.Objects.Discoverer.discovererStart'). By default this will use the GLib default main context unless you have set a custom context using 'GI.GLib.Structs.MainContext.mainContextPushThreadDefault'. All the information is returned in a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' structure. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.GstPbutils.Objects.Discoverer ( -- * Exported types Discoverer(..) , IsDiscoverer , toDiscoverer , noDiscoverer , -- * Methods -- ** discoverUri #method:discoverUri# #if ENABLE_OVERLOADING DiscovererDiscoverUriMethodInfo , #endif discovererDiscoverUri , -- ** discoverUriAsync #method:discoverUriAsync# #if ENABLE_OVERLOADING DiscovererDiscoverUriAsyncMethodInfo , #endif discovererDiscoverUriAsync , -- ** new #method:new# discovererNew , -- ** start #method:start# #if ENABLE_OVERLOADING DiscovererStartMethodInfo , #endif discovererStart , -- ** stop #method:stop# #if ENABLE_OVERLOADING DiscovererStopMethodInfo , #endif discovererStop , -- * Properties -- ** timeout #attr:timeout# {- | The duration (in nanoseconds) after which the discovery of an individual URI will timeout. If the discovery of a URI times out, the 'GI.GstPbutils.Enums.DiscovererResultTimeout' will be set on the result flags. -} #if ENABLE_OVERLOADING DiscovererTimeoutPropertyInfo , #endif constructDiscovererTimeout , #if ENABLE_OVERLOADING discovererTimeout , #endif getDiscovererTimeout , setDiscovererTimeout , -- ** useCache #attr:useCache# {- | /No description available in the introspection data./ -} #if ENABLE_OVERLOADING DiscovererUseCachePropertyInfo , #endif constructDiscovererUseCache , #if ENABLE_OVERLOADING discovererUseCache , #endif getDiscovererUseCache , setDiscovererUseCache , -- * Signals -- ** discovered #signal:discovered# C_DiscovererDiscoveredCallback , DiscovererDiscoveredCallback , #if ENABLE_OVERLOADING DiscovererDiscoveredSignalInfo , #endif afterDiscovererDiscovered , genClosure_DiscovererDiscovered , mk_DiscovererDiscoveredCallback , noDiscovererDiscoveredCallback , onDiscovererDiscovered , wrap_DiscovererDiscoveredCallback , -- ** finished #signal:finished# C_DiscovererFinishedCallback , DiscovererFinishedCallback , #if ENABLE_OVERLOADING DiscovererFinishedSignalInfo , #endif afterDiscovererFinished , genClosure_DiscovererFinished , mk_DiscovererFinishedCallback , noDiscovererFinishedCallback , onDiscovererFinished , wrap_DiscovererFinishedCallback , -- ** sourceSetup #signal:sourceSetup# C_DiscovererSourceSetupCallback , DiscovererSourceSetupCallback , #if ENABLE_OVERLOADING DiscovererSourceSetupSignalInfo , #endif afterDiscovererSourceSetup , genClosure_DiscovererSourceSetup , mk_DiscovererSourceSetupCallback , noDiscovererSourceSetupCallback , onDiscovererSourceSetup , wrap_DiscovererSourceSetupCallback , -- ** starting #signal:starting# C_DiscovererStartingCallback , DiscovererStartingCallback , #if ENABLE_OVERLOADING DiscovererStartingSignalInfo , #endif afterDiscovererStarting , genClosure_DiscovererStarting , mk_DiscovererStartingCallback , noDiscovererStartingCallback , onDiscovererStarting , wrap_DiscovererStartingCallback , ) 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 qualified GI.Gst.Objects.Element as Gst.Element import {-# SOURCE #-} qualified GI.GstPbutils.Objects.DiscovererInfo as GstPbutils.DiscovererInfo -- | Memory-managed wrapper type. newtype Discoverer = Discoverer (ManagedPtr Discoverer) foreign import ccall "gst_discoverer_get_type" c_gst_discoverer_get_type :: IO GType instance GObject Discoverer where gobjectType = c_gst_discoverer_get_type -- | Type class for types which can be safely cast to `Discoverer`, for instance with `toDiscoverer`. class (GObject o, O.IsDescendantOf Discoverer o) => IsDiscoverer o instance (GObject o, O.IsDescendantOf Discoverer o) => IsDiscoverer o instance O.HasParentTypes Discoverer type instance O.ParentTypes Discoverer = '[GObject.Object.Object] -- | Cast to `Discoverer`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toDiscoverer :: (MonadIO m, IsDiscoverer o) => o -> m Discoverer toDiscoverer = liftIO . unsafeCastTo Discoverer -- | A convenience alias for `Nothing` :: `Maybe` `Discoverer`. noDiscoverer :: Maybe Discoverer noDiscoverer = Nothing #if ENABLE_OVERLOADING type family ResolveDiscovererMethod (t :: Symbol) (o :: *) :: * where ResolveDiscovererMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveDiscovererMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveDiscovererMethod "discoverUri" o = DiscovererDiscoverUriMethodInfo ResolveDiscovererMethod "discoverUriAsync" o = DiscovererDiscoverUriAsyncMethodInfo ResolveDiscovererMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveDiscovererMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveDiscovererMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveDiscovererMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveDiscovererMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveDiscovererMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveDiscovererMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveDiscovererMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveDiscovererMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveDiscovererMethod "start" o = DiscovererStartMethodInfo ResolveDiscovererMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveDiscovererMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveDiscovererMethod "stop" o = DiscovererStopMethodInfo ResolveDiscovererMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveDiscovererMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveDiscovererMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveDiscovererMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveDiscovererMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveDiscovererMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveDiscovererMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveDiscovererMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveDiscovererMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveDiscovererMethod t Discoverer, O.MethodInfo info Discoverer p) => OL.IsLabel t (Discoverer -> 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 -- signal Discoverer::discovered {- | Will be emitted in async mode when all information on a URI could be discovered, or an error occurred. When an error occurs, /@info@/ might still contain some partial information, depending on the circumstances of the error. -} type DiscovererDiscoveredCallback = GstPbutils.DiscovererInfo.DiscovererInfo {- ^ /@info@/: the results 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -} -> Maybe GError {- ^ /@error@/: 'GError', which will be non-NULL if an error occurred during discovery. You must not free this 'GError', it will be freed by the discoverer. -} -> IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `DiscovererDiscoveredCallback`@. noDiscovererDiscoveredCallback :: Maybe DiscovererDiscoveredCallback noDiscovererDiscoveredCallback = Nothing -- | Type for the callback on the (unwrapped) C side. type C_DiscovererDiscoveredCallback = Ptr () -> -- object Ptr GstPbutils.DiscovererInfo.DiscovererInfo -> Ptr GError -> Ptr () -> -- user_data IO () -- | Generate a function pointer callable from C code, from a `C_DiscovererDiscoveredCallback`. foreign import ccall "wrapper" mk_DiscovererDiscoveredCallback :: C_DiscovererDiscoveredCallback -> IO (FunPtr C_DiscovererDiscoveredCallback) -- | Wrap the callback into a `GClosure`. genClosure_DiscovererDiscovered :: MonadIO m => DiscovererDiscoveredCallback -> m (GClosure C_DiscovererDiscoveredCallback) genClosure_DiscovererDiscovered cb = liftIO $ do let cb' = wrap_DiscovererDiscoveredCallback cb mk_DiscovererDiscoveredCallback cb' >>= B.GClosure.newGClosure -- | Wrap a `DiscovererDiscoveredCallback` into a `C_DiscovererDiscoveredCallback`. wrap_DiscovererDiscoveredCallback :: DiscovererDiscoveredCallback -> C_DiscovererDiscoveredCallback wrap_DiscovererDiscoveredCallback _cb _ info error_ _ = do info' <- (newObject GstPbutils.DiscovererInfo.DiscovererInfo) info maybeError_ <- if error_ == nullPtr then return Nothing else do error_' <- (newBoxed GError) error_ return $ Just error_' _cb info' maybeError_ {- | Connect a signal handler for the “@discovered@” signal, to be run before the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.on' discoverer #discovered callback @ -} onDiscovererDiscovered :: (IsDiscoverer a, MonadIO m) => a -> DiscovererDiscoveredCallback -> m SignalHandlerId onDiscovererDiscovered obj cb = liftIO $ do let cb' = wrap_DiscovererDiscoveredCallback cb cb'' <- mk_DiscovererDiscoveredCallback cb' connectSignalFunPtr obj "discovered" cb'' SignalConnectBefore {- | Connect a signal handler for the “@discovered@” signal, to be run after the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.after' discoverer #discovered callback @ -} afterDiscovererDiscovered :: (IsDiscoverer a, MonadIO m) => a -> DiscovererDiscoveredCallback -> m SignalHandlerId afterDiscovererDiscovered obj cb = liftIO $ do let cb' = wrap_DiscovererDiscoveredCallback cb cb'' <- mk_DiscovererDiscoveredCallback cb' connectSignalFunPtr obj "discovered" cb'' SignalConnectAfter -- signal Discoverer::finished {- | Will be emitted in async mode when all pending URIs have been processed. -} type DiscovererFinishedCallback = IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `DiscovererFinishedCallback`@. noDiscovererFinishedCallback :: Maybe DiscovererFinishedCallback noDiscovererFinishedCallback = Nothing -- | Type for the callback on the (unwrapped) C side. type C_DiscovererFinishedCallback = Ptr () -> -- object Ptr () -> -- user_data IO () -- | Generate a function pointer callable from C code, from a `C_DiscovererFinishedCallback`. foreign import ccall "wrapper" mk_DiscovererFinishedCallback :: C_DiscovererFinishedCallback -> IO (FunPtr C_DiscovererFinishedCallback) -- | Wrap the callback into a `GClosure`. genClosure_DiscovererFinished :: MonadIO m => DiscovererFinishedCallback -> m (GClosure C_DiscovererFinishedCallback) genClosure_DiscovererFinished cb = liftIO $ do let cb' = wrap_DiscovererFinishedCallback cb mk_DiscovererFinishedCallback cb' >>= B.GClosure.newGClosure -- | Wrap a `DiscovererFinishedCallback` into a `C_DiscovererFinishedCallback`. wrap_DiscovererFinishedCallback :: DiscovererFinishedCallback -> C_DiscovererFinishedCallback wrap_DiscovererFinishedCallback _cb _ _ = do _cb {- | Connect a signal handler for the “@finished@” signal, to be run before the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.on' discoverer #finished callback @ -} onDiscovererFinished :: (IsDiscoverer a, MonadIO m) => a -> DiscovererFinishedCallback -> m SignalHandlerId onDiscovererFinished obj cb = liftIO $ do let cb' = wrap_DiscovererFinishedCallback cb cb'' <- mk_DiscovererFinishedCallback cb' connectSignalFunPtr obj "finished" cb'' SignalConnectBefore {- | Connect a signal handler for the “@finished@” signal, to be run after the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.after' discoverer #finished callback @ -} afterDiscovererFinished :: (IsDiscoverer a, MonadIO m) => a -> DiscovererFinishedCallback -> m SignalHandlerId afterDiscovererFinished obj cb = liftIO $ do let cb' = wrap_DiscovererFinishedCallback cb cb'' <- mk_DiscovererFinishedCallback cb' connectSignalFunPtr obj "finished" cb'' SignalConnectAfter -- signal Discoverer::source-setup {- | This signal is emitted after the source element has been created for, so the URI being discovered, so it can be configured by setting additional properties (e.g. set a proxy server for an http source, or set the device and read speed for an audio cd source). This signal is usually emitted from the context of a GStreamer streaming thread. -} type DiscovererSourceSetupCallback = Gst.Element.Element {- ^ /@source@/: source element -} -> IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `DiscovererSourceSetupCallback`@. noDiscovererSourceSetupCallback :: Maybe DiscovererSourceSetupCallback noDiscovererSourceSetupCallback = Nothing -- | Type for the callback on the (unwrapped) C side. type C_DiscovererSourceSetupCallback = Ptr () -> -- object Ptr Gst.Element.Element -> Ptr () -> -- user_data IO () -- | Generate a function pointer callable from C code, from a `C_DiscovererSourceSetupCallback`. foreign import ccall "wrapper" mk_DiscovererSourceSetupCallback :: C_DiscovererSourceSetupCallback -> IO (FunPtr C_DiscovererSourceSetupCallback) -- | Wrap the callback into a `GClosure`. genClosure_DiscovererSourceSetup :: MonadIO m => DiscovererSourceSetupCallback -> m (GClosure C_DiscovererSourceSetupCallback) genClosure_DiscovererSourceSetup cb = liftIO $ do let cb' = wrap_DiscovererSourceSetupCallback cb mk_DiscovererSourceSetupCallback cb' >>= B.GClosure.newGClosure -- | Wrap a `DiscovererSourceSetupCallback` into a `C_DiscovererSourceSetupCallback`. wrap_DiscovererSourceSetupCallback :: DiscovererSourceSetupCallback -> C_DiscovererSourceSetupCallback wrap_DiscovererSourceSetupCallback _cb _ source _ = do source' <- (newObject Gst.Element.Element) source _cb source' {- | Connect a signal handler for the “@source-setup@” signal, to be run before the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.on' discoverer #sourceSetup callback @ -} onDiscovererSourceSetup :: (IsDiscoverer a, MonadIO m) => a -> DiscovererSourceSetupCallback -> m SignalHandlerId onDiscovererSourceSetup obj cb = liftIO $ do let cb' = wrap_DiscovererSourceSetupCallback cb cb'' <- mk_DiscovererSourceSetupCallback cb' connectSignalFunPtr obj "source-setup" cb'' SignalConnectBefore {- | Connect a signal handler for the “@source-setup@” signal, to be run after the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.after' discoverer #sourceSetup callback @ -} afterDiscovererSourceSetup :: (IsDiscoverer a, MonadIO m) => a -> DiscovererSourceSetupCallback -> m SignalHandlerId afterDiscovererSourceSetup obj cb = liftIO $ do let cb' = wrap_DiscovererSourceSetupCallback cb cb'' <- mk_DiscovererSourceSetupCallback cb' connectSignalFunPtr obj "source-setup" cb'' SignalConnectAfter -- signal Discoverer::starting {- | Will be emitted when the discover starts analyzing the pending URIs -} type DiscovererStartingCallback = IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `DiscovererStartingCallback`@. noDiscovererStartingCallback :: Maybe DiscovererStartingCallback noDiscovererStartingCallback = Nothing -- | Type for the callback on the (unwrapped) C side. type C_DiscovererStartingCallback = Ptr () -> -- object Ptr () -> -- user_data IO () -- | Generate a function pointer callable from C code, from a `C_DiscovererStartingCallback`. foreign import ccall "wrapper" mk_DiscovererStartingCallback :: C_DiscovererStartingCallback -> IO (FunPtr C_DiscovererStartingCallback) -- | Wrap the callback into a `GClosure`. genClosure_DiscovererStarting :: MonadIO m => DiscovererStartingCallback -> m (GClosure C_DiscovererStartingCallback) genClosure_DiscovererStarting cb = liftIO $ do let cb' = wrap_DiscovererStartingCallback cb mk_DiscovererStartingCallback cb' >>= B.GClosure.newGClosure -- | Wrap a `DiscovererStartingCallback` into a `C_DiscovererStartingCallback`. wrap_DiscovererStartingCallback :: DiscovererStartingCallback -> C_DiscovererStartingCallback wrap_DiscovererStartingCallback _cb _ _ = do _cb {- | Connect a signal handler for the “@starting@” signal, to be run before the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.on' discoverer #starting callback @ -} onDiscovererStarting :: (IsDiscoverer a, MonadIO m) => a -> DiscovererStartingCallback -> m SignalHandlerId onDiscovererStarting obj cb = liftIO $ do let cb' = wrap_DiscovererStartingCallback cb cb'' <- mk_DiscovererStartingCallback cb' connectSignalFunPtr obj "starting" cb'' SignalConnectBefore {- | Connect a signal handler for the “@starting@” signal, to be run after the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.after' discoverer #starting callback @ -} afterDiscovererStarting :: (IsDiscoverer a, MonadIO m) => a -> DiscovererStartingCallback -> m SignalHandlerId afterDiscovererStarting obj cb = liftIO $ do let cb' = wrap_DiscovererStartingCallback cb cb'' <- mk_DiscovererStartingCallback cb' connectSignalFunPtr obj "starting" cb'' SignalConnectAfter -- VVV Prop "timeout" -- Type: TBasicType TUInt64 -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@timeout@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' discoverer #timeout @ -} getDiscovererTimeout :: (MonadIO m, IsDiscoverer o) => o -> m Word64 getDiscovererTimeout obj = liftIO $ B.Properties.getObjectPropertyUInt64 obj "timeout" {- | Set the value of the “@timeout@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' discoverer [ #timeout 'Data.GI.Base.Attributes.:=' value ] @ -} setDiscovererTimeout :: (MonadIO m, IsDiscoverer o) => o -> Word64 -> m () setDiscovererTimeout obj val = liftIO $ B.Properties.setObjectPropertyUInt64 obj "timeout" val {- | Construct a `GValueConstruct` with valid value for the “@timeout@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructDiscovererTimeout :: (IsDiscoverer o) => Word64 -> IO (GValueConstruct o) constructDiscovererTimeout val = B.Properties.constructObjectPropertyUInt64 "timeout" val #if ENABLE_OVERLOADING data DiscovererTimeoutPropertyInfo instance AttrInfo DiscovererTimeoutPropertyInfo where type AttrAllowedOps DiscovererTimeoutPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint DiscovererTimeoutPropertyInfo = (~) Word64 type AttrBaseTypeConstraint DiscovererTimeoutPropertyInfo = IsDiscoverer type AttrGetType DiscovererTimeoutPropertyInfo = Word64 type AttrLabel DiscovererTimeoutPropertyInfo = "timeout" type AttrOrigin DiscovererTimeoutPropertyInfo = Discoverer attrGet _ = getDiscovererTimeout attrSet _ = setDiscovererTimeout attrConstruct _ = constructDiscovererTimeout attrClear _ = undefined #endif -- VVV Prop "use-cache" -- Type: TBasicType TBoolean -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@use-cache@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' discoverer #useCache @ -} getDiscovererUseCache :: (MonadIO m, IsDiscoverer o) => o -> m Bool getDiscovererUseCache obj = liftIO $ B.Properties.getObjectPropertyBool obj "use-cache" {- | Set the value of the “@use-cache@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' discoverer [ #useCache 'Data.GI.Base.Attributes.:=' value ] @ -} setDiscovererUseCache :: (MonadIO m, IsDiscoverer o) => o -> Bool -> m () setDiscovererUseCache obj val = liftIO $ B.Properties.setObjectPropertyBool obj "use-cache" val {- | Construct a `GValueConstruct` with valid value for the “@use-cache@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructDiscovererUseCache :: (IsDiscoverer o) => Bool -> IO (GValueConstruct o) constructDiscovererUseCache val = B.Properties.constructObjectPropertyBool "use-cache" val #if ENABLE_OVERLOADING data DiscovererUseCachePropertyInfo instance AttrInfo DiscovererUseCachePropertyInfo where type AttrAllowedOps DiscovererUseCachePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint DiscovererUseCachePropertyInfo = (~) Bool type AttrBaseTypeConstraint DiscovererUseCachePropertyInfo = IsDiscoverer type AttrGetType DiscovererUseCachePropertyInfo = Bool type AttrLabel DiscovererUseCachePropertyInfo = "use-cache" type AttrOrigin DiscovererUseCachePropertyInfo = Discoverer attrGet _ = getDiscovererUseCache attrSet _ = setDiscovererUseCache attrConstruct _ = constructDiscovererUseCache attrClear _ = undefined #endif #if ENABLE_OVERLOADING instance O.HasAttributeList Discoverer type instance O.AttributeList Discoverer = DiscovererAttributeList type DiscovererAttributeList = ('[ '("timeout", DiscovererTimeoutPropertyInfo), '("useCache", DiscovererUseCachePropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING discovererTimeout :: AttrLabelProxy "timeout" discovererTimeout = AttrLabelProxy discovererUseCache :: AttrLabelProxy "useCache" discovererUseCache = AttrLabelProxy #endif #if ENABLE_OVERLOADING data DiscovererDiscoveredSignalInfo instance SignalInfo DiscovererDiscoveredSignalInfo where type HaskellCallbackType DiscovererDiscoveredSignalInfo = DiscovererDiscoveredCallback connectSignal _ obj cb connectMode = do let cb' = wrap_DiscovererDiscoveredCallback cb cb'' <- mk_DiscovererDiscoveredCallback cb' connectSignalFunPtr obj "discovered" cb'' connectMode data DiscovererFinishedSignalInfo instance SignalInfo DiscovererFinishedSignalInfo where type HaskellCallbackType DiscovererFinishedSignalInfo = DiscovererFinishedCallback connectSignal _ obj cb connectMode = do let cb' = wrap_DiscovererFinishedCallback cb cb'' <- mk_DiscovererFinishedCallback cb' connectSignalFunPtr obj "finished" cb'' connectMode data DiscovererSourceSetupSignalInfo instance SignalInfo DiscovererSourceSetupSignalInfo where type HaskellCallbackType DiscovererSourceSetupSignalInfo = DiscovererSourceSetupCallback connectSignal _ obj cb connectMode = do let cb' = wrap_DiscovererSourceSetupCallback cb cb'' <- mk_DiscovererSourceSetupCallback cb' connectSignalFunPtr obj "source-setup" cb'' connectMode data DiscovererStartingSignalInfo instance SignalInfo DiscovererStartingSignalInfo where type HaskellCallbackType DiscovererStartingSignalInfo = DiscovererStartingCallback connectSignal _ obj cb connectMode = do let cb' = wrap_DiscovererStartingCallback cb cb'' <- mk_DiscovererStartingCallback cb' connectSignalFunPtr obj "starting" cb'' connectMode type instance O.SignalList Discoverer = DiscovererSignalList type DiscovererSignalList = ('[ '("discovered", DiscovererDiscoveredSignalInfo), '("finished", DiscovererFinishedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("sourceSetup", DiscovererSourceSetupSignalInfo), '("starting", DiscovererStartingSignalInfo)] :: [(Symbol, *)]) #endif -- method Discoverer::new -- method type : Constructor -- Args : [Arg {argCName = "timeout", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "timeout per file, in nanoseconds. Allowed are values between\n one second (#GST_SECOND) and one hour (3600 * #GST_SECOND)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "GstPbutils", name = "Discoverer"})) -- throws : True -- Skip return : False foreign import ccall "gst_discoverer_new" gst_discoverer_new :: Word64 -> -- timeout : TBasicType TUInt64 Ptr (Ptr GError) -> -- error IO (Ptr Discoverer) {- | Creates a new 'GI.GstPbutils.Objects.Discoverer.Discoverer' with the provided timeout. -} discovererNew :: (B.CallStack.HasCallStack, MonadIO m) => Word64 {- ^ /@timeout@/: timeout per file, in nanoseconds. Allowed are values between one second ('GI.Gst.Constants.SECOND') and one hour (3600 * 'GI.Gst.Constants.SECOND') -} -> m Discoverer {- ^ __Returns:__ The new 'GI.GstPbutils.Objects.Discoverer.Discoverer'. If an error occurred when creating the discoverer, /@err@/ will be set accordingly and 'Nothing' will be returned. If /@err@/ is set, the caller must free it when no longer needed using 'GI.GLib.Structs.Error.errorFree'. /(Can throw 'Data.GI.Base.GError.GError')/ -} discovererNew timeout = liftIO $ do onException (do result <- propagateGError $ gst_discoverer_new timeout checkUnexpectedReturnNULL "discovererNew" result result' <- (wrapObject Discoverer) result return result' ) (do return () ) #if ENABLE_OVERLOADING #endif -- method Discoverer::discover_uri -- method type : OrdinaryMethod -- Args : [Arg {argCName = "discoverer", argType = TInterface (Name {namespace = "GstPbutils", name = "Discoverer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstDiscoverer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uri", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The URI to run on.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})) -- throws : True -- Skip return : False foreign import ccall "gst_discoverer_discover_uri" gst_discoverer_discover_uri :: Ptr Discoverer -> -- discoverer : TInterface (Name {namespace = "GstPbutils", name = "Discoverer"}) CString -> -- uri : TBasicType TUTF8 Ptr (Ptr GError) -> -- error IO (Ptr GstPbutils.DiscovererInfo.DiscovererInfo) {- | Synchronously discovers the given /@uri@/. A copy of /@uri@/ will be made internally, so the caller can safely 'GI.GLib.Functions.free' afterwards. -} discovererDiscoverUri :: (B.CallStack.HasCallStack, MonadIO m, IsDiscoverer a) => a {- ^ /@discoverer@/: A 'GI.GstPbutils.Objects.Discoverer.Discoverer' -} -> T.Text {- ^ /@uri@/: The URI to run on. -} -> m GstPbutils.DiscovererInfo.DiscovererInfo {- ^ __Returns:__ the result of the scanning. Can be 'Nothing' if an error occurred. /(Can throw 'Data.GI.Base.GError.GError')/ -} discovererDiscoverUri discoverer uri = liftIO $ do discoverer' <- unsafeManagedPtrCastPtr discoverer uri' <- textToCString uri onException (do result <- propagateGError $ gst_discoverer_discover_uri discoverer' uri' checkUnexpectedReturnNULL "discovererDiscoverUri" result result' <- (wrapObject GstPbutils.DiscovererInfo.DiscovererInfo) result touchManagedPtr discoverer freeMem uri' return result' ) (do freeMem uri' ) #if ENABLE_OVERLOADING data DiscovererDiscoverUriMethodInfo instance (signature ~ (T.Text -> m GstPbutils.DiscovererInfo.DiscovererInfo), MonadIO m, IsDiscoverer a) => O.MethodInfo DiscovererDiscoverUriMethodInfo a signature where overloadedMethod _ = discovererDiscoverUri #endif -- method Discoverer::discover_uri_async -- method type : OrdinaryMethod -- Args : [Arg {argCName = "discoverer", argType = TInterface (Name {namespace = "GstPbutils", name = "Discoverer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstDiscoverer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uri", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the URI to add.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_discoverer_discover_uri_async" gst_discoverer_discover_uri_async :: Ptr Discoverer -> -- discoverer : TInterface (Name {namespace = "GstPbutils", name = "Discoverer"}) CString -> -- uri : TBasicType TUTF8 IO CInt {- | Appends the given /@uri@/ to the list of URIs to discoverer. The actual discovery of the /@uri@/ will only take place if 'GI.GstPbutils.Objects.Discoverer.discovererStart' has been called. A copy of /@uri@/ will be made internally, so the caller can safely 'GI.GLib.Functions.free' afterwards. -} discovererDiscoverUriAsync :: (B.CallStack.HasCallStack, MonadIO m, IsDiscoverer a) => a {- ^ /@discoverer@/: A 'GI.GstPbutils.Objects.Discoverer.Discoverer' -} -> T.Text {- ^ /@uri@/: the URI to add. -} -> m Bool {- ^ __Returns:__ 'True' if the /@uri@/ was successfully appended to the list of pending uris, else 'False' -} discovererDiscoverUriAsync discoverer uri = liftIO $ do discoverer' <- unsafeManagedPtrCastPtr discoverer uri' <- textToCString uri result <- gst_discoverer_discover_uri_async discoverer' uri' let result' = (/= 0) result touchManagedPtr discoverer freeMem uri' return result' #if ENABLE_OVERLOADING data DiscovererDiscoverUriAsyncMethodInfo instance (signature ~ (T.Text -> m Bool), MonadIO m, IsDiscoverer a) => O.MethodInfo DiscovererDiscoverUriAsyncMethodInfo a signature where overloadedMethod _ = discovererDiscoverUriAsync #endif -- method Discoverer::start -- method type : OrdinaryMethod -- Args : [Arg {argCName = "discoverer", argType = TInterface (Name {namespace = "GstPbutils", name = "Discoverer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstDiscoverer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_discoverer_start" gst_discoverer_start :: Ptr Discoverer -> -- discoverer : TInterface (Name {namespace = "GstPbutils", name = "Discoverer"}) IO () {- | Allow asynchronous discovering of URIs to take place. A 'GI.GLib.Structs.MainLoop.MainLoop' must be available for 'GI.GstPbutils.Objects.Discoverer.Discoverer' to properly work in asynchronous mode. -} discovererStart :: (B.CallStack.HasCallStack, MonadIO m, IsDiscoverer a) => a {- ^ /@discoverer@/: A 'GI.GstPbutils.Objects.Discoverer.Discoverer' -} -> m () discovererStart discoverer = liftIO $ do discoverer' <- unsafeManagedPtrCastPtr discoverer gst_discoverer_start discoverer' touchManagedPtr discoverer return () #if ENABLE_OVERLOADING data DiscovererStartMethodInfo instance (signature ~ (m ()), MonadIO m, IsDiscoverer a) => O.MethodInfo DiscovererStartMethodInfo a signature where overloadedMethod _ = discovererStart #endif -- method Discoverer::stop -- method type : OrdinaryMethod -- Args : [Arg {argCName = "discoverer", argType = TInterface (Name {namespace = "GstPbutils", name = "Discoverer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstDiscoverer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_discoverer_stop" gst_discoverer_stop :: Ptr Discoverer -> -- discoverer : TInterface (Name {namespace = "GstPbutils", name = "Discoverer"}) IO () {- | Stop the discovery of any pending URIs and clears the list of pending URIS (if any). -} discovererStop :: (B.CallStack.HasCallStack, MonadIO m, IsDiscoverer a) => a {- ^ /@discoverer@/: A 'GI.GstPbutils.Objects.Discoverer.Discoverer' -} -> m () discovererStop discoverer = liftIO $ do discoverer' <- unsafeManagedPtrCastPtr discoverer gst_discoverer_stop discoverer' touchManagedPtr discoverer return () #if ENABLE_OVERLOADING data DiscovererStopMethodInfo instance (signature ~ (m ()), MonadIO m, IsDiscoverer a) => O.MethodInfo DiscovererStopMethodInfo a signature where overloadedMethod _ = discovererStop #endif