gi-gst-1.0.18: GI/Gst/Structs/Poll.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
A 'GI.Gst.Structs.Poll.Poll' keeps track of file descriptors much like fd_set (used with
@/select()/@) or a struct pollfd array (used with @/poll()/@). Once created with
@/gst_poll_new()/@, the set can be used to wait for file descriptors to be
readable and\/or writable. It is possible to make this wait be controlled
by specifying 'True' for the /@controllable@/ flag when creating the set (or
later calling 'GI.Gst.Structs.Poll.pollSetControllable').
New file descriptors are added to the set using 'GI.Gst.Structs.Poll.pollAddFd', and
removed using 'GI.Gst.Structs.Poll.pollRemoveFd'. Controlling which file descriptors
should be waited for to become readable and\/or writable are done using
'GI.Gst.Structs.Poll.pollFdCtlRead', 'GI.Gst.Structs.Poll.pollFdCtlWrite' and 'GI.Gst.Structs.Poll.pollFdCtlPri'.
Use 'GI.Gst.Structs.Poll.pollWait' to wait for the file descriptors to actually become
readable and\/or writable, or to timeout if no file descriptor is available
in time. The wait can be controlled by calling 'GI.Gst.Structs.Poll.pollRestart' and
'GI.Gst.Structs.Poll.pollSetFlushing'.
Once the file descriptor set has been waited for, one can use
'GI.Gst.Structs.Poll.pollFdHasClosed' to see if the file descriptor has been closed,
'GI.Gst.Structs.Poll.pollFdHasError' to see if it has generated an error,
'GI.Gst.Structs.Poll.pollFdCanRead' to see if it is possible to read from the file
descriptor, and 'GI.Gst.Structs.Poll.pollFdCanWrite' to see if it is possible to
write to it.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Gst.Structs.Poll
(
-- * Exported types
Poll(..) ,
noPoll ,
-- * Methods
-- ** addFd #method:addFd#
#if ENABLE_OVERLOADING
PollAddFdMethodInfo ,
#endif
pollAddFd ,
-- ** fdCanRead #method:fdCanRead#
#if ENABLE_OVERLOADING
PollFdCanReadMethodInfo ,
#endif
pollFdCanRead ,
-- ** fdCanWrite #method:fdCanWrite#
#if ENABLE_OVERLOADING
PollFdCanWriteMethodInfo ,
#endif
pollFdCanWrite ,
-- ** fdCtlPri #method:fdCtlPri#
#if ENABLE_OVERLOADING
PollFdCtlPriMethodInfo ,
#endif
pollFdCtlPri ,
-- ** fdCtlRead #method:fdCtlRead#
#if ENABLE_OVERLOADING
PollFdCtlReadMethodInfo ,
#endif
pollFdCtlRead ,
-- ** fdCtlWrite #method:fdCtlWrite#
#if ENABLE_OVERLOADING
PollFdCtlWriteMethodInfo ,
#endif
pollFdCtlWrite ,
-- ** fdHasClosed #method:fdHasClosed#
#if ENABLE_OVERLOADING
PollFdHasClosedMethodInfo ,
#endif
pollFdHasClosed ,
-- ** fdHasError #method:fdHasError#
#if ENABLE_OVERLOADING
PollFdHasErrorMethodInfo ,
#endif
pollFdHasError ,
-- ** fdHasPri #method:fdHasPri#
#if ENABLE_OVERLOADING
PollFdHasPriMethodInfo ,
#endif
pollFdHasPri ,
-- ** fdIgnored #method:fdIgnored#
#if ENABLE_OVERLOADING
PollFdIgnoredMethodInfo ,
#endif
pollFdIgnored ,
-- ** getReadGpollfd #method:getReadGpollfd#
#if ENABLE_OVERLOADING
PollGetReadGpollfdMethodInfo ,
#endif
pollGetReadGpollfd ,
-- ** readControl #method:readControl#
#if ENABLE_OVERLOADING
PollReadControlMethodInfo ,
#endif
pollReadControl ,
-- ** removeFd #method:removeFd#
#if ENABLE_OVERLOADING
PollRemoveFdMethodInfo ,
#endif
pollRemoveFd ,
-- ** restart #method:restart#
#if ENABLE_OVERLOADING
PollRestartMethodInfo ,
#endif
pollRestart ,
-- ** setControllable #method:setControllable#
#if ENABLE_OVERLOADING
PollSetControllableMethodInfo ,
#endif
pollSetControllable ,
-- ** setFlushing #method:setFlushing#
#if ENABLE_OVERLOADING
PollSetFlushingMethodInfo ,
#endif
pollSetFlushing ,
-- ** wait #method:wait#
#if ENABLE_OVERLOADING
PollWaitMethodInfo ,
#endif
pollWait ,
-- ** writeControl #method:writeControl#
#if ENABLE_OVERLOADING
PollWriteControlMethodInfo ,
#endif
pollWriteControl ,
) 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.GLib.Structs.PollFD as GLib.PollFD
import {-# SOURCE #-} qualified GI.Gst.Structs.PollFD as Gst.PollFD
-- | Memory-managed wrapper type.
newtype Poll = Poll (ManagedPtr Poll)
-- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
instance WrappedPtr Poll where
wrappedPtrCalloc = return nullPtr
wrappedPtrCopy = return
wrappedPtrFree = Nothing
-- | A convenience alias for `Nothing` :: `Maybe` `Poll`.
noPoll :: Maybe Poll
noPoll = Nothing
#if ENABLE_OVERLOADING
instance O.HasAttributeList Poll
type instance O.AttributeList Poll = PollAttributeList
type PollAttributeList = ('[ ] :: [(Symbol, *)])
#endif
-- method Poll::add_fd
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", 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_poll_add_fd" gst_poll_add_fd ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
IO CInt
{- |
Add a file descriptor to the file descriptor set.
-}
pollAddFd ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> m Bool
{- ^ __Returns:__ 'True' if the file descriptor was successfully added to the set. -}
pollAddFd set fd = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
result <- gst_poll_add_fd set' fd'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollAddFdMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> m Bool), MonadIO m) => O.MethodInfo PollAddFdMethodInfo Poll signature where
overloadedMethod _ = pollAddFd
#endif
-- method Poll::fd_can_read
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", 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_poll_fd_can_read" gst_poll_fd_can_read ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
IO CInt
{- |
Check if /@fd@/ in /@set@/ has data to be read.
-}
pollFdCanRead ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> m Bool
{- ^ __Returns:__ 'True' if the descriptor has data to be read. -}
pollFdCanRead set fd = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
result <- gst_poll_fd_can_read set' fd'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollFdCanReadMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> m Bool), MonadIO m) => O.MethodInfo PollFdCanReadMethodInfo Poll signature where
overloadedMethod _ = pollFdCanRead
#endif
-- method Poll::fd_can_write
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", 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_poll_fd_can_write" gst_poll_fd_can_write ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
IO CInt
{- |
Check if /@fd@/ in /@set@/ can be used for writing.
-}
pollFdCanWrite ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> m Bool
{- ^ __Returns:__ 'True' if the descriptor can be used for writing. -}
pollFdCanWrite set fd = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
result <- gst_poll_fd_can_write set' fd'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollFdCanWriteMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> m Bool), MonadIO m) => O.MethodInfo PollFdCanWriteMethodInfo Poll signature where
overloadedMethod _ = pollFdCanWrite
#endif
-- method Poll::fd_ctl_pri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "active", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a new status.", 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_poll_fd_ctl_pri" gst_poll_fd_ctl_pri ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
CInt -> -- active : TBasicType TBoolean
IO CInt
{- |
Control whether the descriptor /@fd@/ in /@set@/ will be monitored for
exceptional conditions (POLLPRI).
Not implemented on Windows (will just return 'False' there).
/Since: 1.16/
-}
pollFdCtlPri ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> Bool
{- ^ /@active@/: a new status. -}
-> m Bool
{- ^ __Returns:__ 'True' if the descriptor was successfully updated. -}
pollFdCtlPri set fd active = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
let active' = (fromIntegral . fromEnum) active
result <- gst_poll_fd_ctl_pri set' fd' active'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollFdCtlPriMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> Bool -> m Bool), MonadIO m) => O.MethodInfo PollFdCtlPriMethodInfo Poll signature where
overloadedMethod _ = pollFdCtlPri
#endif
-- method Poll::fd_ctl_read
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "active", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a new status.", 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_poll_fd_ctl_read" gst_poll_fd_ctl_read ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
CInt -> -- active : TBasicType TBoolean
IO CInt
{- |
Control whether the descriptor /@fd@/ in /@set@/ will be monitored for
readability.
-}
pollFdCtlRead ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> Bool
{- ^ /@active@/: a new status. -}
-> m Bool
{- ^ __Returns:__ 'True' if the descriptor was successfully updated. -}
pollFdCtlRead set fd active = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
let active' = (fromIntegral . fromEnum) active
result <- gst_poll_fd_ctl_read set' fd' active'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollFdCtlReadMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> Bool -> m Bool), MonadIO m) => O.MethodInfo PollFdCtlReadMethodInfo Poll signature where
overloadedMethod _ = pollFdCtlRead
#endif
-- method Poll::fd_ctl_write
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "active", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a new status.", 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_poll_fd_ctl_write" gst_poll_fd_ctl_write ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
CInt -> -- active : TBasicType TBoolean
IO CInt
{- |
Control whether the descriptor /@fd@/ in /@set@/ will be monitored for
writability.
-}
pollFdCtlWrite ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> Bool
{- ^ /@active@/: a new status. -}
-> m Bool
{- ^ __Returns:__ 'True' if the descriptor was successfully updated. -}
pollFdCtlWrite set fd active = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
let active' = (fromIntegral . fromEnum) active
result <- gst_poll_fd_ctl_write set' fd' active'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollFdCtlWriteMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> Bool -> m Bool), MonadIO m) => O.MethodInfo PollFdCtlWriteMethodInfo Poll signature where
overloadedMethod _ = pollFdCtlWrite
#endif
-- method Poll::fd_has_closed
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", 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_poll_fd_has_closed" gst_poll_fd_has_closed ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
IO CInt
{- |
Check if /@fd@/ in /@set@/ has closed the connection.
-}
pollFdHasClosed ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> m Bool
{- ^ __Returns:__ 'True' if the connection was closed. -}
pollFdHasClosed set fd = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
result <- gst_poll_fd_has_closed set' fd'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollFdHasClosedMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> m Bool), MonadIO m) => O.MethodInfo PollFdHasClosedMethodInfo Poll signature where
overloadedMethod _ = pollFdHasClosed
#endif
-- method Poll::fd_has_error
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", 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_poll_fd_has_error" gst_poll_fd_has_error ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
IO CInt
{- |
Check if /@fd@/ in /@set@/ has an error.
-}
pollFdHasError ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> m Bool
{- ^ __Returns:__ 'True' if the descriptor has an error. -}
pollFdHasError set fd = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
result <- gst_poll_fd_has_error set' fd'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollFdHasErrorMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> m Bool), MonadIO m) => O.MethodInfo PollFdHasErrorMethodInfo Poll signature where
overloadedMethod _ = pollFdHasError
#endif
-- method Poll::fd_has_pri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", 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_poll_fd_has_pri" gst_poll_fd_has_pri ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
IO CInt
{- |
Check if /@fd@/ in /@set@/ has an exceptional condition (POLLPRI).
Not implemented on Windows (will just return 'False' there).
/Since: 1.16/
-}
pollFdHasPri ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> m Bool
{- ^ __Returns:__ 'True' if the descriptor has an exceptional condition. -}
pollFdHasPri set fd = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
result <- gst_poll_fd_has_pri set' fd'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollFdHasPriMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> m Bool), MonadIO m) => O.MethodInfo PollFdHasPriMethodInfo Poll signature where
overloadedMethod _ = pollFdHasPri
#endif
-- method Poll::fd_ignored
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_poll_fd_ignored" gst_poll_fd_ignored ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
IO ()
{- |
Mark /@fd@/ as ignored so that the next call to 'GI.Gst.Structs.Poll.pollWait' will yield
the same result for /@fd@/ as last time. This function must be called if no
operation (read\/write\/recv\/send\/etc.) will be performed on /@fd@/ before
the next call to 'GI.Gst.Structs.Poll.pollWait'.
The reason why this is needed is because the underlying implementation
might not allow querying the fd more than once between calls to one of
the re-enabling operations.
-}
pollFdIgnored ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> m ()
pollFdIgnored set fd = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
gst_poll_fd_ignored set' fd'
touchManagedPtr set
touchManagedPtr fd
return ()
#if ENABLE_OVERLOADING
data PollFdIgnoredMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> m ()), MonadIO m) => O.MethodInfo PollFdIgnoredMethodInfo Poll signature where
overloadedMethod _ = pollFdIgnored
#endif
-- XXX Could not generate method Poll::free
-- Error was : Bad introspection data: "Transferring a non-boxed struct with unknown size!"
-- method Poll::get_read_gpollfd
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstPoll", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "GLib", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GPollFD", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_poll_get_read_gpollfd" gst_poll_get_read_gpollfd ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr GLib.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "GLib", name = "PollFD"})
IO ()
{- |
Get a GPollFD for the reading part of the control socket. This is useful when
integrating with a GSource and GMainLoop.
-}
pollGetReadGpollfd ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a 'GI.Gst.Structs.Poll.Poll' -}
-> GLib.PollFD.PollFD
{- ^ /@fd@/: a 'GI.GLib.Structs.PollFD.PollFD' -}
-> m ()
pollGetReadGpollfd set fd = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
gst_poll_get_read_gpollfd set' fd'
touchManagedPtr set
touchManagedPtr fd
return ()
#if ENABLE_OVERLOADING
data PollGetReadGpollfdMethodInfo
instance (signature ~ (GLib.PollFD.PollFD -> m ()), MonadIO m) => O.MethodInfo PollGetReadGpollfdMethodInfo Poll signature where
overloadedMethod _ = pollGetReadGpollfd
#endif
-- method Poll::read_control
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstPoll.", 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_poll_read_control" gst_poll_read_control ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
IO CInt
{- |
Read a byte from the control socket of the controllable /@set@/.
This function only works for timer 'GI.Gst.Structs.Poll.Poll' objects created with
@/gst_poll_new_timer()/@.
-}
pollReadControl ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a 'GI.Gst.Structs.Poll.Poll'. -}
-> m Bool
{- ^ __Returns:__ 'True' on success. 'False' when when there was no byte to read or
reading the byte failed. If there was no byte to read, and only then, errno
will contain EWOULDBLOCK or EAGAIN. For all other values of errno this always signals a
critical error. -}
pollReadControl set = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
result <- gst_poll_read_control set'
let result' = (/= 0) result
touchManagedPtr set
return result'
#if ENABLE_OVERLOADING
data PollReadControlMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo PollReadControlMethodInfo Poll signature where
overloadedMethod _ = pollReadControl
#endif
-- method Poll::remove_fd
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fd", argType = TInterface (Name {namespace = "Gst", name = "PollFD"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a file descriptor.", 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_poll_remove_fd" gst_poll_remove_fd ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Ptr Gst.PollFD.PollFD -> -- fd : TInterface (Name {namespace = "Gst", name = "PollFD"})
IO CInt
{- |
Remove a file descriptor from the file descriptor set.
-}
pollRemoveFd ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a file descriptor set. -}
-> Gst.PollFD.PollFD
{- ^ /@fd@/: a file descriptor. -}
-> m Bool
{- ^ __Returns:__ 'True' if the file descriptor was successfully removed from the set. -}
pollRemoveFd set fd = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
fd' <- unsafeManagedPtrGetPtr fd
result <- gst_poll_remove_fd set' fd'
let result' = (/= 0) result
touchManagedPtr set
touchManagedPtr fd
return result'
#if ENABLE_OVERLOADING
data PollRemoveFdMethodInfo
instance (signature ~ (Gst.PollFD.PollFD -> m Bool), MonadIO m) => O.MethodInfo PollRemoveFdMethodInfo Poll signature where
overloadedMethod _ = pollRemoveFd
#endif
-- method Poll::restart
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstPoll.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_poll_restart" gst_poll_restart ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
IO ()
{- |
Restart any 'GI.Gst.Structs.Poll.pollWait' that is in progress. This function is typically
used after adding or removing descriptors to /@set@/.
If /@set@/ is not controllable, then this call will have no effect.
This function only works for non-timer 'GI.Gst.Structs.Poll.Poll' objects created with
@/gst_poll_new()/@.
-}
pollRestart ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a 'GI.Gst.Structs.Poll.Poll'. -}
-> m ()
pollRestart set = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
gst_poll_restart set'
touchManagedPtr set
return ()
#if ENABLE_OVERLOADING
data PollRestartMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo PollRestartMethodInfo Poll signature where
overloadedMethod _ = pollRestart
#endif
-- method Poll::set_controllable
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstPoll.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "controllable", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "new controllable state.", 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_poll_set_controllable" gst_poll_set_controllable ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
CInt -> -- controllable : TBasicType TBoolean
IO CInt
{- |
When /@controllable@/ is 'True', this function ensures that future calls to
'GI.Gst.Structs.Poll.pollWait' will be affected by 'GI.Gst.Structs.Poll.pollRestart' and
'GI.Gst.Structs.Poll.pollSetFlushing'.
This function only works for non-timer 'GI.Gst.Structs.Poll.Poll' objects created with
@/gst_poll_new()/@.
-}
pollSetControllable ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a 'GI.Gst.Structs.Poll.Poll'. -}
-> Bool
{- ^ /@controllable@/: new controllable state. -}
-> m Bool
{- ^ __Returns:__ 'True' if the controllability of /@set@/ could be updated. -}
pollSetControllable set controllable = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
let controllable' = (fromIntegral . fromEnum) controllable
result <- gst_poll_set_controllable set' controllable'
let result' = (/= 0) result
touchManagedPtr set
return result'
#if ENABLE_OVERLOADING
data PollSetControllableMethodInfo
instance (signature ~ (Bool -> m Bool), MonadIO m) => O.MethodInfo PollSetControllableMethodInfo Poll signature where
overloadedMethod _ = pollSetControllable
#endif
-- method Poll::set_flushing
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstPoll.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flushing", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "new flushing state.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_poll_set_flushing" gst_poll_set_flushing ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
CInt -> -- flushing : TBasicType TBoolean
IO ()
{- |
When /@flushing@/ is 'True', this function ensures that current and future calls
to 'GI.Gst.Structs.Poll.pollWait' will return -1, with errno set to EBUSY.
Unsetting the flushing state will restore normal operation of /@set@/.
This function only works for non-timer 'GI.Gst.Structs.Poll.Poll' objects created with
@/gst_poll_new()/@.
-}
pollSetFlushing ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a 'GI.Gst.Structs.Poll.Poll'. -}
-> Bool
{- ^ /@flushing@/: new flushing state. -}
-> m ()
pollSetFlushing set flushing = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
let flushing' = (fromIntegral . fromEnum) flushing
gst_poll_set_flushing set' flushing'
touchManagedPtr set
return ()
#if ENABLE_OVERLOADING
data PollSetFlushingMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m) => O.MethodInfo PollSetFlushingMethodInfo Poll signature where
overloadedMethod _ = pollSetFlushing
#endif
-- method Poll::wait
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstPoll.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timeout", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a timeout in nanoseconds.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False
foreign import ccall "gst_poll_wait" gst_poll_wait ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
Word64 -> -- timeout : TBasicType TUInt64
IO Int32
{- |
Wait for activity on the file descriptors in /@set@/. This function waits up to
the specified /@timeout@/. A timeout of 'GI.Gst.Constants.CLOCK_TIME_NONE' waits forever.
For 'GI.Gst.Structs.Poll.Poll' objects created with @/gst_poll_new()/@, this function can only be
called from a single thread at a time. If called from multiple threads,
-1 will be returned with errno set to EPERM.
This is not true for timer 'GI.Gst.Structs.Poll.Poll' objects created with
@/gst_poll_new_timer()/@, where it is allowed to have multiple threads waiting
simultaneously.
-}
pollWait ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a 'GI.Gst.Structs.Poll.Poll'. -}
-> Word64
{- ^ /@timeout@/: a timeout in nanoseconds. -}
-> m Int32
{- ^ __Returns:__ The number of 'GI.Gst.Structs.PollFD.PollFD' in /@set@/ that have activity or 0 when no
activity was detected after /@timeout@/. If an error occurs, -1 is returned
and errno is set. -}
pollWait set timeout = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
result <- gst_poll_wait set' timeout
touchManagedPtr set
return result
#if ENABLE_OVERLOADING
data PollWaitMethodInfo
instance (signature ~ (Word64 -> m Int32), MonadIO m) => O.MethodInfo PollWaitMethodInfo Poll signature where
overloadedMethod _ = pollWait
#endif
-- method Poll::write_control
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "set", argType = TInterface (Name {namespace = "Gst", name = "Poll"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstPoll.", 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_poll_write_control" gst_poll_write_control ::
Ptr Poll -> -- set : TInterface (Name {namespace = "Gst", name = "Poll"})
IO CInt
{- |
Write a byte to the control socket of the controllable /@set@/.
This function is mostly useful for timer 'GI.Gst.Structs.Poll.Poll' objects created with
@/gst_poll_new_timer()/@.
It will make any current and future 'GI.Gst.Structs.Poll.pollWait' function return with
1, meaning the control socket is set. After an equal amount of calls to
'GI.Gst.Structs.Poll.pollReadControl' have been performed, calls to 'GI.Gst.Structs.Poll.pollWait' will
block again until their timeout expired.
This function only works for timer 'GI.Gst.Structs.Poll.Poll' objects created with
@/gst_poll_new_timer()/@.
-}
pollWriteControl ::
(B.CallStack.HasCallStack, MonadIO m) =>
Poll
{- ^ /@set@/: a 'GI.Gst.Structs.Poll.Poll'. -}
-> m Bool
{- ^ __Returns:__ 'True' on success. 'False' when when the byte could not be written.
errno contains the detailed error code but will never be EAGAIN, EINTR or
EWOULDBLOCK. 'False' always signals a critical error. -}
pollWriteControl set = liftIO $ do
set' <- unsafeManagedPtrGetPtr set
result <- gst_poll_write_control set'
let result' = (/= 0) result
touchManagedPtr set
return result'
#if ENABLE_OVERLOADING
data PollWriteControlMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo PollWriteControlMethodInfo Poll signature where
overloadedMethod _ = pollWriteControl
#endif
#if ENABLE_OVERLOADING
type family ResolvePollMethod (t :: Symbol) (o :: *) :: * where
ResolvePollMethod "addFd" o = PollAddFdMethodInfo
ResolvePollMethod "fdCanRead" o = PollFdCanReadMethodInfo
ResolvePollMethod "fdCanWrite" o = PollFdCanWriteMethodInfo
ResolvePollMethod "fdCtlPri" o = PollFdCtlPriMethodInfo
ResolvePollMethod "fdCtlRead" o = PollFdCtlReadMethodInfo
ResolvePollMethod "fdCtlWrite" o = PollFdCtlWriteMethodInfo
ResolvePollMethod "fdHasClosed" o = PollFdHasClosedMethodInfo
ResolvePollMethod "fdHasError" o = PollFdHasErrorMethodInfo
ResolvePollMethod "fdHasPri" o = PollFdHasPriMethodInfo
ResolvePollMethod "fdIgnored" o = PollFdIgnoredMethodInfo
ResolvePollMethod "readControl" o = PollReadControlMethodInfo
ResolvePollMethod "removeFd" o = PollRemoveFdMethodInfo
ResolvePollMethod "restart" o = PollRestartMethodInfo
ResolvePollMethod "wait" o = PollWaitMethodInfo
ResolvePollMethod "writeControl" o = PollWriteControlMethodInfo
ResolvePollMethod "getReadGpollfd" o = PollGetReadGpollfdMethodInfo
ResolvePollMethod "setControllable" o = PollSetControllableMethodInfo
ResolvePollMethod "setFlushing" o = PollSetFlushingMethodInfo
ResolvePollMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolvePollMethod t Poll, O.MethodInfo info Poll p) => OL.IsLabel t (Poll -> 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