Browse Source

added forkSession

renamed forkXMPP to fork
master
Philipp Balzarek 14 years ago
parent
commit
6c50dfb3b7
  1. 3
      src/Network/XMPP.hs
  2. 20
      src/Network/XMPP/Concurrent/Monad.hs

3
src/Network/XMPP.hs

@ -133,7 +133,8 @@ module Network.XMPP
, iqResultPayload , iqResultPayload
-- * Threads -- * Threads
, XMPP , XMPP
, forkXMPP , fork
, forkSession
-- * Misc -- * Misc
, exampleParams , exampleParams
) where ) where

20
src/Network/XMPP/Concurrent/Monad.hs

@ -98,15 +98,19 @@ sendS a = do
liftIO . atomically $ writeTChan out a liftIO . atomically $ writeTChan out a
return () return ()
-- | Create a forked session object without forking a thread
forkSession :: Session -> IO Session
forkSession sess = do
mCH' <- newIORef Nothing
pCH' <- newIORef Nothing
return $ sess {messagesRef = mCH' ,presenceRef = pCH'}
-- | Fork a new thread -- | Fork a new thread
forkXMPP :: XMPP () -> XMPP ThreadId fork :: XMPP () -> XMPP ThreadId
forkXMPP a = do fork a = do
thread <- ask sess <- ask
mCH' <- liftIO $ newIORef Nothing sess' <- liftIO $ forkSession sess
pCH' <- liftIO $ newIORef Nothing liftIO $ forkIO $ runReaderT a sess'
liftIO $ forkIO $ runReaderT a (thread {messagesRef = mCH'
,presenceRef = pCH'
})
filterMessages :: (MessageError -> Bool) filterMessages :: (MessageError -> Bool)
-> (Message -> Bool) -> (Message -> Bool)

Loading…
Cancel
Save