|
|
|
|
@ -68,7 +68,7 @@ xmppFromHandle :: Handle
@@ -68,7 +68,7 @@ xmppFromHandle :: Handle
|
|
|
|
|
-> IO (a, XMPPConState) |
|
|
|
|
xmppFromHandle handle hostname username res f = do |
|
|
|
|
liftIO $ hSetBuffering handle NoBuffering |
|
|
|
|
let raw = sourceHandle' handle |
|
|
|
|
let raw = sourceHandle handle |
|
|
|
|
let src = raw $= XP.parseBytes def |
|
|
|
|
let st = XMPPConState |
|
|
|
|
src |
|
|
|
|
@ -82,32 +82,6 @@ xmppFromHandle handle hostname username res f = do
@@ -82,32 +82,6 @@ xmppFromHandle handle hostname username res f = do
|
|
|
|
|
res |
|
|
|
|
runStateT f st |
|
|
|
|
|
|
|
|
|
-- TODO: Once pullrequest has been merged, switch back to upstream |
|
|
|
|
sourceHandle' :: MonadIO m => Handle -> Source m BS.ByteString |
|
|
|
|
sourceHandle' h = |
|
|
|
|
src |
|
|
|
|
where |
|
|
|
|
src = PipeM pull close |
|
|
|
|
|
|
|
|
|
pull = do |
|
|
|
|
bs <- liftIO (BS.hGetSome h 4096) |
|
|
|
|
if BS.null bs |
|
|
|
|
then return $ Done Nothing () |
|
|
|
|
else return $ HaveOutput src close bs |
|
|
|
|
|
|
|
|
|
close = return () |
|
|
|
|
|
|
|
|
|
sinkHandle' :: MonadIO m |
|
|
|
|
=> Handle |
|
|
|
|
-> Sink BS.ByteString m () |
|
|
|
|
sinkHandle' h = |
|
|
|
|
NeedInput push close |
|
|
|
|
where |
|
|
|
|
push input = PipeM |
|
|
|
|
(liftIO (BS.hPut h input) >> return (NeedInput push close)) |
|
|
|
|
(return ()) |
|
|
|
|
close = return () |
|
|
|
|
|
|
|
|
|
zeroSource :: Source IO output |
|
|
|
|
zeroSource = sourceState () (\_ -> forever $ threadDelay 10000000) |
|
|
|
|
|
|
|
|
|
@ -131,7 +105,7 @@ xmppRawConnect host hostname = do
@@ -131,7 +105,7 @@ xmppRawConnect host hostname = do
|
|
|
|
|
con <- connectTo host (PortNumber 5222) |
|
|
|
|
hSetBuffering con NoBuffering |
|
|
|
|
return con |
|
|
|
|
let raw = sourceHandle' con |
|
|
|
|
let raw = sourceHandle con |
|
|
|
|
let src = raw $= XP.parseBytes def |
|
|
|
|
let st = XMPPConState |
|
|
|
|
src |
|
|
|
|
|