module Web.DDP.Deadpan
( module Web.DDP.Deadpan
, module Web.DDP.Deadpan.DSL
, module Web.DDP.Deadpan.Callbacks
, module Control.Monad
, getURI
, Error
, Params
, liftIO
)
where
import Web.DDP.Deadpan.DSL
import Web.DDP.Deadpan.Websockets
import Web.DDP.Deadpan.Callbacks
import Control.Concurrent.STM
import Control.Concurrent.Chan
import Control.Monad
import Control.Monad.IO.Class
runBareClient :: Params -> DeadpanApp a -> IO a
runBareClient params app = flip execURI params
$ \conn -> do appState <- newTVarIO $ AppState [] (ejobject []) conn
runDeadpan app appState
runConnectClient :: Params -> DeadpanApp a -> IO a
runConnectClient params app = runBareClient params (fetchMessages >> connect >> app)
runPingClient :: Params -> DeadpanApp a -> IO a
runPingClient params app = runConnectClient params (handlePings >> app)
handlePings :: DeadpanApp ()
handlePings = setMsgHandler "ping" pingCallback
logEverything :: DeadpanApp (Chan String)
logEverything = do pipe <- liftIO $ newChan
setCatchAllHandler (liftIO . writeChan pipe . show)
void $ fork $ liftIO $ getChanContents pipe >>= mapM_ putStrLn
return pipe
collectiveClient :: IO (AppState Callback)
collectiveClient = undefined