module Signet.Unstable.Exception.ToleranceException where

import qualified Control.Monad.Catch as Exception
import qualified Signet.Unstable.Type.Timestamp as Timestamp

newtype ToleranceException
  = MkToleranceException Timestamp.Timestamp
  deriving (ToleranceException -> ToleranceException -> Bool
(ToleranceException -> ToleranceException -> Bool)
-> (ToleranceException -> ToleranceException -> Bool)
-> Eq ToleranceException
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ToleranceException -> ToleranceException -> Bool
== :: ToleranceException -> ToleranceException -> Bool
$c/= :: ToleranceException -> ToleranceException -> Bool
/= :: ToleranceException -> ToleranceException -> Bool
Eq, Int -> ToleranceException -> ShowS
[ToleranceException] -> ShowS
ToleranceException -> String
(Int -> ToleranceException -> ShowS)
-> (ToleranceException -> String)
-> ([ToleranceException] -> ShowS)
-> Show ToleranceException
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ToleranceException -> ShowS
showsPrec :: Int -> ToleranceException -> ShowS
$cshow :: ToleranceException -> String
show :: ToleranceException -> String
$cshowList :: [ToleranceException] -> ShowS
showList :: [ToleranceException] -> ShowS
Show)

instance Exception.Exception ToleranceException where
  displayException :: ToleranceException -> String
displayException = String -> ShowS
forall a. Monoid a => a -> a -> a
mappend String
"timestamp out of tolerance: " ShowS
-> (ToleranceException -> String) -> ToleranceException -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Timestamp -> String
forall a. Show a => a -> String
show (Timestamp -> String)
-> (ToleranceException -> Timestamp)
-> ToleranceException
-> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ToleranceException -> Timestamp
unwrap

unwrap :: ToleranceException -> Timestamp.Timestamp
unwrap :: ToleranceException -> Timestamp
unwrap (MkToleranceException Timestamp
timestamp) = Timestamp
timestamp