Skip to content

Commit

Permalink
support for zmq_proxy
Browse files Browse the repository at this point in the history
  • Loading branch information
jdc8 committed Sep 21, 2012
1 parent 6f43c54 commit 6e224b4
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 0 deletions.
52 changes: 52 additions & 0 deletions test/proxy.test
@@ -0,0 +1,52 @@
package require tcltest
set auto_path [list ../lib {*}$auto_path]
package require -exact zmq 3.3

tcltest::test proxy-1 {zmq proxy} -body {
zmq proxy
} -returnCodes {error} -result {wrong # args: should be "zmq proxy frontend backend ?capture?"}

tcltest::test proxy-2 {zmq proxy} -setup {
zmq context ctx
} -body {
zmq proxy b c d
} -cleanup {
ctx term
} -returnCodes {error} -result {socket "b" does not exists}

tcltest::test proxy-3 {zmq proxy} -setup {
zmq context ctx
zmq socket b ctx REQ
} -body {
zmq proxy b c d
} -cleanup {
b close
ctx term
} -returnCodes {error} -result {socket "c" does not exists}

tcltest::test proxy-4 {zmq proxy} -setup {
zmq context ctx
zmq socket b ctx REQ
zmq socket c ctx REP
} -body {
zmq proxy b c d
} -cleanup {
b close
c close
ctx term
} -returnCodes {error} -result {socket "d" does not exists}

tcltest::test proxy-5 {zmq proxy} -setup {
zmq context ctx
zmq socket b ctx REQ
zmq socket c ctx REP
zmq socket d ctx PUB
} -body {
# Can't do this test, call will not return
# zmq proxy b c d
} -cleanup {
b close
c close
d close
ctx term
} -returnCodes {ok} -result {}
24 changes: 24 additions & 0 deletions zmq.tcl
Expand Up @@ -2314,6 +2314,30 @@ critcl::ccommand ::zmq::device {cd ip objc objv} {
return TCL_OK;
} -clientdata zmqClientDataInitVar

critcl::ccommand ::zmq::proxy {cd ip objc objv} {
void* frontendsocket = 0;
void* backendsocket = 0;
void* capturesocket = 0;
if (objc < 3 || objc > 4) {
Tcl_WrongNumArgs(ip, 1, objv, "frontend backend ?capture?");
return TCL_ERROR;
}
frontendsocket = known_socket(ip, objv[1]);
if (!frontendsocket)
return TCL_ERROR;
backendsocket = known_socket(ip, objv[2]);
if (!backendsocket)
return TCL_ERROR;
if (objc > 3) {
capturesocket = known_socket(ip, objv[3]);
if (!capturesocket)
return TCL_ERROR;
}
zmq_proxy(frontendsocket, backendsocket, capturesocket);
last_zmq_errno = zmq_errno();
return TCL_OK;
} -clientdata zmqClientDataInitVar

critcl::ccommand ::zmq::zframe_strhex {cd ip objc objv} {
char* data = 0;
int size = -1;
Expand Down

0 comments on commit 6e224b4

Please sign in to comment.