module Web.DDP.Deadpan
( module Web.DDP.Deadpan
, module Control.Monad
, getURI
, Error
, Params
, liftIO
)
where
import Web.DDP.Deadpan.DSL
import Web.DDP.Deadpan.Websockets
import Web.DDP.Deadpan.Callbacks as C
import Data.Map
import Control.Concurrent.STM
import Control.Monad
import Control.Monad.IO.Class
runClient :: AppState Callback -> Params -> DeadpanApp a -> IO a
runClient state params app = flip execURI params
$ \conn -> fmap fst $ runDeadpan (setup >> app) conn state
runUnhookedClient :: AppState Callback -> Params -> DeadpanApp a -> IO a
runUnhookedClient state params app = flip execURI params
$ \conn -> fmap fst $ runDeadpan (connect >> app) conn state
bareClient :: IO (AppState Callback)
bareClient = do
values <- newTVarIO (ejobject [])
return $ AppState (const $ return ()) Data.Map.empty values
pingClient :: IO (AppState Callback)
pingClient = do
values <- newTVarIO (ejobject [])
return $ AppState (const $ return ()) (Data.Map.singleton "ping" C.pingCallback) values
loggingClient :: IO (AppState Callback)
loggingClient = do
values <- newTVarIO (ejobject [])
return $ AppState (liftIO . print) (Data.Map.singleton "ping" C.pingCallback) values
collectiveClient :: IO (AppState Callback)
collectiveClient = undefined