Binary Star server, using core class in Tcl

#
# Binary Star server, using bstar reactor
#

lappend auto_path .
package require BStar

# Echo service
proc echo {s} {
set msg [zmsg recv $s]
zmsg send $s $msg
return 0
}

# Arguments can be either of:
# -p primary server, at tcp://localhost:5001
# -b backup server, at tcp://localhost:5002

if {[lindex $argv 0] eq "-p"} {
set bstar [BStar new PRIMARY "tcp://*:5003" "tcp://localhost:5004" [expr {[lindex $argv 1] eq "-v"}]]
$bstar voter "tcp://*:5001" ROUTER echo
} elseif {[lindex $argv 0] eq "-b"} {
set bstar [BStar new BACKUP "tcp://*:5004" "tcp://localhost:5003" [expr {[lindex $argv 1] eq "-v"}]]
$bstar voter "tcp://*:5002" ROUTER echo
} else {
puts "Usage: bstarsrv2.tcl <-p|-b> ?-v?"
exit 1
}

$bstar start
vwait forever
$bstar destroy