module Bindings.Librrd.Client 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
foreign import ccall "inline_RRDCACHED_DEFAULT_ADDRESS" c'RRDCACHED_DEFAULT_ADDRESS
:: CString
foreign import ccall "inline_RRDCACHED_DEFAULT_PORT" c'RRDCACHED_DEFAULT_PORT
:: CString
foreign import ccall "inline_ENV_RRDCACHED_ADDRESS" c'ENV_RRDCACHED_ADDRESS
:: CString
foreign import ccall "rrdc_connect" c'rrdc_connect
:: CString -> IO CInt
foreign import ccall "&rrdc_connect" p'rrdc_connect
:: FunPtr (CString -> IO CInt)
foreign import ccall "rrdc_is_connected" c'rrdc_is_connected
:: CString -> IO CInt
foreign import ccall "&rrdc_is_connected" p'rrdc_is_connected
:: FunPtr (CString -> IO CInt)
foreign import ccall "rrdc_disconnect" c'rrdc_disconnect
:: IO CInt
foreign import ccall "&rrdc_disconnect" p'rrdc_disconnect
:: FunPtr (IO CInt)
foreign import ccall "rrdc_update" c'rrdc_update
:: CString -> CInt -> Ptr CString -> IO CInt
foreign import ccall "&rrdc_update" p'rrdc_update
:: FunPtr (CString -> CInt -> Ptr CString -> IO CInt)
foreign import ccall "rrdc_flush" c'rrdc_flush
:: CString -> IO CInt
foreign import ccall "&rrdc_flush" p'rrdc_flush
:: FunPtr (CString -> IO CInt)
c'RRDC_STATS_TYPE_GAUGE = 1
c'RRDC_STATS_TYPE_GAUGE :: (Num a) => a
c'RRDC_STATS_TYPE_COUNTER = 2
c'RRDC_STATS_TYPE_COUNTER :: (Num a) => a
data C'rrdc_stats_s = C'rrdc_stats_s{
c'rrdc_stats_s'name :: CString,
c'rrdc_stats_s'type :: Word16,
c'rrdc_stats_s'value'counter :: Word64,
c'rrdc_stats_s'value'gauge :: CDouble,
c'rrdc_stats_s'next :: Ptr C'rrdc_stats_s
} deriving (Eq,Show)
p'rrdc_stats_s'name p = plusPtr p 0
p'rrdc_stats_s'name :: Ptr (C'rrdc_stats_s) -> Ptr (CString)
p'rrdc_stats_s'type p = plusPtr p 4
p'rrdc_stats_s'type :: Ptr (C'rrdc_stats_s) -> Ptr (Word16)
p'rrdc_stats_s'value'counter p = plusPtr p 8
p'rrdc_stats_s'value'counter :: Ptr (C'rrdc_stats_s) -> Ptr (Word64)
p'rrdc_stats_s'value'gauge p = plusPtr p 8
p'rrdc_stats_s'value'gauge :: Ptr (C'rrdc_stats_s) -> Ptr (CDouble)
p'rrdc_stats_s'next p = plusPtr p 16
p'rrdc_stats_s'next :: Ptr (C'rrdc_stats_s) -> Ptr (Ptr C'rrdc_stats_s)
u'rrdc_stats_s'value'counter :: C'rrdc_stats_s -> Word64 -> IO C'rrdc_stats_s
u'rrdc_stats_s'value'counter v vf = alloca $ \p -> do
poke p v
pokeByteOff p 8 vf
vu <- peek p
return $ v
{c'rrdc_stats_s'value'counter = c'rrdc_stats_s'value'counter vu}
{c'rrdc_stats_s'value'gauge = c'rrdc_stats_s'value'gauge vu}
u'rrdc_stats_s'value'gauge :: C'rrdc_stats_s -> CDouble -> IO C'rrdc_stats_s
u'rrdc_stats_s'value'gauge v vf = alloca $ \p -> do
poke p v
pokeByteOff p 8 vf
vu <- peek p
return $ v
{c'rrdc_stats_s'value'counter = c'rrdc_stats_s'value'counter vu}
{c'rrdc_stats_s'value'gauge = c'rrdc_stats_s'value'gauge vu}
instance Storable C'rrdc_stats_s where
sizeOf _ = 20
alignment = sizeOf
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 8
v3 <- peekByteOff p 8
v4 <- peekByteOff p 16
return $ C'rrdc_stats_s v0 v1 v2 v3 v4
poke p (C'rrdc_stats_s v0 v1 v2 v3 v4) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 8 v2
pokeByteOff p 8 v3
pokeByteOff p 16 v4
return ()
type C'rrdc_stats_t = C'rrdc_stats_s
foreign import ccall "rrdc_stats_get" c'rrdc_stats_get
:: Ptr (Ptr C'rrdc_stats_t) -> IO CInt
foreign import ccall "&rrdc_stats_get" p'rrdc_stats_get
:: FunPtr (Ptr (Ptr C'rrdc_stats_t) -> IO CInt)
foreign import ccall "rrdc_stats_free" c'rrdc_stats_free
:: Ptr C'rrdc_stats_t -> IO ()
foreign import ccall "&rrdc_stats_free" p'rrdc_stats_free
:: FunPtr (Ptr C'rrdc_stats_t -> IO ())