reorg
This commit is contained in:
parent
68257e9076
commit
218e1983ad
2 changed files with 37 additions and 37 deletions
|
@ -14,9 +14,6 @@ module Git.FilterProcess (
|
|||
WelcomeMessage(..),
|
||||
Version(..),
|
||||
Capability(..),
|
||||
readUntilFlushPkt,
|
||||
readUntilFlushPktOrSize,
|
||||
discardUntilFlushPkt,
|
||||
longRunningProcessHandshake,
|
||||
longRunningFilterProcessHandshake,
|
||||
FilterRequest(..),
|
||||
|
@ -77,40 +74,6 @@ decodeCapability pktline = decodeConfigValue pktline >>= \case
|
|||
ConfigValue "capability" c -> Just $ Capability c
|
||||
_ -> Nothing
|
||||
|
||||
{- Reads PktLines until a flushPkt (or EOF),
|
||||
- and returns all except the flushPkt -}
|
||||
readUntilFlushPkt :: IO [PktLine]
|
||||
readUntilFlushPkt = go []
|
||||
where
|
||||
go l = readPktLine stdin >>= \case
|
||||
Just pktline | not (isFlushPkt pktline) -> go (pktline:l)
|
||||
_ -> return (reverse l)
|
||||
|
||||
{- Reads PktLines until at least the specified number of bytes have been
|
||||
- read, or until a flushPkt (or EOF). Returns Right if it did read a
|
||||
- flushPkt/EOF, and Left if there is still content leftover that needs to
|
||||
- be read. -}
|
||||
readUntilFlushPktOrSize :: Int -> IO (Either [PktLine] [PktLine])
|
||||
readUntilFlushPktOrSize = go []
|
||||
where
|
||||
go l n = readPktLine stdin >>= \case
|
||||
Just pktline
|
||||
| isFlushPkt pktline -> return (Right (reverse l))
|
||||
| otherwise ->
|
||||
let len = B.length (pktLineToByteString pktline)
|
||||
n' = n - len
|
||||
in if n' <= 0
|
||||
then return (Left (reverse (pktline:l)))
|
||||
else go (pktline:l) n'
|
||||
Nothing -> return (Right (reverse l))
|
||||
|
||||
{- Reads PktLines until a flushPkt (or EOF), and throws them away. -}
|
||||
discardUntilFlushPkt :: IO ()
|
||||
discardUntilFlushPkt = readPktLine stdin >>= \case
|
||||
Just pktline | isFlushPkt pktline -> return ()
|
||||
Nothing -> return ()
|
||||
_ -> discardUntilFlushPkt
|
||||
|
||||
longRunningProcessHandshake
|
||||
:: (WelcomeMessage -> Maybe WelcomeMessage)
|
||||
-> ([Version] -> [Version])
|
||||
|
|
|
@ -19,6 +19,9 @@ module Git.PktLine (
|
|||
writePktLine,
|
||||
flushPkt,
|
||||
isFlushPkt,
|
||||
readUntilFlushPkt,
|
||||
readUntilFlushPktOrSize,
|
||||
discardUntilFlushPkt,
|
||||
) where
|
||||
|
||||
import System.IO
|
||||
|
@ -115,3 +118,37 @@ flushPkt = PktLine mempty
|
|||
|
||||
isFlushPkt :: PktLine -> Bool
|
||||
isFlushPkt (PktLine b) = b == mempty
|
||||
|
||||
{- Reads PktLines until a flushPkt (or EOF),
|
||||
- and returns all except the flushPkt -}
|
||||
readUntilFlushPkt :: IO [PktLine]
|
||||
readUntilFlushPkt = go []
|
||||
where
|
||||
go l = readPktLine stdin >>= \case
|
||||
Just pktline | not (isFlushPkt pktline) -> go (pktline:l)
|
||||
_ -> return (reverse l)
|
||||
|
||||
{- Reads PktLines until at least the specified number of bytes have been
|
||||
- read, or until a flushPkt (or EOF). Returns Right if it did read a
|
||||
- flushPkt/EOF, and Left if there is still content leftover that needs to
|
||||
- be read. -}
|
||||
readUntilFlushPktOrSize :: Int -> IO (Either [PktLine] [PktLine])
|
||||
readUntilFlushPktOrSize = go []
|
||||
where
|
||||
go l n = readPktLine stdin >>= \case
|
||||
Just pktline
|
||||
| isFlushPkt pktline -> return (Right (reverse l))
|
||||
| otherwise ->
|
||||
let len = B.length (pktLineToByteString pktline)
|
||||
n' = n - len
|
||||
in if n' <= 0
|
||||
then return (Left (reverse (pktline:l)))
|
||||
else go (pktline:l) n'
|
||||
Nothing -> return (Right (reverse l))
|
||||
|
||||
{- Reads PktLines until a flushPkt (or EOF), and throws them away. -}
|
||||
discardUntilFlushPkt :: IO ()
|
||||
discardUntilFlushPkt = readPktLine stdin >>= \case
|
||||
Just pktline | isFlushPkt pktline -> return ()
|
||||
Nothing -> return ()
|
||||
_ -> discardUntilFlushPkt
|
||||
|
|
Loading…
Reference in a new issue