diff --git a/src/Quasar/Observable.hs b/src/Quasar/Observable.hs index c5816f7144b9287f2f7d5af149dc1a92ca789c51..dc47cb0bfdd0012898b5e4fe430160e751a99fc1 100644 --- a/src/Quasar/Observable.hs +++ b/src/Quasar/Observable.hs @@ -400,47 +400,7 @@ stateObservableVar (ObservableVar var registry) f = ensureQuasarSTM do updateObservers registry $ ObservableValue newValue pure result ---newtype ObservableVar v = ObservableVar (MVar (v, HM.HashMap Unique (ObservableCallback v))) ---instance IsRetrievable v (ObservableVar v) where --- retrieve (ObservableVar mvar) = liftIO $ pure . fst <$> readMVar mvar ---instance IsObservable v (ObservableVar v) where --- observe (ObservableVar mvar) callback = do --- resourceManager <- askResourceManager --- --- registerNewResource_ $ liftIO do --- let wrappedCallback = enterResourceManager resourceManager . callback --- --- key <- liftIO newUnique --- --- modifyMVar_ mvar $ \(state, subscribers) -> do --- -- Call listener with initial value --- wrappedCallback (pure state) --- pure (state, HM.insert key wrappedCallback subscribers) --- --- atomically $ newDisposable $ disposeFn key --- where --- disposeFn :: Unique -> IO () --- disposeFn key = modifyMVar_ mvar (\(state, subscribers) -> pure (state, HM.delete key subscribers)) --- ---newObservableVar :: MonadIO m => v -> m (ObservableVar v) ---newObservableVar initialValue = liftIO do --- ObservableVar <$> newMVar (initialValue, HM.empty) --- ---setObservableVar :: MonadIO m => ObservableVar v -> v -> m () ---setObservableVar observable value = modifyObservableVar observable (const value) --- ---stateObservableVar :: MonadIO m => ObservableVar v -> (v -> (a, v)) -> m a ---stateObservableVar (ObservableVar mvar) f = --- liftIO $ modifyMVar mvar $ \(oldState, subscribers) -> do --- let (result, newState) = f oldState --- mapM_ (\callback -> callback (pure newState)) subscribers --- pure ((newState, subscribers), result) --- ---modifyObservableVar :: MonadIO m => ObservableVar v -> (v -> v) -> m () ---modifyObservableVar observable f = stateObservableVar observable (((), ) . f) --- --- --- + --data FnObservable v = FnObservable { -- retrieveFn :: ResourceManagerIO (Future v), -- observeFn :: (ObservableState v -> ResourceManagerIO ()) -> ResourceManagerIO ()