top-0.2: src/Network/Top/Pipes.hs
-- |Access Top connections as Pipes
module Network.Top.Pipes (
pipeIn,
pipeOut,
-- *Re-exports from Pipe
runEffect,
(>->),
yield,
for,
await,
lift,
) where
import Data.Flat
import Network.Top.Types
import Pipes
-- |Receive values from a typed connection, terminate when connection is closed
pipeIn :: (Show a, MonadIO m,Flat a) => Connection a -> Producer a m ()
-- pipeIn conn = loop
-- where
-- loop = do
-- mv <- liftIO $ input conn
-- case mv of
-- Nothing -> return ()
-- Just v -> do
-- yield v
-- loop
-- |Send values on a typed connection, terminate when connection is closed
pipeOut :: (Show a, MonadIO m,Flat a) => Connection a -> Consumer a m ()
-- pipeOut conn = loop
-- where
-- loop = do
-- v <- await
-- alive <- liftIO $ output conn v
-- when alive loop
pipeIn conn = loop
where
loop = do
v <- liftIO $ input conn
yield v
loop
pipeOut conn = loop
where
loop = do
v <- await
liftIO $ output conn v
loop