Current section
Files
Jump to
Current section
Files
src/PurerlTest/Reporter/Bus.purs
module PurerlTest.Reporter.Bus
( subscribe
, unsubscribe
, send
, Message(..)
) where
import Prelude
import Effect (Effect)
import Effect.Class (class MonadEffect)
import Erl.Atom (Atom)
import Erl.Atom as Atom
import Erl.Process (class HasSelf)
import PurerlTest.Types (SuiteStatus)
import SimpleBus (Bus, SubscriptionRef)
import SimpleBus as SimpleBus
data Message
= SuiteMessage SuiteStatus
| AllDone Int
name :: Atom
name = Atom.atom "PurerlTest.Reporter.Bus"
bus :: Bus Atom Message
bus = SimpleBus.bus name
subscribe
:: forall message m
. HasSelf m message
=> MonadEffect m
=> (Message -> message)
-> m SubscriptionRef
subscribe f = SimpleBus.subscribe bus f
unsubscribe :: SubscriptionRef -> Effect Unit
unsubscribe = SimpleBus.unsubscribe
send :: Message -> Effect Unit
send result = SimpleBus.raise bus result