{-# LANGUAGE DeriveGeneric #-} module Library.Types.Communication where import Data.Aeson import Data.UUID import GHC.Generics data ServerMessage = ServerQuit | AcceptClient { acClientUUID :: UUID } deriving (Eq, Show, Generic) instance FromJSON ServerMessage instance ToJSON ServerMessage data ClientMessagePayload = ClientQuit deriving (Eq, Show, Generic) data ClientMessage = ClientMessage { cmClientID :: UUID , cmPayload :: ClientMessagePayload } | IdRequest deriving (Eq, Show, Generic) instance FromJSON ClientMessagePayload instance ToJSON ClientMessagePayload instance FromJSON ClientMessage instance ToJSON ClientMessage