module Bindings.APR.Poll where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
import Bindings.APR
import Bindings.APR.ErrNo
import Bindings.APR.File.Types
import Bindings.APR.Network.IO
import Bindings.APR.Pools
import Bindings.APR.Time
c'APR_POLLIN = 1
c'APR_POLLIN :: (Num a) => a
c'APR_POLLPRI = 2
c'APR_POLLPRI :: (Num a) => a
c'APR_POLLOUT = 4
c'APR_POLLOUT :: (Num a) => a
c'APR_POLLERR = 16
c'APR_POLLERR :: (Num a) => a
c'APR_POLLHUP = 32
c'APR_POLLHUP :: (Num a) => a
c'APR_POLLNVAL = 64
c'APR_POLLNVAL :: (Num a) => a
c'APR_POLLSET_THREADSAFE = 1
c'APR_POLLSET_THREADSAFE :: (Num a) => a
c'APR_POLLSET_NOCOPY = 2
c'APR_POLLSET_NOCOPY :: (Num a) => a
type C'apr_datatype_e = CUInt
c'APR_NO_DESC = 0
c'APR_NO_DESC :: (Num a) => a
c'APR_POLL_SOCKET = 1
c'APR_POLL_SOCKET :: (Num a) => a
c'APR_POLL_FILE = 2
c'APR_POLL_FILE :: (Num a) => a
c'APR_POLL_LASTDESC = 3
c'APR_POLL_LASTDESC :: (Num a) => a
data C'apr_descriptor = C'apr_descriptor{
c'apr_descriptor'f :: Ptr C'apr_file_t
,
c'apr_descriptor's :: Ptr C'apr_socket_t
} deriving (Eq,Show)
u'apr_descriptor'f v vf = alloca $ \p -> do
poke p v
pokeByteOff p 0 vf
vu <- peek p
return $ v
{c'apr_descriptor'f = c'apr_descriptor'f vu}
{c'apr_descriptor's = c'apr_descriptor's vu}
u'apr_descriptor'f :: C'apr_descriptor -> Ptr C'apr_file_t -> IO C'apr_descriptor
u'apr_descriptor's v vf = alloca $ \p -> do
poke p v
pokeByteOff p 0 vf
vu <- peek p
return $ v
{c'apr_descriptor'f = c'apr_descriptor'f vu}
{c'apr_descriptor's = c'apr_descriptor's vu}
u'apr_descriptor's :: C'apr_descriptor -> Ptr C'apr_socket_t -> IO C'apr_descriptor
instance Storable C'apr_descriptor where
sizeOf _ = 4
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 0
return $ C'apr_descriptor v0 v1
poke p (C'apr_descriptor v0 v1) = do
pokeByteOff p 0 v0
pokeByteOff p 0 v1
return ()
data C'apr_pollfd_t = C'apr_pollfd_t{
c'apr_pollfd_t'p :: Ptr C'apr_pool_t
,
c'apr_pollfd_t'desc_type :: C'apr_datatype_e
,
c'apr_pollfd_t'reqevents :: C'apr_int16_t
,
c'apr_pollfd_t'rtnevents :: C'apr_int16_t
,
c'apr_pollfd_t'desc :: C'apr_descriptor
,
c'apr_pollfd_t'client_data :: Ptr ()
} deriving (Eq,Show)
instance Storable C'apr_pollfd_t where
sizeOf _ = 20
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 10
v4 <- peekByteOff p 12
v5 <- peekByteOff p 16
return $ C'apr_pollfd_t v0 v1 v2 v3 v4 v5
poke p (C'apr_pollfd_t v0 v1 v2 v3 v4 v5) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 10 v3
pokeByteOff p 12 v4
pokeByteOff p 16 v5
return ()
data C'apr_pollset_t = C'apr_pollset_t
foreign import ccall "apr_pollset_create" c'apr_pollset_create
:: Ptr (Ptr C'apr_pollset_t) -> C'apr_uint32_t -> Ptr C'apr_pool_t -> C'apr_uint32_t -> IO C'apr_status_t
foreign import ccall "&apr_pollset_create" p'apr_pollset_create
:: FunPtr (Ptr (Ptr C'apr_pollset_t) -> C'apr_uint32_t -> Ptr C'apr_pool_t -> C'apr_uint32_t -> IO C'apr_status_t)
foreign import ccall "apr_pollset_destroy" c'apr_pollset_destroy
:: Ptr C'apr_pollset_t -> IO C'apr_status_t
foreign import ccall "&apr_pollset_destroy" p'apr_pollset_destroy
:: FunPtr (Ptr C'apr_pollset_t -> IO C'apr_status_t)
foreign import ccall "apr_pollset_add" c'apr_pollset_add
:: Ptr C'apr_pollset_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t
foreign import ccall "&apr_pollset_add" p'apr_pollset_add
:: FunPtr (Ptr C'apr_pollset_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)
foreign import ccall "apr_pollset_remove" c'apr_pollset_remove
:: Ptr C'apr_pollset_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t
foreign import ccall "&apr_pollset_remove" p'apr_pollset_remove
:: FunPtr (Ptr C'apr_pollset_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)
foreign import ccall "apr_pollset_poll" c'apr_pollset_poll
:: Ptr C'apr_pollset_t -> C'apr_interval_time_t -> Ptr C'apr_int32_t -> Ptr (Ptr C'apr_pollfd_t) -> IO C'apr_status_t
foreign import ccall "&apr_pollset_poll" p'apr_pollset_poll
:: FunPtr (Ptr C'apr_pollset_t -> C'apr_interval_time_t -> Ptr C'apr_int32_t -> Ptr (Ptr C'apr_pollfd_t) -> IO C'apr_status_t)
foreign import ccall "apr_poll" c'apr_poll
:: Ptr C'apr_pollfd_t -> C'apr_int32_t -> Ptr C'apr_int32_t -> C'apr_interval_time_t -> IO C'apr_status_t
foreign import ccall "&apr_poll" p'apr_poll
:: FunPtr (Ptr C'apr_pollfd_t -> C'apr_int32_t -> Ptr C'apr_int32_t -> C'apr_interval_time_t -> IO C'apr_status_t)
data C'apr_pollcb_t = C'apr_pollcb_t
foreign import ccall "apr_pollcb_create" c'apr_pollcb_create
:: Ptr (Ptr C'apr_pollcb_t) -> C'apr_uint32_t -> Ptr C'apr_pool_t -> C'apr_uint32_t -> IO C'apr_status_t
foreign import ccall "&apr_pollcb_create" p'apr_pollcb_create
:: FunPtr (Ptr (Ptr C'apr_pollcb_t) -> C'apr_uint32_t -> Ptr C'apr_pool_t -> C'apr_uint32_t -> IO C'apr_status_t)
foreign import ccall "apr_pollcb_add" c'apr_pollcb_add
:: Ptr C'apr_pollcb_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t
foreign import ccall "&apr_pollcb_add" p'apr_pollcb_add
:: FunPtr (Ptr C'apr_pollcb_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)
foreign import ccall "apr_pollcb_remove" c'apr_pollcb_remove
:: Ptr C'apr_pollcb_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t
foreign import ccall "&apr_pollcb_remove" p'apr_pollcb_remove
:: FunPtr (Ptr C'apr_pollcb_t -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)
type C'apr_pollcb_cb_t = FunPtr (Ptr () -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)
foreign import ccall "wrapper" mk'apr_pollcb_cb_t
:: (Ptr () -> Ptr C'apr_pollfd_t -> IO C'apr_status_t) -> IO C'apr_pollcb_cb_t
foreign import ccall "dynamic" mK'apr_pollcb_cb_t
:: C'apr_pollcb_cb_t -> (Ptr () -> Ptr C'apr_pollfd_t -> IO C'apr_status_t)
foreign import ccall "apr_pollcb_poll" c'apr_pollcb_poll
:: Ptr C'apr_pollcb_t -> C'apr_interval_time_t -> C'apr_pollcb_cb_t -> Ptr () -> IO C'apr_status_t
foreign import ccall "&apr_pollcb_poll" p'apr_pollcb_poll
:: FunPtr (Ptr C'apr_pollcb_t -> C'apr_interval_time_t -> C'apr_pollcb_cb_t -> Ptr () -> IO C'apr_status_t)