git.iko.soy/distributed-process
on master help sign in
Make it work with ghc 7.0.4
commit0a3e174036e4e9a60e3e5d5d6fc99cc2385756c2 authorEdsko de Vries <edsko@well-typed.com> dateWed 23 May 2012, 15:27 (14 years ago) parent549a414
3 files changed+14−6
network-transport/network-transport.cabal+4−4 network-transport/src/Network/Transport/Internal.hs+8 network-transport/src/Network/Transport/Internal/TCP.hs+2−2
network-transport/network-transport.cabal+4−4
@@ -23,7 +23,7 @@ Library
2323 Network.Transport.Chan,
2424 Network.Transport.TCP,
2525 Network.Transport.Util
26− extensions: OverloadedStrings, ForeignFunctionInterface, DeriveDataTypeable, EmptyDataDecls
26+ extensions: OverloadedStrings, ForeignFunctionInterface, DeriveDataTypeable, EmptyDataDecls, RankNTypes
2727 ghc-options: -Wall -fno-warn-unused-do-bind
2828 HS-Source-Dirs: src
2929
@@ -38,7 +38,7 @@ Test-Suite TestTCP
3838 mtl,
3939 transformers,
4040 ansi-terminal
41− extensions: OverloadedStrings, ForeignFunctionInterface, DeriveDataTypeable, EmptyDataDecls, ExistentialQuantification, FlexibleInstances, RankNTypes, OverlappingInstances
41+ extensions: OverloadedStrings, ForeignFunctionInterface, DeriveDataTypeable, EmptyDataDecls, RankNTypes, ExistentialQuantification, FlexibleInstances, OverlappingInstances
4242 ghc-options: -Wall -fno-warn-unused-do-bind
4343 HS-Source-Dirs: tests src
4444
@@ -52,7 +52,7 @@ Test-Suite TestMulticastInMemory
5252 mtl,
5353 transformers,
5454 ansi-terminal
55− extensions: OverloadedStrings, ForeignFunctionInterface, DeriveDataTypeable, EmptyDataDecls, ExistentialQuantification, FlexibleInstances, RankNTypes, OverlappingInstances
55+ extensions: OverloadedStrings, ForeignFunctionInterface, DeriveDataTypeable, EmptyDataDecls, RankNTypes, ExistentialQuantification, FlexibleInstances, OverlappingInstances
5656 ghc-options: -Wall -fno-warn-unused-do-bind
5757 HS-Source-Dirs: tests src
5858
@@ -66,6 +66,6 @@ Test-Suite TestInMemory
6666 mtl,
6767 transformers,
6868 ansi-terminal
69− extensions: OverloadedStrings, ForeignFunctionInterface, DeriveDataTypeable, EmptyDataDecls, ExistentialQuantification, FlexibleInstances, RankNTypes, OverlappingInstances
69+ extensions: OverloadedStrings, ForeignFunctionInterface, DeriveDataTypeable, EmptyDataDecls, RankNTypes, ExistentialQuantification, FlexibleInstances, OverlappingInstances
7070 ghc-options: -Wall -fno-warn-unused-do-bind
7171 HS-Source-Dirs: tests src
network-transport/src/Network/Transport/Internal.hs+8
@@ -9,7 +9,9 @@ module Network.Transport.Internal ( -- * Encoders/decoders
99 , mapIOException
1010 , tryIO
1111 , tryToEnum
12+ -- * Replicated functionality from "base"
1213 , void
14+ , forkIOWithUnmask
1315 -- * Debugging
1416 , tlog
1517 ) where
@@ -23,6 +25,8 @@ import qualified Data.ByteString as BS (length)
2325import qualified Data.ByteString.Internal as BSI (unsafeCreate, toForeignPtr, inlinePerformIO)
2426import Control.Monad.IO.Class (MonadIO, liftIO)
2527import Control.Exception (IOException, Exception, catch, try, throwIO)
28+import Control.Concurrent (ThreadId, forkIO)
29+import GHC.IO (unsafeUnmask)
2630--import Control.Concurrent (myThreadId)
2731
2832foreign import ccall unsafe "htonl" htonl :: CInt -> CInt
@@ -85,6 +89,10 @@ tlog msg = liftIO $ do
8589void :: Monad m => m a -> m ()
8690void p = p >> return ()
8791
92+-- | This was introduced in "base" some time after 7.0.4
93+forkIOWithUnmask :: ((forall a . IO a -> IO a) -> IO ()) -> IO ThreadId
94+forkIOWithUnmask io = forkIO (io unsafeUnmask)
95+
8896-- | Safe version of 'toEnum'
8997tryToEnum :: (Enum a, Bounded a) => Int -> Maybe a
9098tryToEnum = go minBound maxBound
network-transport/src/Network/Transport/Internal/TCP.hs+2−2
@@ -7,7 +7,7 @@ module Network.Transport.Internal.TCP ( forkServer
77 ) where
88
99import Prelude hiding (catch)
10−import Network.Transport.Internal (decodeInt32, void, tryIO)
10+import Network.Transport.Internal (decodeInt32, void, tryIO, forkIOWithUnmask)
1111import qualified Network.Socket as N ( HostName
1212 , ServiceName
1313 , Socket
@@ -26,7 +26,7 @@ import qualified Network.Socket as N ( HostName
2626 , sClose
2727 )
2828import qualified Network.Socket.ByteString as NBS (recv)
29−import Control.Concurrent (ThreadId, forkIOWithUnmask)
29+import Control.Concurrent (ThreadId)
3030import Control.Monad (liftM, forever)
3131import Control.Exception (SomeException, catch, bracketOnError, throwIO, mask_)
3232import Data.ByteString (ByteString)