Xrequest

module Xrequest(xrequest,xrequestF, xrequestK,Cont(..)) where
--import Command(XRequest)
--import Event(XResponse)
import FRequest
import FudgetIO
import EitherUtils(Cont(..))
import NullF(F,K)
--import DialogueIO hiding (IOError)

xrequestK = xrequest :: (XRequest -> (XResponse -> Maybe a) -> Cont (K b c) a)
xrequestF = xrequest :: (XRequest -> (XResponse -> Maybe a) -> Cont (F b c) a)

xrequest xreq expected = cmdContLow (XReq xreq) expectXResp
  where expectXResp msg =
          case msg of
            XResp xr -> expected xr
            _ -> Nothing

{- old:
xrequestK = xrequest cmdContK

xrequestF = xrequest cmdContF

xrequest k cmd exp' =
    k (DoXRequest cmd)
      (\msg ->
       case msg of
         IOResponse (XResponse xr) -> exp' xr
         _ -> Nothing)

-}