/**
* And the main task now sets-up child tasks, then starts its reactor.
* If you press Ctrl-C, the reactor exits and the main task shuts down.
*/
public static void main (String[] args) {
ZContext context = new ZContext();
LBBroker arg = new LBBroker ();
// Prepare our context and sockets
arg.frontend = context.createSocket (ZMQ.ROUTER);
arg.backend = context.createSocket (ZMQ.ROUTER);
arg.frontend.bind("ipc://frontend.ipc");
arg.backend.bind("ipc://backend.ipc");
int clientNbr;
for (clientNbr = 0; clientNbr < NBR_CLIENTS; clientNbr++)
ZThread.start (new ClientTask ());
for (int workerNbr = 0; workerNbr < NBR_WORKERS; workerNbr++)
ZThread.start (new WorkerTask ());
// Queue of available workers
arg.workers = new LinkedList<ZFrame> ();
// Prepare reactor and fire it up
ZLoop reactor = new ZLoop ();
PollItem item = new PollItem (arg.backend, ZMQ.Poller.POLLIN);
reactor.addPoller (item, backendHandler, arg);
reactor.start ();
context.destroy ();
}