summaryrefslogtreecommitdiff
path: root/hsm-dummy-receiver
diff options
context:
space:
mode:
authorPaul Oliver <contact@pauloliver.dev>2024-08-24 11:57:18 -0700
committerPaul Oliver <contact@pauloliver.dev>2024-10-14 13:56:27 -0700
commit70d3e37b1a088209fe84abf07a39d14dec116c6b (patch)
treecd7779f004080c02b1fc6b1327c43ec2dd4e02d5 /hsm-dummy-receiver
Initial commitHEADmaster
Diffstat (limited to 'hsm-dummy-receiver')
-rw-r--r--hsm-dummy-receiver/Main.hs51
-rw-r--r--hsm-dummy-receiver/hsm-dummy-receiver.cabal20
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