Fix for 0MQ 2.0.7.
[julia.git] / test.lisp
blob17304b1386dcd390b29ffaab6dda1c66336687be
1 (asdf:oos 'asdf:load-op :zeromq)
3 (defpackage :julia-test
4 (:use :cl))
6 (in-package :julia-test)
8 (defvar *bus* "epgm://lo;226.0.0.1:5555")
9 (defvar *ctx*)
10 (defvar *bus-in*)
11 (defvar *bus-out*)
12 (defvar *poll-in*)
13 (defvar *me* "TROLL")
14 (defvar *uid* 100)
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))
24 rep)
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)
29 rep)))
31 (defun init ()
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*))
41 (defun shutdown ()
42 (zmq:close *bus-in*)
43 (zmq:close *bus-out*)
44 (zmq:term *ctx*))
46 (init)
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))
57 (shutdown)
58 (sb-ext:quit)