diff options
author | Paul Oliver <contact@pauloliver.dev> | 2024-08-24 11:57:18 -0700 |
---|---|---|
committer | Paul Oliver <contact@pauloliver.dev> | 2024-10-14 13:56:27 -0700 |
commit | 70d3e37b1a088209fe84abf07a39d14dec116c6b (patch) | |
tree | cd7779f004080c02b1fc6b1327c43ec2dd4e02d5 /hsm-dummy-receiver |
Diffstat (limited to 'hsm-dummy-receiver')
-rw-r--r-- | hsm-dummy-receiver/Main.hs | 51 | ||||
-rw-r--r-- | hsm-dummy-receiver/hsm-dummy-receiver.cabal | 20 |
2 files changed, 71 insertions, 0 deletions
diff --git a/hsm-dummy-receiver/Main.hs b/hsm-dummy-receiver/Main.hs new file mode 100644 index 0000000..47b483b --- /dev/null +++ b/hsm-dummy-receiver/Main.hs @@ -0,0 +1,51 @@ +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE OverloadedRecordDot #-} +{-# LANGUAGE OverloadedStrings #-} + +-- Proof of concept application, defines a custom @Consumer@. ZMQ client +-- listens for incoming messages from @dummy-pulser@. +module Main + ( main + ) +where + +import Control.Monad (forever) +import Data.Aeson (FromJSON) +import Data.Function ((&)) +import Data.Text (Text, pack) +import Data.Void (Void) +import Effectful (IOE, runEff) +import Effectful.Log (Log, localDomain, logInfo_, runLog) +import Effectful.Reader.Static (Reader, runReader) +import Effectful.Resource (Resource, runResource) +import GHC.Generics (Generic) +import Hsm.Core.App (launch) +import Hsm.Core.Pipes (Consumer, await, runEffect, (>->)) +import Hsm.Core.Zmq (client) + +data Env = Env + { name :: Text + , subEps :: [Text] + , topics :: [Text] + } + deriving (FromJSON, Generic) + +type Effs = [Log, Reader Env, Resource, IOE] + +type Receiver = Consumer Int Env Void Effs + +receiver :: Receiver () +receiver = + localDomain "receiver" $ + forever $ + await >>= logInfo_ . mappend "Received pulse #" . pack . show + +main :: IO () +main = + launch "dummy-receiver" $ \logger level e -> + (client >-> receiver) + & runEffect + & runLog e.name logger level + & runReader e + & runResource + & runEff diff --git a/hsm-dummy-receiver/hsm-dummy-receiver.cabal b/hsm-dummy-receiver/hsm-dummy-receiver.cabal new file mode 100644 index 0000000..20d985a --- /dev/null +++ b/hsm-dummy-receiver/hsm-dummy-receiver.cabal @@ -0,0 +1,20 @@ +cabal-version: 3.4 +author: Paul Oliver +build-type: Simple +maintainer: contact@pauloliver.dev +name: hsm-dummy-receiver +version: 0.1.0.0 + +executable dummy-receiver + build-depends: + , aeson + , base + , effectful-core + , hsm-core + , log-effectful + , resourcet-effectful + , text + + main-is: Main.hs + ghc-options: -Wall -Wunused-packages + default-language: GHC2024 |