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

Update askBar to work from Proxy

parent 414da2c3
No related branches found
No related tags found
No related merge requests found
...@@ -87,6 +87,15 @@ data Bar = Bar { ...@@ -87,6 +87,15 @@ data Bar = Bar {
data BarUpdateChannel = BarUpdateChannel (IO ()) data BarUpdateChannel = BarUpdateChannel (IO ())
type BarUpdateEvent = Event.Event type BarUpdateEvent = Event.Event
class MonadBarIO m where
askBar :: m Bar
instance MonadBarIO BarIO where
askBar = lift ask
instance MonadBarIO (Proxy a' a b' b BarIO) where
askBar = lift askBar
mkBlockState :: BlockOutput -> BlockState mkBlockState :: BlockOutput -> BlockState
mkBlockState blockOutput = Just (blockOutput, Nothing) mkBlockState blockOutput = Just (blockOutput, Nothing)
...@@ -104,9 +113,6 @@ updateEventHandler eventHandler (Just (blockOutput, _)) = Just (blockOutput, Jus ...@@ -104,9 +113,6 @@ updateEventHandler eventHandler (Just (blockOutput, _)) = Just (blockOutput, Jus
runBarIO :: Bar -> BarIO r -> IO r runBarIO :: Bar -> BarIO r -> IO r
runBarIO bar action = runReaderT (runSafeT action) bar runBarIO bar action = runReaderT (runSafeT action) bar
askBar :: BarIO Bar
askBar = lift ask
modify :: (BlockOutput -> BlockOutput) modify :: (BlockOutput -> BlockOutput)
-> Pipe BlockState BlockState BarIO r -> Pipe BlockState BlockState BarIO r
modify x = PP.map (over (_Just . _1) x) modify x = PP.map (over (_Just . _1) x)
...@@ -152,7 +158,7 @@ sharedInterval seconds = do ...@@ -152,7 +158,7 @@ sharedInterval seconds = do
-- Updates all client blocks -- Updates all client blocks
-- If send returns 'False' the clients mailbox has been closed, so it is removed -- If send returns 'False' the clients mailbox has been closed, so it is removed
bar <- askBar bar <- askBar
liftIO $ modifyMVar_ clientsMVar $ fmap catMaybes . mapConcurrently (\r -> runBarIO bar $ runAndFilterClient r) liftIO $ modifyMVar_ clientsMVar $ fmap catMaybes . mapConcurrently (runBarIO bar . runAndFilterClient)
-- Then update the bar -- Then update the bar
updateBar updateBar
......
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