hs-mesos-0.20.0.0: src/System/Mesos/Raw/Credential.hs
module System.Mesos.Raw.Credential where
import System.Mesos.Internal
type CredentialPtr = Ptr Credential
foreign import ccall unsafe "ext/types.h toCredential" c_toCredential
:: Ptr CChar
-> CInt
-> Ptr CChar
-> CInt
-> IO CredentialPtr
foreign import ccall unsafe "ext/types.h fromCredential" c_fromCredential
:: CredentialPtr
-> Ptr (Ptr CChar)
-> Ptr CInt
-> Ptr (Ptr CChar)
-> Ptr CInt
-> IO ()
foreign import ccall unsafe "ext/types.h destroyCredential" c_destroyCredential
:: CredentialPtr
-> IO ()
instance CPPValue Credential where
marshal c = do
(pp, pl) <- cstring $ credentialPrincipal c
let call p l = liftIO $ c_toCredential pp (fromIntegral pl) p l
case credentialSecret c of
Nothing -> call nullPtr 0
Just s -> do
(sp, sl) <- cstring s
call sp (fromIntegral sl)
unmarshal cp = do
p@(pp, plp) <- arrayPair
s@(sp, slp) <- arrayPair
liftIO $ c_fromCredential cp pp plp sp slp
ps <- peekCString p
ss <- peekMaybeCString s
return $ Credential ps ss
destroy = c_destroyCredential