git.iko.soy/distributed-process
on master help sign in
Change to lazy ByteStrings.
d97505cNicolas Wu
distributed-process/src/Control/Distributed/Process.hs+2−2
@@ -27,8 +27,8 @@ module Control.Distributed.Process (
27import qualified Network.Transport as Trans
27import qualified Network.Transport as Trans
28import Network.Transport (Transport)
28import Network.Transport (Transport)
29
29
30−import qualified Data.ByteString.Char8 as BS
30+import qualified Data.ByteString.Lazy.Char8 as BS
31−import Data.ByteString.Char8 (ByteString)
31+import Data.ByteString.Lazy.Char8 (ByteString)
32import qualified Data.IntMap as IntMap
32import qualified Data.IntMap as IntMap
33import Data.IntMap (IntMap)
33import Data.IntMap (IntMap)
34import Control.Applicative
34import Control.Applicative
examples/DemoTCP.hs+1−1
@@ -7,7 +7,7 @@ import Control.Monad
7import Network.Socket (HostName, ServiceName)
7import Network.Socket (HostName, ServiceName)
8import System.Environment
8import System.Environment
9
9
10−import qualified Data.ByteString.Char8 as BS
10+import qualified Data.ByteString.Lazy.Char8 as BS
11
11
12import Debug.Trace
12import Debug.Trace
13
13
examples/DemoTransport.hs+1−1
@@ -7,7 +7,7 @@ import Network.Transport.TCP (mkTransport, TCPConfig (..))
7import Control.Concurrent
7import Control.Concurrent
8import Control.Monad
8import Control.Monad
9
9
10−import qualified Data.ByteString.Char8 as BS
10+import qualified Data.ByteString.Lazy.Char8 as BS
11
11
12import Debug.Trace
12import Debug.Trace
13
13
network-transport/src/Network/Transport.hs+1−1
@@ -12,7 +12,7 @@ module Network.Transport
12 , newMulticast
12 , newMulticast
13 ) where
13 ) where
14
14
15−import Data.ByteString.Char8 (ByteString)
15+import Data.ByteString.Lazy.Char8 (ByteString)
16
16
17-- | The `Hints` and `SourceHints` provide hints to the underlying transport
17-- | The `Hints` and `SourceHints` provide hints to the underlying transport
18-- about the kind of connection that is required. This might include details
18-- about the kind of connection that is required. This might include details
network-transport/src/Network/Transport/MVar.hs+2−2
@@ -6,10 +6,10 @@ module Network.Transport.MVar
6
6
7import Control.Concurrent.MVar
7import Control.Concurrent.MVar
8import Data.IntMap (IntMap)
8import Data.IntMap (IntMap)
9−import Data.ByteString.Char8 (ByteString)
9+import Data.ByteString.Lazy.Char8 (ByteString)
10
10
11import qualified Data.IntMap as IntMap
11import qualified Data.IntMap as IntMap
12−import qualified Data.ByteString.Char8 as BS
12+import qualified Data.ByteString.Lazy.Char8 as BS
13
13
14import Network.Transport
14import Network.Transport
15
15
network-transport/src/Network/Transport/TCP.hs+8−9
@@ -9,19 +9,18 @@ import Control.Concurrent (forkIO)
9import Control.Concurrent.Chan
9import Control.Concurrent.Chan
10import Control.Concurrent.MVar
10import Control.Concurrent.MVar
11import Control.Monad (forever, unless)
11import Control.Monad (forever, unless)
12−import Data.ByteString.Char8 (ByteString)
12+import Data.ByteString.Lazy.Char8 (ByteString)
13import Data.IntMap (IntMap)
13import Data.IntMap (IntMap)
14−import Data.Word
15import Network.Socket
14import Network.Socket
16import Safe
15import Safe
17
16
18−import qualified Data.ByteString.Char8 as BS
17+import qualified Data.ByteString.Lazy.Char8 as BS
19import qualified Data.IntMap as IntMap
18import qualified Data.IntMap as IntMap
20import qualified Network.Socket as N
19import qualified Network.Socket as N
21−import qualified Network.Socket.ByteString as NBS
20+import qualified Network.Socket.ByteString.Lazy as NBS
22
21
22+type ChanId = Int
23−type Chans = MVar (Int, IntMap (Chan ByteString))
23+type Chans = MVar (ChanId, IntMap (Chan ByteString))
24−type ChanId = Int
25
24
26-- | This deals with several different configuration properties:
25-- | This deals with several different configuration properties:
27-- * Buffer size, specified in Hints
26-- * Buffer size, specified in Hints
@@ -56,7 +55,7 @@ mkTransport (TCPConfig _hints host service) = withSocketsDo $ do
56 chan <- newChan
55 chan <- newChan
57 putMVar channels (chanId + 1, IntMap.insert chanId chan chanMap)
56 putMVar channels (chanId + 1, IntMap.insert chanId chan chanMap)
58 return (mkSourceAddr host service chanId, mkTargetEnd chan)
57 return (mkSourceAddr host service chanId, mkTargetEnd chan)
59− , newMulticastWith = undefined
58+ , newMulticastWith = error "newMulticastWith: not defined"
60 , deserialize = \bs ->
59 , deserialize = \bs ->
61 case readMay . BS.unpack $ bs of
60 case readMay . BS.unpack $ bs of
62 Nothing -> error "deserialize: cannot parse"
61 Nothing -> error "deserialize: cannot parse"
@@ -80,8 +79,8 @@ mkTransport (TCPConfig _hints host service) = withSocketsDo $ do
80 setSocketOption sock ReuseAddr 1
79 setSocketOption sock ReuseAddr 1
81 N.connect sock (addrAddress serverAddr)
80 N.connect sock (addrAddress serverAddr)
82 NBS.sendAll sock $ BS.pack . show $ chanId
81 NBS.sendAll sock $ BS.pack . show $ chanId
83− return $ SourceEnd
82+ return SourceEnd
84− { Network.Transport.send = \bss -> NBS.sendMany sock bss
83+ { Network.Transport.send = mapM_ (NBS.send sock)
85 }
84 }
86
85
87 mkTargetEnd :: Chan ByteString -> TargetEnd
86 mkTargetEnd :: Chan ByteString -> TargetEnd