|
@@ -20,9 +20,12 @@ import Control.Applicative
|
|
|
|
|
|
import Network
|
|
|
import System.IO
|
|
|
+--import System.IO.Uniform
|
|
|
+--import System.IO.Uniform.HandlePair as HP
|
|
|
+--import System.IO.Uniform.Network as Net
|
|
|
import qualified System.Process as P
|
|
|
|
|
|
-data Backend = TCPBackend String Int | UnixSocketBackend String |
|
|
|
+data Backend = TCPBackend String Int |
|
|
|
ExecBackend String [String] deriving (Show, Read, Ord, Eq)
|
|
|
|
|
|
parseBackend :: A.Parser Backend
|
|
@@ -33,14 +36,10 @@ parseBackend = do
|
|
|
h <- tillSpace
|
|
|
p <- A.decimal
|
|
|
return $ TCPBackend h p,
|
|
|
- do
|
|
|
- tp "unix"
|
|
|
- tp "socket"
|
|
|
- p <- qStr
|
|
|
- return $ UnixSocketBackend p,
|
|
|
do
|
|
|
tp "exec"
|
|
|
f <- qStr
|
|
|
+ skipHorizontalSpace
|
|
|
pp <- parseParameters
|
|
|
return $ ExecBackend f pp
|
|
|
]
|
|
@@ -66,7 +65,6 @@ runBackend b (m, qdt) = do
|
|
|
let rm = renderMetadata m
|
|
|
edt' <- intBk b $ LBS.concat [
|
|
|
fromTextual rm,
|
|
|
- "\r\n",
|
|
|
qdt]
|
|
|
case LA.parse repParse edt' of
|
|
|
LA.Fail _ _ e -> return $ Left e
|
|
@@ -74,11 +72,9 @@ runBackend b (m, qdt) = do
|
|
|
where
|
|
|
intBk :: Backend -> LBS.ByteString -> IO LBS.ByteString
|
|
|
intBk (TCPBackend h p) = runTcp h p
|
|
|
- intBk (UnixSocketBackend f) = runUnix f
|
|
|
intBk (ExecBackend f aa) = runExec f aa
|
|
|
repParse = do
|
|
|
m' <- parseMetadata
|
|
|
- A.endOfLine
|
|
|
return m'
|
|
|
|
|
|
runTcp :: String -> Int -> LBS.ByteString -> IO LBS.ByteString
|
|
@@ -86,11 +82,6 @@ runTcp host port dt = do
|
|
|
h <- connectTo host (PortNumber . fromIntegral $ port)
|
|
|
bkgTrans h dt
|
|
|
|
|
|
-runUnix :: String -> LBS.ByteString -> IO LBS.ByteString
|
|
|
-runUnix path dt = do
|
|
|
- h <- connectTo "localhost" (UnixSocket path)
|
|
|
- bkgTrans h dt
|
|
|
-
|
|
|
bkgTrans :: Handle -> LBS.ByteString -> IO LBS.ByteString
|
|
|
bkgTrans h dt = do
|
|
|
hSetNewlineMode h noNewlineTranslation
|