natskell-1.0.0.1: internal/Plumbing/Parser/API.hs
module Parser.API
( ParseStep (..)
, ParsedMessage (..)
, ParserAPI (..)
) where
import Data.ByteString (ByteString)
import Types.Err (Err)
import Types.Info (Info)
import Types.Msg (Msg)
import Types.Ok (Ok)
import Types.Ping (Ping)
import Types.Pong (Pong)
data ParseStep a = Emit a ByteString
| NeedMore
| DropPrefix Int String
| Reject String
deriving (Eq, Show)
data ParsedMessage = ParsedPing Ping
| ParsedPong Pong
| ParsedOk Ok
| ParsedErr Err
| ParsedInfo Info
| ParsedMsg Msg
| ParsedMessageTooLarge Int Int
deriving (Eq, Show)
newtype ParserAPI a = ParserAPI { parse :: ByteString -> ParseStep a }