-- | Fudget low-level message types
module FRequest(
  module FRequest,
  XCommand,XEvent,XRequest,XResponse,
  SocketRequest,SocketResponse,
  LayoutMessage,LayoutResponse
  --AsyncInput(..)
) where
import Command(XCommand,XRequest)
import Event(XEvent,XResponse)
import Sockets(SocketRequest,SocketResponse{-,AsyncInput-})
import DialogueIO(Request,Response)
import LayoutRequest(LayoutMessage(..),LayoutResponse)

data FRequest
  = XCmd XCommand
  | LCmd LayoutMessage
  -- asynchronous above, synchronous below, but see ../internal/IsRequest.hs
  | XReq XRequest
  | SReq SocketRequest
  | DReq Request
  deriving Int -> FRequest -> ShowS
[FRequest] -> ShowS
FRequest -> String
(Int -> FRequest -> ShowS)
-> (FRequest -> String) -> ([FRequest] -> ShowS) -> Show FRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FRequest] -> ShowS
$cshowList :: [FRequest] -> ShowS
show :: FRequest -> String
$cshow :: FRequest -> String
showsPrec :: Int -> FRequest -> ShowS
$cshowsPrec :: Int -> FRequest -> ShowS
Show

data FResponse
  = XEvt  XEvent
  | LEvt  LayoutResponse
--  | SEvt  AsyncInput -- still represented as DResp (AsyncInput ...)
  -- asynchronous above, synchronous below, but see ../internal/IsRequest.hs
  | XResp XResponse
  | SResp SocketResponse
  | DResp Response
  deriving Int -> FResponse -> ShowS
[FResponse] -> ShowS
FResponse -> String
(Int -> FResponse -> ShowS)
-> (FResponse -> String)
-> ([FResponse] -> ShowS)
-> Show FResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FResponse] -> ShowS
$cshowList :: [FResponse] -> ShowS
show :: FResponse -> String
$cshow :: FResponse -> String
showsPrec :: Int -> FResponse -> ShowS
$cshowsPrec :: Int -> FResponse -> ShowS
Show

layoutRequestCmd :: LayoutRequest -> FRequest
layoutRequestCmd = LayoutMessage -> FRequest
LCmd (LayoutMessage -> FRequest)
-> (LayoutRequest -> LayoutMessage) -> LayoutRequest -> FRequest
forall b c a. (b -> c) -> (a -> b) -> a -> c
. LayoutRequest -> LayoutMessage
LayoutRequest