packages feed

mptcpanalyzer-0.0.2.0: src/MptcpAnalyzer/Stream.hs

{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
module MptcpAnalyzer.Stream (
  readStreamId
  , module M
)
where
import Data.Hashable
import Data.Word (Word32)
import Options.Applicative

import Net.Stream as M

-- Phantom types
-- data Mptcp
-- data Tcp
-- data Protocol = Tcp | Mptcp
-- type TcpFlagList = [TcpFlag]

-- TODO use Word instead
-- newtype StreamId a = StreamId Word32 deriving (Show, Read, Eq, Ord ) deriving Hashable via Word32
-- type StreamIdTcp = StreamId Tcp
-- type StreamIdMptcp = StreamId Mptcp

-- showStream :: StreamId a -> Text


-- |Can load stream ids from CSV files
readStreamId :: ReadM (StreamId a)
readStreamId = eitherReader $ \arg -> case reads arg of
  [(r, "")] -> return $ StreamId r
  _ -> Left $ "readStreamId: cannot parse value `" ++ arg ++ "`"