{-# LANGUAGE DeriveAnyClass #-}

module Hercules.API.Logs.LogMessage where

import Data.Vector
import Data.Word (Word64)
import Hercules.API.Logs.LogEntry
import Hercules.API.Logs.LogHello (LogHello)
import Hercules.API.Prelude

data LogMessage
  = Hello LogHello
  | LogEntries (Vector LogEntry)
  | End {LogMessage -> Word64
i :: !Word64, LogMessage -> Word64
ms :: !Word64}
  deriving ((forall x. LogMessage -> Rep LogMessage x)
-> (forall x. Rep LogMessage x -> LogMessage) -> Generic LogMessage
forall x. Rep LogMessage x -> LogMessage
forall x. LogMessage -> Rep LogMessage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep LogMessage x -> LogMessage
$cfrom :: forall x. LogMessage -> Rep LogMessage x
Generic, Int -> LogMessage -> ShowS
[LogMessage] -> ShowS
LogMessage -> String
(Int -> LogMessage -> ShowS)
-> (LogMessage -> String)
-> ([LogMessage] -> ShowS)
-> Show LogMessage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [LogMessage] -> ShowS
$cshowList :: [LogMessage] -> ShowS
show :: LogMessage -> String
$cshow :: LogMessage -> String
showsPrec :: Int -> LogMessage -> ShowS
$cshowsPrec :: Int -> LogMessage -> ShowS
Show, LogMessage -> LogMessage -> Bool
(LogMessage -> LogMessage -> Bool)
-> (LogMessage -> LogMessage -> Bool) -> Eq LogMessage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: LogMessage -> LogMessage -> Bool
$c/= :: LogMessage -> LogMessage -> Bool
== :: LogMessage -> LogMessage -> Bool
$c== :: LogMessage -> LogMessage -> Bool
Eq, LogMessage -> ()
(LogMessage -> ()) -> NFData LogMessage
forall a. (a -> ()) -> NFData a
rnf :: LogMessage -> ()
$crnf :: LogMessage -> ()
NFData, [LogMessage] -> Encoding
[LogMessage] -> Value
LogMessage -> Encoding
LogMessage -> Value
(LogMessage -> Value)
-> (LogMessage -> Encoding)
-> ([LogMessage] -> Value)
-> ([LogMessage] -> Encoding)
-> ToJSON LogMessage
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [LogMessage] -> Encoding
$ctoEncodingList :: [LogMessage] -> Encoding
toJSONList :: [LogMessage] -> Value
$ctoJSONList :: [LogMessage] -> Value
toEncoding :: LogMessage -> Encoding
$ctoEncoding :: LogMessage -> Encoding
toJSON :: LogMessage -> Value
$ctoJSON :: LogMessage -> Value
ToJSON, Value -> Parser [LogMessage]
Value -> Parser LogMessage
(Value -> Parser LogMessage)
-> (Value -> Parser [LogMessage]) -> FromJSON LogMessage
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [LogMessage]
$cparseJSONList :: Value -> Parser [LogMessage]
parseJSON :: Value -> Parser LogMessage
$cparseJSON :: Value -> Parser LogMessage
FromJSON)