{-# 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
$cfrom :: forall x. LogMessage -> Rep LogMessage x
from :: forall x. LogMessage -> Rep LogMessage x
$cto :: forall x. Rep LogMessage x -> LogMessage
to :: forall x. Rep LogMessage x -> LogMessage
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
$cshowsPrec :: Int -> LogMessage -> ShowS
showsPrec :: Int -> LogMessage -> ShowS
$cshow :: LogMessage -> String
show :: LogMessage -> String
$cshowList :: [LogMessage] -> ShowS
showList :: [LogMessage] -> ShowS
Show, LogMessage -> LogMessage -> Bool
(LogMessage -> LogMessage -> Bool)
-> (LogMessage -> LogMessage -> Bool) -> Eq LogMessage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LogMessage -> LogMessage -> Bool
== :: LogMessage -> LogMessage -> Bool
$c/= :: LogMessage -> LogMessage -> Bool
/= :: LogMessage -> LogMessage -> Bool
Eq, LogMessage -> ()
(LogMessage -> ()) -> NFData LogMessage
forall a. (a -> ()) -> NFData a
$crnf :: LogMessage -> ()
rnf :: LogMessage -> ()
NFData, [LogMessage] -> Value
[LogMessage] -> Encoding
LogMessage -> Value
LogMessage -> Encoding
(LogMessage -> Value)
-> (LogMessage -> Encoding)
-> ([LogMessage] -> Value)
-> ([LogMessage] -> Encoding)
-> ToJSON LogMessage
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: LogMessage -> Value
toJSON :: LogMessage -> Value
$ctoEncoding :: LogMessage -> Encoding
toEncoding :: LogMessage -> Encoding
$ctoJSONList :: [LogMessage] -> Value
toJSONList :: [LogMessage] -> Value
$ctoEncodingList :: [LogMessage] -> Encoding
toEncodingList :: [LogMessage] -> Encoding
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
$cparseJSON :: Value -> Parser LogMessage
parseJSON :: Value -> Parser LogMessage
$cparseJSONList :: Value -> Parser [LogMessage]
parseJSONList :: Value -> Parser [LogMessage]
FromJSON)