Skip to content
Snippets Groups Projects
Commit 927df973 authored by Jens Nolte's avatar Jens Nolte
Browse files

Use liftSTM instead of ensureSTM


Co-authored-by: default avatarJan Beinke <git@janbeinke.com>
parent 7a263782
No related branches found
No related tags found
No related merge requests found
...@@ -242,16 +242,15 @@ instance IsRetrievable r (LiftA2Observable r) where ...@@ -242,16 +242,15 @@ instance IsRetrievable r (LiftA2Observable r) where
liftA2 fn (await x) (await y) liftA2 fn (await x) (await y)
instance IsObservable r (LiftA2Observable r) where instance IsObservable r (LiftA2Observable r) where
observe (LiftA2Observable fn fx fy) callback = do observe (LiftA2Observable fn fx fy) callback = ensureQuasarSTM do
-- TODO use alternative to ensureSTM var0 <- liftSTM $ newTVar Nothing
var0 <- ensureSTM $ newTVar Nothing var1 <- liftSTM $ newTVar Nothing
var1 <- ensureSTM $ newTVar Nothing
let callCallback = do let callCallback = do
mergedValue <- ensureSTM $ runMaybeT $ liftA2 (liftA2 fn) (MaybeT (readTVar var0)) (MaybeT (readTVar var1)) mergedValue <- liftSTM $ runMaybeT $ liftA2 (liftA2 fn) (MaybeT (readTVar var0)) (MaybeT (readTVar var1))
-- Run the callback only once both values have been received -- Run the callback only once both values have been received
mapM_ callback mergedValue mapM_ callback mergedValue
observe fx (\update -> ensureSTM (writeTVar var0 (Just update)) >> callCallback) observe fx (\update -> liftSTM (writeTVar var0 (Just update)) >> callCallback)
observe fy (\update -> ensureSTM (writeTVar var1 (Just update)) >> callCallback) observe fy (\update -> liftSTM (writeTVar var1 (Just update)) >> callCallback)
pingObservable (LiftA2Observable _ fx fy) = liftQuasarIO do pingObservable (LiftA2Observable _ fx fy) = liftQuasarIO do
-- LATER: keep backpressure for parallel network requests -- LATER: keep backpressure for parallel network requests
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment