TDLib.EventLoop
Description
A heavyweight TDLib effect intepreter written using event loop
type Ans = TVar (IntMap Value) Source #
type Locks = TVar (IntMap ()) Source #
type Counter = TVar Int Source #
newCounter :: IO Counter Source #
countUp :: Counter -> IO Int Source #
lookupExtra :: Value -> Maybe Int Source #
insertAns :: Int -> Locks -> Ans -> Value -> STM () Source #
waitRead :: Int -> Ans -> STM Value Source #
lock :: Int -> Locks -> STM () Source #
readAns :: Int -> Locks -> Ans -> IO Value Source #
loop :: Client -> Double -> Locks -> Ans -> InChan Update -> IO a Source #
runCommand :: (ToJSON a, FromJSON b, FromJSON err) => Client -> Int -> Locks -> Ans -> a -> IO (err ∪ b) Source #
runTDLibEventLoop :: Members '[Embed IO] r => Double -> InChan Update -> Sem (TDLib ': r) a -> Sem r a Source #