Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
A simple ReqResp protocol, togetether with an incremental decoder. Mux is
chopping messages into MuxSDU
s of a fixed size, for that reasone the
peer awaiting for messages needs an incremental decoder to assemple messages
back.
Synopsis
- data MsgReqResp req resp
- data ReqRespClient req resp m a where
- SendMsgReq ∷ req → (resp → m (ReqRespClient req resp m a)) → ReqRespClient req resp m a
- SendMsgDone ∷ m a → ReqRespClient req resp m a
- EarlyExit ∷ a → ReqRespClient req resp m a
- data TraceSendRecv msg
- = TraceSend msg
- | TraceRecv msg
- | TraceEarlyExit
- | TraceFailure DeserialiseFailure
- runDecoderWithChannel ∷ ∀ m a. MonadST m ⇒ Channel m → Maybe ByteString → Decoder (PrimState m) a → m (Either DeserialiseFailure (a, Maybe ByteString))
- runClient ∷ ∀ req resp m a. (MonadST m, Serialise req, Serialise resp, Show req, Show resp) ⇒ Tracer m (TraceSendRecv (MsgReqResp req resp)) → Channel m → ReqRespClient req resp m a → m (a, Maybe ByteString)
- data ReqRespServer req resp m a = ReqRespServer {
- recvMsgReq ∷ req → m (resp, ReqRespServer req resp m a)
- recvMsgDone ∷ m a
- runServer ∷ ∀ req resp m a. (MonadST m, Serialise req, Serialise resp, Show req, Show resp) ⇒ Tracer m (TraceSendRecv (MsgReqResp req resp)) → Channel m → ReqRespServer req resp m a → m (a, Maybe ByteString)
Documentation
data MsgReqResp req resp Source #
Protocol messages.
Instances
data ReqRespClient req resp m a where Source #
A Client which requests req
data and receives resp
.
SendMsgReq ∷ req → (resp → m (ReqRespClient req resp m a)) → ReqRespClient req resp m a | |
SendMsgDone ∷ m a → ReqRespClient req resp m a | |
EarlyExit ∷ a → ReqRespClient req resp m a |
data TraceSendRecv msg Source #
Instances
Show msg ⇒ Show (TraceSendRecv msg) Source # | |
Defined in Test.Mux.ReqResp showsPrec ∷ Int → TraceSendRecv msg → ShowS # show ∷ TraceSendRecv msg → String # showList ∷ [TraceSendRecv msg] → ShowS # |
runDecoderWithChannel ∷ ∀ m a. MonadST m ⇒ Channel m → Maybe ByteString → Decoder (PrimState m) a → m (Either DeserialiseFailure (a, Maybe ByteString)) Source #
runClient ∷ ∀ req resp m a. (MonadST m, Serialise req, Serialise resp, Show req, Show resp) ⇒ Tracer m (TraceSendRecv (MsgReqResp req resp)) → Channel m → ReqRespClient req resp m a → m (a, Maybe ByteString) Source #
Run a client using a byte Channel
.
data ReqRespServer req resp m a Source #
Server which receives req
and responds with resp
.
ReqRespServer | |
|
runServer ∷ ∀ req resp m a. (MonadST m, Serialise req, Serialise resp, Show req, Show resp) ⇒ Tracer m (TraceSendRecv (MsgReqResp req resp)) → Channel m → ReqRespServer req resp m a → m (a, Maybe ByteString) Source #