Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -0,0 +1,5 @@
|
|||
$ ./bin/lfe
|
||||
Erlang/OTP 17 [erts-6.2] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
|
||||
|
||||
LFE Shell V6.2 (abort with ^G)
|
||||
>
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
> (defun get-server-name ()
|
||||
(list_to_atom (++ "exampleserver@" (element 2 (inet:gethostname)))))
|
||||
|
||||
> (defun start ()
|
||||
(net_kernel:start `(,(get-server-name) shortnames))
|
||||
(erlang:set_cookie (node) 'rosettaexample)
|
||||
(let ((pid (spawn #'listen/0)))
|
||||
(register 'serverref pid)
|
||||
(io:format "~p ready~n" (list (node pid)))
|
||||
'ok))
|
||||
|
||||
> (defun listen ()
|
||||
(receive
|
||||
(`#(echo ,pid ,data)
|
||||
(io:format "Got ~p from ~p~n" (list data (node pid)))
|
||||
(! pid `#(hello ,data))
|
||||
(listen))
|
||||
(x
|
||||
(io:format "Unexpected pattern: ~p~n" `(,x)))))
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
> (defun get-server-name ()
|
||||
(list_to_atom (++ "exampleserver@" (element 2 (inet:gethostname)))))
|
||||
|
||||
> (defun send (data)
|
||||
(net_kernel:start '(exampleclient shortnames))
|
||||
(erlang:set_cookie (node) 'rosettaexample)
|
||||
(io:format "connecting to ~p~n" `(,(get-server-name)))
|
||||
(! `#(serverref ,(get-server-name)) `#(echo ,(self) ,data))
|
||||
(receive
|
||||
(`#(hello ,data)
|
||||
(io:format "Received ~p~n" `(,data)))
|
||||
(x
|
||||
(io:format "Unexpected pattern: ~p~n" (list x))))
|
||||
'ok)
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
> (start)
|
||||
exampleserver@yourhostname ready
|
||||
ok
|
||||
(exampleserver@yourhostname)>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
> (send "hi there")
|
||||
connecting to exampleserver@yourhostname
|
||||
Received "hi there"
|
||||
ok
|
||||
(exampleclient@yourhostname)> (send 42)
|
||||
connecting to exampleserver@yourhostname
|
||||
Received 42
|
||||
ok
|
||||
(exampleclient@yourhostname)> (send #(key value))
|
||||
connecting to exampleserver@yourhostname
|
||||
Received {key,value}
|
||||
ok
|
||||
(exampleclient@yourhostname)>
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
Got "hi there" from exampleclient@yourhostname
|
||||
Got 42 from exampleclient@yourhostname
|
||||
Got {key,value} from exampleclient@yourhostname
|
||||
42
Task/Distributed-programming/Nim/distributed-programming.nim
Normal file
42
Task/Distributed-programming/Nim/distributed-programming.nim
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
import os, nanomsg
|
||||
|
||||
proc sendMsg(s, msg) =
|
||||
echo "SENDING \"",msg,"\""
|
||||
let bytes = s.send(msg.cstring, msg.len + 1, 0)
|
||||
assert bytes == msg.len + 1
|
||||
|
||||
proc recvMsg(s) =
|
||||
var buf: cstring
|
||||
let bytes = s.recv(addr buf, MSG, 0)
|
||||
if bytes > 0:
|
||||
echo "RECEIVED \"",buf,"\""
|
||||
discard freemsg buf
|
||||
|
||||
proc sendRecv(s, msg) =
|
||||
var to: cint = 100
|
||||
discard s.setSockOpt(SOL_SOCKET, RCVTIMEO, addr to, sizeof to)
|
||||
while true:
|
||||
s.recvMsg
|
||||
sleep 1000
|
||||
s.sendMsg msg
|
||||
|
||||
proc node0(url: string) =
|
||||
var s = socket(AF_SP, nanomsg.PAIR)
|
||||
assert s >= 0
|
||||
let res = s.bindd url
|
||||
assert res >= 0
|
||||
s.sendRecv "node0"
|
||||
discard s.shutdown 0
|
||||
|
||||
proc node1(url: string) =
|
||||
var s = socket(AF_SP, nanomsg.PAIR)
|
||||
assert s >= 0
|
||||
let res = s.connect url
|
||||
assert res >= 0
|
||||
s.sendRecv "node1"
|
||||
discard s.shutdown 0
|
||||
|
||||
if paramStr(1) == "node0":
|
||||
node0 paramStr(2)
|
||||
elif paramStr(1) == "node1":
|
||||
node1 paramStr(2)
|
||||
Loading…
Add table
Add a link
Reference in a new issue