{-# LANGUAGE RankNTypes #-} module Affection.MessageBus.Message where import Data.Time.Clock (UTCTime(..)) class Message msg where msgTime :: msg -> UTCTime data EngineMessage m = MsgUserMessage { msgPayload :: m , msgWhen :: UTCTime } -- ^ Generic user defined message with custom payload | MsgEngineReady UTCTime instance Message (EngineMessage m) where msgTime (MsgUserMessage _ t) = t msgTime (MsgEngineReady t) = t