From 70d3e37b1a088209fe84abf07a39d14dec116c6b Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Sat, 24 Aug 2024 11:57:18 -0700 Subject: Initial commit --- hsm-dummy-receiver/Main.hs | 51 +++++++++++++++++++++++++++++ hsm-dummy-receiver/hsm-dummy-receiver.cabal | 20 +++++++++++ 2 files changed, 71 insertions(+) create mode 100644 hsm-dummy-receiver/Main.hs create mode 100644 hsm-dummy-receiver/hsm-dummy-receiver.cabal (limited to 'hsm-dummy-receiver') 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 -- cgit v1.2.1