Created
May 4, 2013 07:42
-
-
Save michelp/5516687 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (load "zmq/zmq.l") | |
| (import zmq) | |
| (de socker (Name) (pack "ipc://" Name ".sock")) | |
| (de setup-engine (Local . @) | |
| (setq *Ctx (zmq~zctx-new)) | |
| (setq *Router (zmq~zsocket-new *Ctx zmq~ROUTER)) | |
| (setq *Peers (zmq~zhash-new)) | |
| (zmq~zsocket-bind *Router (socker Local)) | |
| (while (args) | |
| (let (Socket (zmq~zsocket-new *Ctx zmq~DEALER) | |
| Name (next) | |
| Epoint (socker Name) ) | |
| (zmq~zsocket-set-identity Socket Local) | |
| (zmq~zsocket-connect Socket Epoint) | |
| (zmq~zhash-insert *Peers Name Socket) ) ) ) | |
| (de run-engine () | |
| (while (= (zmq~zsocket-poll *Router -1) 1) | |
| (let (In (zmq~zmsg-recv *Router) | |
| Out (zmq~zmsg-new) | |
| Sender (zmq~zmsg-popstr In) ) | |
| (finally (zmq~zmsg-destroy In) | |
| (zmq~zmsg-pushstr Out (sym (eval (any (zmq~zmsg-popstr In))))) | |
| (zmq~zmsg-send Out (zmq~zhash-lookup *Peers Sender)) ) ) ) ) | |
| (de main @ | |
| (pass setup-engine) | |
| (run-engine) ) | |
| (de send-sym (Peer S) | |
| (let Out (zmq~zmsg-new) | |
| (zmq~zmsg-pushstr Out (sym S)) | |
| (zmq~zmsg-send Out (zmq~zhash-lookup *Peers Peer)) ) ) | |
| (de recv-sym () | |
| (let In (zmq~zmsg-recv *Router) | |
| (finally (zmq~zmsg-destroy In) | |
| (println (zmq~zmsg-popstr In)) | |
| (any (zmq~zmsg-popstr In)) ) ) ) | |
| (de test () | |
| (setq a (pipe (main "a" "b" "c"))) | |
| (setq b (pipe (main "b" "a" "c"))) | |
| (setup-engine "c" "a" "b") ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment