module Signet.Unstable.Exception.InvalidMessage where

import qualified Control.Monad.Catch as Exception
import qualified Signet.Unstable.Exception.InvalidId as InvalidId
import qualified Signet.Unstable.Exception.InvalidTimestamp as InvalidTimestamp

data InvalidMessage
  = InvalidId InvalidId.InvalidId
  | InvalidTimestamp InvalidTimestamp.InvalidTimestamp
  deriving (InvalidMessage -> InvalidMessage -> Bool
(InvalidMessage -> InvalidMessage -> Bool)
-> (InvalidMessage -> InvalidMessage -> Bool) -> Eq InvalidMessage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InvalidMessage -> InvalidMessage -> Bool
== :: InvalidMessage -> InvalidMessage -> Bool
$c/= :: InvalidMessage -> InvalidMessage -> Bool
/= :: InvalidMessage -> InvalidMessage -> Bool
Eq, Int -> InvalidMessage -> ShowS
[InvalidMessage] -> ShowS
InvalidMessage -> String
(Int -> InvalidMessage -> ShowS)
-> (InvalidMessage -> String)
-> ([InvalidMessage] -> ShowS)
-> Show InvalidMessage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InvalidMessage -> ShowS
showsPrec :: Int -> InvalidMessage -> ShowS
$cshow :: InvalidMessage -> String
show :: InvalidMessage -> String
$cshowList :: [InvalidMessage] -> ShowS
showList :: [InvalidMessage] -> ShowS
Show)

instance Exception.Exception InvalidMessage where
  displayException :: InvalidMessage -> String
displayException InvalidMessage
invalidMessage =
    String
"invalid message: " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> case InvalidMessage
invalidMessage of
      InvalidId InvalidId
invalidId ->
        InvalidId -> String
forall e. Exception e => e -> String
Exception.displayException InvalidId
invalidId
      InvalidTimestamp InvalidTimestamp
invalidTimestamp ->
        InvalidTimestamp -> String
forall e. Exception e => e -> String
Exception.displayException InvalidTimestamp
invalidTimestamp