{-# LANGUAGE DeriveAnyClass #-}

module Hercules.API.Agent.Socket.ServicePayload where

import Hercules.API.Agent.Build.BuildTask (BuildTask)
import Hercules.API.Agent.Effect.EffectTask (EffectTask)
import Hercules.API.Agent.Evaluate.EvaluateTask (EvaluateTask)
import Hercules.API.Agent.LifeCycle.ServiceInfo (ServiceInfo)
import Hercules.API.Prelude
import Hercules.API.Task

data Cancel = MkCancel {Cancel -> Id (Task Any)
taskId :: Id (Task Any)}
  deriving (forall x. Rep Cancel x -> Cancel
forall x. Cancel -> Rep Cancel x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Cancel x -> Cancel
$cfrom :: forall x. Cancel -> Rep Cancel x
Generic, Int -> Cancel -> ShowS
[Cancel] -> ShowS
Cancel -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Cancel] -> ShowS
$cshowList :: [Cancel] -> ShowS
show :: Cancel -> String
$cshow :: Cancel -> String
showsPrec :: Int -> Cancel -> ShowS
$cshowsPrec :: Int -> Cancel -> ShowS
Show, Cancel -> Cancel -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Cancel -> Cancel -> Bool
$c/= :: Cancel -> Cancel -> Bool
== :: Cancel -> Cancel -> Bool
$c== :: Cancel -> Cancel -> Bool
Eq, Cancel -> ()
forall a. (a -> ()) -> NFData a
rnf :: Cancel -> ()
$crnf :: Cancel -> ()
NFData, [Cancel] -> Encoding
[Cancel] -> Value
Cancel -> Encoding
Cancel -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [Cancel] -> Encoding
$ctoEncodingList :: [Cancel] -> Encoding
toJSONList :: [Cancel] -> Value
$ctoJSONList :: [Cancel] -> Value
toEncoding :: Cancel -> Encoding
$ctoEncoding :: Cancel -> Encoding
toJSON :: Cancel -> Value
$ctoJSON :: Cancel -> Value
ToJSON, Value -> Parser [Cancel]
Value -> Parser Cancel
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [Cancel]
$cparseJSONList :: Value -> Parser [Cancel]
parseJSON :: Value -> Parser Cancel
$cparseJSON :: Value -> Parser Cancel
FromJSON)

data ServicePayload
  = ServiceInfo ServiceInfo
  | StartEvaluation EvaluateTask
  | StartBuild BuildTask
  | StartEffect EffectTask
  | Cancel Cancel
  deriving (forall x. Rep ServicePayload x -> ServicePayload
forall x. ServicePayload -> Rep ServicePayload x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ServicePayload x -> ServicePayload
$cfrom :: forall x. ServicePayload -> Rep ServicePayload x
Generic, Int -> ServicePayload -> ShowS
[ServicePayload] -> ShowS
ServicePayload -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ServicePayload] -> ShowS
$cshowList :: [ServicePayload] -> ShowS
show :: ServicePayload -> String
$cshow :: ServicePayload -> String
showsPrec :: Int -> ServicePayload -> ShowS
$cshowsPrec :: Int -> ServicePayload -> ShowS
Show, ServicePayload -> ServicePayload -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ServicePayload -> ServicePayload -> Bool
$c/= :: ServicePayload -> ServicePayload -> Bool
== :: ServicePayload -> ServicePayload -> Bool
$c== :: ServicePayload -> ServicePayload -> Bool
Eq, ServicePayload -> ()
forall a. (a -> ()) -> NFData a
rnf :: ServicePayload -> ()
$crnf :: ServicePayload -> ()
NFData, [ServicePayload] -> Encoding
[ServicePayload] -> Value
ServicePayload -> Encoding
ServicePayload -> Value
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ServicePayload] -> Encoding
$ctoEncodingList :: [ServicePayload] -> Encoding
toJSONList :: [ServicePayload] -> Value
$ctoJSONList :: [ServicePayload] -> Value
toEncoding :: ServicePayload -> Encoding
$ctoEncoding :: ServicePayload -> Encoding
toJSON :: ServicePayload -> Value
$ctoJSON :: ServicePayload -> Value
ToJSON, Value -> Parser [ServicePayload]
Value -> Parser ServicePayload
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ServicePayload]
$cparseJSONList :: Value -> Parser [ServicePayload]
parseJSON :: Value -> Parser ServicePayload
$cparseJSON :: Value -> Parser ServicePayload
FromJSON)