module OpenTelemetry.Common where

import System.Clock (TimeSpec)
import Data.Word (Word8)

newtype Timestamp = Timestamp TimeSpec
  deriving (ReadPrec [Timestamp]
ReadPrec Timestamp
Int -> ReadS Timestamp
ReadS [Timestamp]
(Int -> ReadS Timestamp)
-> ReadS [Timestamp]
-> ReadPrec Timestamp
-> ReadPrec [Timestamp]
-> Read Timestamp
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Timestamp]
$creadListPrec :: ReadPrec [Timestamp]
readPrec :: ReadPrec Timestamp
$creadPrec :: ReadPrec Timestamp
readList :: ReadS [Timestamp]
$creadList :: ReadS [Timestamp]
readsPrec :: Int -> ReadS Timestamp
$creadsPrec :: Int -> ReadS Timestamp
Read, Int -> Timestamp -> ShowS
[Timestamp] -> ShowS
Timestamp -> String
(Int -> Timestamp -> ShowS)
-> (Timestamp -> String)
-> ([Timestamp] -> ShowS)
-> Show Timestamp
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Timestamp] -> ShowS
$cshowList :: [Timestamp] -> ShowS
show :: Timestamp -> String
$cshow :: Timestamp -> String
showsPrec :: Int -> Timestamp -> ShowS
$cshowsPrec :: Int -> Timestamp -> ShowS
Show, Timestamp -> Timestamp -> Bool
(Timestamp -> Timestamp -> Bool)
-> (Timestamp -> Timestamp -> Bool) -> Eq Timestamp
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Timestamp -> Timestamp -> Bool
$c/= :: Timestamp -> Timestamp -> Bool
== :: Timestamp -> Timestamp -> Bool
$c== :: Timestamp -> Timestamp -> Bool
Eq, Eq Timestamp
Eq Timestamp
-> (Timestamp -> Timestamp -> Ordering)
-> (Timestamp -> Timestamp -> Bool)
-> (Timestamp -> Timestamp -> Bool)
-> (Timestamp -> Timestamp -> Bool)
-> (Timestamp -> Timestamp -> Bool)
-> (Timestamp -> Timestamp -> Timestamp)
-> (Timestamp -> Timestamp -> Timestamp)
-> Ord Timestamp
Timestamp -> Timestamp -> Bool
Timestamp -> Timestamp -> Ordering
Timestamp -> Timestamp -> Timestamp
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: Timestamp -> Timestamp -> Timestamp
$cmin :: Timestamp -> Timestamp -> Timestamp
max :: Timestamp -> Timestamp -> Timestamp
$cmax :: Timestamp -> Timestamp -> Timestamp
>= :: Timestamp -> Timestamp -> Bool
$c>= :: Timestamp -> Timestamp -> Bool
> :: Timestamp -> Timestamp -> Bool
$c> :: Timestamp -> Timestamp -> Bool
<= :: Timestamp -> Timestamp -> Bool
$c<= :: Timestamp -> Timestamp -> Bool
< :: Timestamp -> Timestamp -> Bool
$c< :: Timestamp -> Timestamp -> Bool
compare :: Timestamp -> Timestamp -> Ordering
$ccompare :: Timestamp -> Timestamp -> Ordering
$cp1Ord :: Eq Timestamp
Ord)

-- | Contain details about the trace. Unlike TraceState values, TraceFlags are present in all traces. The current version of the specification only supports a single flag called sampled.
newtype TraceFlags = TraceFlags Word8
  deriving (Int -> TraceFlags -> ShowS
[TraceFlags] -> ShowS
TraceFlags -> String
(Int -> TraceFlags -> ShowS)
-> (TraceFlags -> String)
-> ([TraceFlags] -> ShowS)
-> Show TraceFlags
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TraceFlags] -> ShowS
$cshowList :: [TraceFlags] -> ShowS
show :: TraceFlags -> String
$cshow :: TraceFlags -> String
showsPrec :: Int -> TraceFlags -> ShowS
$cshowsPrec :: Int -> TraceFlags -> ShowS
Show, TraceFlags -> TraceFlags -> Bool
(TraceFlags -> TraceFlags -> Bool)
-> (TraceFlags -> TraceFlags -> Bool) -> Eq TraceFlags
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TraceFlags -> TraceFlags -> Bool
$c/= :: TraceFlags -> TraceFlags -> Bool
== :: TraceFlags -> TraceFlags -> Bool
$c== :: TraceFlags -> TraceFlags -> Bool
Eq, Eq TraceFlags
Eq TraceFlags
-> (TraceFlags -> TraceFlags -> Ordering)
-> (TraceFlags -> TraceFlags -> Bool)
-> (TraceFlags -> TraceFlags -> Bool)
-> (TraceFlags -> TraceFlags -> Bool)
-> (TraceFlags -> TraceFlags -> Bool)
-> (TraceFlags -> TraceFlags -> TraceFlags)
-> (TraceFlags -> TraceFlags -> TraceFlags)
-> Ord TraceFlags
TraceFlags -> TraceFlags -> Bool
TraceFlags -> TraceFlags -> Ordering
TraceFlags -> TraceFlags -> TraceFlags
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: TraceFlags -> TraceFlags -> TraceFlags
$cmin :: TraceFlags -> TraceFlags -> TraceFlags
max :: TraceFlags -> TraceFlags -> TraceFlags
$cmax :: TraceFlags -> TraceFlags -> TraceFlags
>= :: TraceFlags -> TraceFlags -> Bool
$c>= :: TraceFlags -> TraceFlags -> Bool
> :: TraceFlags -> TraceFlags -> Bool
$c> :: TraceFlags -> TraceFlags -> Bool
<= :: TraceFlags -> TraceFlags -> Bool
$c<= :: TraceFlags -> TraceFlags -> Bool
< :: TraceFlags -> TraceFlags -> Bool
$c< :: TraceFlags -> TraceFlags -> Bool
compare :: TraceFlags -> TraceFlags -> Ordering
$ccompare :: TraceFlags -> TraceFlags -> Ordering
$cp1Ord :: Eq TraceFlags
Ord)