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

Rename BasicObservable to ObservableVar

parent 4d9695c3
No related branches found
No related tags found
No related merge requests found
...@@ -12,10 +12,10 @@ module Qd.Observable ( ...@@ -12,10 +12,10 @@ module Qd.Observable (
ObservableState, ObservableState,
ObservableMessage, ObservableMessage,
MessageReason(..), MessageReason(..),
BasicObservable, ObservableVar,
createBasicObservable, newObservableVar,
setBasicObservable, setObservableVar,
modifyBasicObservable, modifyObservableVar,
joinObservable, joinObservable,
joinObservableEither, joinObservableEither,
FnObservable(..), FnObservable(..),
...@@ -99,10 +99,10 @@ instance Observable v (MappedObservable v) where ...@@ -99,10 +99,10 @@ instance Observable v (MappedObservable v) where
mapObservableM f1 (MappedObservable f2 upstream) = SomeObservable $ MappedObservable (f1 <=< f2) upstream mapObservableM f1 (MappedObservable f2 upstream) = SomeObservable $ MappedObservable (f1 <=< f2) upstream
newtype BasicObservable v = BasicObservable (MVar (ObservableState v, HM.HashMap Unique (ObservableCallback v))) newtype ObservableVar v = ObservableVar (MVar (ObservableState v, HM.HashMap Unique (ObservableCallback v)))
instance Observable v (BasicObservable v) where instance Observable v (ObservableVar v) where
getValue (BasicObservable mvar) = fst <$> readMVar mvar getValue (ObservableVar mvar) = fst <$> readMVar mvar
subscribe (BasicObservable mvar) callback = do subscribe (ObservableVar mvar) callback = do
key <- newUnique key <- newUnique
modifyMVar_ mvar $ \(state, subscribers) -> do modifyMVar_ mvar $ \(state, subscribers) -> do
-- Call listener -- Call listener
...@@ -113,22 +113,22 @@ instance Observable v (BasicObservable v) where ...@@ -113,22 +113,22 @@ instance Observable v (BasicObservable v) where
unsubscribe' :: Unique -> IO () unsubscribe' :: Unique -> IO ()
unsubscribe' key = modifyMVar_ mvar $ \(state, subscribers) -> return (state, HM.delete key subscribers) unsubscribe' key = modifyMVar_ mvar $ \(state, subscribers) -> return (state, HM.delete key subscribers)
instance Settable v (BasicObservable v) where instance Settable v (ObservableVar v) where
setValue basicObservable = setBasicObservable basicObservable . Just setValue basicObservable = setObservableVar basicObservable . Just
createBasicObservable :: Maybe v -> IO (BasicObservable v) newObservableVar :: Maybe v -> IO (ObservableVar v)
createBasicObservable defaultValue = do newObservableVar defaultValue = do
BasicObservable <$> newMVar (defaultValue, HM.empty) ObservableVar <$> newMVar (defaultValue, HM.empty)
setBasicObservable :: BasicObservable v -> ObservableState v -> IO () setObservableVar :: ObservableVar v -> ObservableState v -> IO ()
setBasicObservable (BasicObservable mvar) value = do setObservableVar (ObservableVar mvar) value = do
modifyMVar_ mvar $ \(_, subscribers) -> do modifyMVar_ mvar $ \(_, subscribers) -> do
mapM_ (\callback -> callback (Update, value)) subscribers mapM_ (\callback -> callback (Update, value)) subscribers
return (value, subscribers) return (value, subscribers)
modifyBasicObservable :: BasicObservable v -> (v -> v) -> IO () modifyObservableVar :: ObservableVar v -> (v -> v) -> IO ()
modifyBasicObservable (BasicObservable mvar) f = modifyObservableVar (ObservableVar mvar) f =
modifyMVar_ mvar $ \(oldState, subscribers) -> do modifyMVar_ mvar $ \(oldState, subscribers) -> do
let newState = (\v -> f v) <$> oldState let newState = (\v -> f v) <$> oldState
mapM_ (\callback -> callback (Update, newState)) subscribers mapM_ (\callback -> callback (Update, newState)) subscribers
......
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