Changing name and adding new log runner.
Add a log runner where a syncronizition primitiv can come from the outside.
This commit is contained in:
parent
aa7ce69eb8
commit
62c41d1d36
@ -1,5 +1,5 @@
|
|||||||
name: ris-utils
|
name: ris-utils
|
||||||
version: 0.0.2
|
version: 0.0.3
|
||||||
homepage: "https://git.fiskhamn.se/steffenomak/ris-utils#readme"
|
homepage: "https://git.fiskhamn.se/steffenomak/ris-utils#readme"
|
||||||
license: BSD3
|
license: BSD3
|
||||||
author: "Stefan Risberg"
|
author: "Stefan Risberg"
|
||||||
|
|||||||
@ -5,7 +5,7 @@ cabal-version: 1.12
|
|||||||
-- see: https://github.com/sol/hpack
|
-- see: https://github.com/sol/hpack
|
||||||
|
|
||||||
name: ris-utils
|
name: ris-utils
|
||||||
version: 0.0.2
|
version: 0.0.3
|
||||||
description: Please see the README at <https://git.fiskhamn.se/steffenomak/ris-utils#readme>
|
description: Please see the README at <https://git.fiskhamn.se/steffenomak/ris-utils#readme>
|
||||||
homepage: https://git.fiskhamn.se/steffenomak/ris-utils#readme
|
homepage: https://git.fiskhamn.se/steffenomak/ris-utils#readme
|
||||||
author: Stefan Risberg
|
author: Stefan Risberg
|
||||||
|
|||||||
@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
module Effects.Log (
|
module Effects.Log (
|
||||||
Severity (..),
|
Severity (..),
|
||||||
runLogEff,
|
runLog,
|
||||||
|
runLogWithQsem,
|
||||||
stderrLogger,
|
stderrLogger,
|
||||||
fmtMessage,
|
fmtMessage,
|
||||||
addTime,
|
addTime,
|
||||||
@ -50,25 +51,34 @@ data Log :: Effect where
|
|||||||
|
|
||||||
makeEffect ''Log
|
makeEffect ''Log
|
||||||
|
|
||||||
runLogEff ::
|
runLog ::
|
||||||
(Time :> es, Concurrent :> es, IOE :> es) =>
|
(Time :> es, Concurrent :> es, IOE :> es) =>
|
||||||
LogAction IO T.Builder ->
|
LogAction IO T.Builder ->
|
||||||
Eff (Log : es) a ->
|
Eff (Log : es) a ->
|
||||||
Eff es a
|
Eff es a
|
||||||
runLogEff logger e = do
|
runLog logger e = do
|
||||||
lock <- newQSem 1
|
lock <- newQSem 1
|
||||||
|
runLogWithQsem lock logger e
|
||||||
|
|
||||||
|
runLogWithQsem ::
|
||||||
|
(Time :> es, Concurrent :> es, IOE :> es) =>
|
||||||
|
QSem ->
|
||||||
|
LogAction IO T.Builder ->
|
||||||
|
Eff (Log : es) a ->
|
||||||
|
Eff es a
|
||||||
|
runLogWithQsem lock logger e = do
|
||||||
reinterpret
|
reinterpret
|
||||||
(runReader lock)
|
(runReader lock)
|
||||||
( \_ -> \case
|
( \_ -> \case
|
||||||
Log sev msg -> do
|
Log sev msg -> do
|
||||||
l <- ask
|
lock' <- ask
|
||||||
bracket_ (waitQSem l) (signalQSem l) $ do
|
bracket_ (waitQSem lock') (signalQSem lock') $ do
|
||||||
t <- currentTimeB
|
t <- currentTimeB
|
||||||
liftIO $ cmap (addTime t . fmtMessage) logger <& msg `WithSeverity` sev
|
liftIO $ cmap (addTime t . fmtMessage) logger <& msg `WithSeverity` sev
|
||||||
)
|
)
|
||||||
e
|
e
|
||||||
|
|
||||||
|
|
||||||
stderrLogger ::
|
stderrLogger ::
|
||||||
(MonadIO m) =>
|
(MonadIO m) =>
|
||||||
LogAction m T.Builder
|
LogAction m T.Builder
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user