git.iko.soy/distributed-process
on master help sign in
Properly remove whereisRemote (fix previous commit)
commit63bfd196de18f6ce61fb6cebae6d034b4ebf7f85 authorEdsko de Vries <edsko@edsko.net> dateThu 23 Aug 2012, 14:11 (14 years ago) parentccab66c
5 files changed+28−6
distributed-process/src/Control/Distributed/Process.hs−2 distributed-process/src/Control/Distributed/Process/Internal/Primitives.hs−1 distributed-process/src/Control/Distributed/Process/Internal/Types.hs+17 distributed-process/src/Control/Distributed/Process/Node.hs+3−2 distributed-process/tests/TestCH.hs+8−1
distributed-process/src/Control/Distributed/Process.hs−2
@@ -77,7 +77,6 @@ module Control.Distributed.Process
7777 , nsend
7878 , registerRemote
7979 , unregisterRemote
80− , whereisRemote
8180 , whereisRemoteAsync
8281 , nsendRemote
8382 , WhereIsReply(..)
@@ -197,7 +196,6 @@ import Control.Distributed.Process.Internal.Primitives
197196 , nsend
198197 , registerRemote
199198 , unregisterRemote
200− , whereisRemote
201199 , whereisRemoteAsync
202200 , nsendRemote
203201 -- Closures
distributed-process/src/Control/Distributed/Process/Internal/Primitives.hs−1
@@ -38,7 +38,6 @@ module Control.Distributed.Process.Internal.Primitives
3838 , nsend
3939 , registerRemote
4040 , unregisterRemote
41− , whereisRemote
4241 , whereisRemoteAsync
4342 , nsendRemote
4443 -- * Closures
distributed-process/src/Control/Distributed/Process/Internal/Types.hs+17
@@ -10,6 +10,8 @@ module Control.Distributed.Process.Internal.Types
1010 , ProcessId(..)
1111 , Identifier(..)
1212 , nodeOf
13+ , firstNonReservedProcessId
14+ , nullProcessId
1315 -- * Local nodes and processes
1416 , LocalNode(..)
1517 , LocalNodeState(..)
@@ -148,6 +150,21 @@ nodeOf (NodeIdentifier nid) = nid
148150nodeOf (ProcessIdentifier pid) = processNodeId pid
149151nodeOf (SendPortIdentifier cid) = processNodeId (sendPortProcessId cid)
150152
153+--------------------------------------------------------------------------------
154+-- Special PIDs --
155+--------------------------------------------------------------------------------
156+
157+firstNonReservedProcessId :: Int32
158+firstNonReservedProcessId = 1
159+
160+nullProcessId :: NodeId -> ProcessId
161+nullProcessId nid =
162+ ProcessId { processNodeId = nid
163+ , processLocalId = LocalProcessId { lpidUnique = 0
164+ , lpidCounter = 0
165+ }
166+ }
167+
151168--------------------------------------------------------------------------------
152169-- Local nodes and processes --
153170--------------------------------------------------------------------------------
distributed-process/src/Control/Distributed/Process/Node.hs+3−2
@@ -116,6 +116,7 @@ import Control.Distributed.Process.Internal.Types
116116 , payloadToMessage
117117 , createMessage
118118 , runLocalProcess
119+ , firstNonReservedProcessId
119120 )
120121import Control.Distributed.Process.Serializable (Serializable)
121122import Control.Distributed.Process.Internal.Messaging
@@ -151,7 +152,7 @@ createBareLocalNode endPoint rtable = do
151152 unq <- randomIO
152153 state <- newMVar LocalNodeState
153154 { _localProcesses = Map.empty
154− , _localPidCounter = 0
155+ , _localPidCounter = firstNonReservedProcessId
155156 , _localPidUnique = unq
156157 , _localConnections = Map.empty
157158 }
@@ -235,7 +236,7 @@ forkProcess node proc = modifyMVar (localState node) startProcess
235236 then do
236237 newUnique <- randomIO
237238 return ( (localProcessWithId lpid ^= Just lproc)
238− . (localPidCounter ^= 0)
239+ . (localPidCounter ^= firstNonReservedProcessId)
239240 . (localPidUnique ^= newUnique)
240241 $ st
241242 , pid
distributed-process/tests/TestCH.hs+8−1
@@ -48,6 +48,13 @@ ping = do
4848 send partner (Ping self)
4949 ping
5050
51+-- | Quick and dirty synchronous version of whereisRemoteAsync
52+whereisRemote :: NodeId -> String -> Process (Maybe ProcessId)
53+whereisRemote nid string = do
54+ whereisRemoteAsync nid string
55+ WhereIsReply _ mPid <- expect
56+ return mPid
57+
5158-- | Basic ping test
5259testPing :: NT.Transport -> IO ()
5360testPing transport = do
@@ -549,7 +556,7 @@ testRegistry transport = do
549556 Ping pid' <- expect
550557 True <- return $ pingServer == pid'
551558 return ()
552−
559+
553560testRemoteRegistry :: NT.Transport -> IO ()
554561testRemoteRegistry transport = do
555562 node1 <- newLocalNode transport initRemoteTable