Current section

Files

Jump to
purerl_test src PurerlTest Reporter Bus.purs
Raw

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