1 (asdf:oos
'asdf
:load-op
:zeromq
)
3 (defpackage :julia-test
6 (in-package :julia-test
)
8 (defvar *bus
* "epgm://lo;226.0.0.1:5555")
16 (defun send-msg (to cmd args
)
17 (let ((data (format nil
"~a ~a ~a ~a ~a" to
*me
* (incf *uid
*) cmd args
)))
18 (format t
"send-msg> ~s~%" data
)
19 (zmq:send
*bus-out
* (make-instance 'zmq
:msg
:data data
))))
21 (defun recv-msg (&optional
(timeout -
1))
22 (let ((ret (zmq:poll
*poll-in
* timeout
))
23 (msg (make-instance 'zmq
:msg
))
25 (when (not (null ret
))
26 (zmq:recv
*bus-in
* msg
)
27 (setq rep
(zmq:msg-data-as-string msg
))
28 (format t
"recv-msg> ~s~%" rep
)
32 (setq *ctx
* (zmq:init
1)
33 *bus-in
* (zmq:socket
*ctx
* zmq
:sub
)
34 *bus-out
* (zmq:socket
*ctx
* zmq
:pub
)
35 *poll-in
* (list (make-instance 'zmq
:pollitem
36 :socket
*bus-in
* :events zmq
:pollin
)))
37 (zmq:setsockopt
*bus-in
* zmq
:subscribe
*me
*)
38 (zmq:connect
*bus-in
* *bus
*)
39 (zmq:connect
*bus-out
* *bus
*))
48 ;(send-msg :coordinator 'write "(defvar my-list 1)")
49 ;(send-msg :all 'write "(defvar my-list 1)")
50 ;(send-msg :all 'write "(progn (incf my-list) (foo))")
51 ;(send-msg :all 'read "my-list")
52 ;(format t" > ~a~%" (recv-msg))
54 (send-msg :coordinator
'write
"(defvar my-list 1)")
55 (format t
" > ~a~%" (recv-msg))