1 ! Copyright (C) 2005 Chris Double. All Rights Reserved.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: serialize sequences concurrency io io.server qualified
4 threads arrays namespaces kernel ;
6 IN: concurrency.distributed
8 TUPLE: node hostname port ;
12 : handle-node-client ( -- )
13 deserialize first2 get-process send ;
15 : node-server ( port -- )
18 [ handle-node-client ] with-server ;
20 : send-to-node ( msg pid host port -- )
21 io.sockets:<inet> io.sockets:<client> [
25 : localnode ( -- node )
28 : start-node ( hostname port -- )
29 [ node-server ] in-thread
30 <node> \ localnode set-global ;
32 TUPLE: remote-process node pid ;
34 C: <remote-process> remote-process
36 M: remote-process send ( message process -- )
37 #! Send the message via the inter-node protocol
38 { remote-process-pid remote-process-node } get-slots
39 { node-hostname node-port } get-slots
42 M: process (serialize) ( obj -- )
43 localnode swap process-pid <remote-process> (serialize) ;