{-|
Module : EventLoop.Input.SystemMessage
Description : Library of all the possible input 'SystemMessage' events in the example implementation.
Copyright : (c) Sebastiaan la Fleur, 2014
License : BSD3
Maintainer : sebastiaan.la.fleur@gmail.com
Stability : experimental
Portability : All
This module expresses how the incoming 'SystemMessage's are modelled in the example implementation.
-}
module EventLoop.Input.SystemMessage(
SystemMessageIn(..)
) where
import EventLoop.Json
import EventLoop.Config
{-|
The different possible 'SystemMessageIn's.
-}
data SystemMessageIn = Setup -- ^ A request for the 'Setup'. This should be generated when the connection to a client is made. The answer should be a 'EventLoop.Output.CanvasSetup' message.
| Background -- ^ A request for the 'Background'. This should be generated when the connection to a client is made. The answer could be the background of the graphical application.
| Time -- ^ When a timer has been spawn, each \'tick\' a 'Time' is generated by the client to let the server know it is time.
{-|
Instance to express how to parse a 'SystemMessageIn' from a JSON formatted 'String'.
-}
instance FromJSON SystemMessageIn where
fromJsonMessage (JSONObject ms) | message == setupS = Setup
| message == backgroundS = Background
| message == timeS = Time
where
JSONString message = retrieveError messageS ms