43 lines
940 B
Nim
43 lines
940 B
Nim
import os, nanomsg
|
|
|
|
proc sendMsg(s: cint, msg: string) =
|
|
echo "SENDING \"",msg,"\""
|
|
let bytes = s.send(msg.cstring, msg.len + 1, 0)
|
|
assert bytes == msg.len + 1
|
|
|
|
proc recvMsg(s: cint) =
|
|
var buf: cstring
|
|
let bytes = s.recv(addr buf, MSG, 0)
|
|
if bytes > 0:
|
|
echo "RECEIVED \"",buf,"\""
|
|
discard freemsg buf
|
|
|
|
proc sendRecv(s: cint, msg: string) =
|
|
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)
|