diff options
Diffstat (limited to 'hsm-core/Hsm/Core/Zmq.hs')
-rw-r--r-- | hsm-core/Hsm/Core/Zmq.hs | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/hsm-core/Hsm/Core/Zmq.hs b/hsm-core/Hsm/Core/Zmq.hs index 8c12133..2f70d48 100644 --- a/hsm-core/Hsm/Core/Zmq.hs +++ b/hsm-core/Hsm/Core/Zmq.hs @@ -4,7 +4,6 @@ module Hsm.Core.Zmq ( withSocket ) where -import Data.Text (Text) import Effectful (Eff, IOE, (:>)) import Effectful.Log (Log, LogLevel(LogTrace)) import Effectful.Resource (Resource, allocate) @@ -12,23 +11,19 @@ import Hsm.Core.Log (withLogIO) import System.ZMQ4 qualified as Z withSocket :: - forall t es. (Z.SocketType t, IOE :> es, Log :> es, Resource :> es) + (Z.SocketType t, IOE :> es, Log :> es, Resource :> es) => t -> Eff es (Z.Socket t) withSocket stype = withLogIO >>= bracket where - bracket :: (LogLevel -> Text -> IO ()) -> Eff es (Z.Socket t) bracket logIO = snd . snd <$> allocate acquire release where - acquire :: IO (Z.Context, Z.Socket t) - acquire = do - logIO LogTrace "Acquiring ZMQ context" - cont <- Z.context - sock <- Z.socket cont stype - return (cont, sock) - -- - release :: (Z.Context, Z.Socket t) -> IO () - release (cont, sock) = do - logIO LogTrace "Releasing ZMQ context" - Z.close sock - Z.shutdown cont + acquire = + logIO LogTrace "Acquiring ZMQ context" >> do + cont <- Z.context + sock <- Z.socket cont stype + return (cont, sock) + release (cont, sock) = + logIO LogTrace "Releasing ZMQ context" >> do + Z.close sock + Z.shutdown cont |