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
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