continuum-0.1.0.0: src/Continuum/Client/Base.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleContexts #-}
module Continuum.Client.Base
(module Continuum.Client.Base
, module Continuum.Common.Types
)
where
import qualified Nanomsg as N
import Data.Serialize (encode, decode)
import qualified Continuum.Common.Serialization as S
import Continuum.Common.Types
data ContinuumClient = ContinuumClient { clientSocket :: N.Socket N.Bus }
connect :: String
-> String
-> IO ContinuumClient
connect host port = do
socket <- N.socket N.Bus
_ <- N.connect socket ("tcp://" ++ host ++ ":" ++ port)
return ContinuumClient { clientSocket = socket }
executeQuery :: ContinuumClient
-> Query
-> IO (DbErrorMonad DbResult)
executeQuery client query = do
let sock = (clientSocket client)
_ <- N.send sock (encode query)
bs <- N.recv sock
return $ (S.decodeDbResult bs)