use of org.zeromq.ZMQ.Socket in project jeromq by zeromq.
the class ZThread method fork.
// --------------------------------------------------------------------------
// Create an attached thread. An attached thread gets a ctx and a PAIR
// pipe back to its parent. It must monitor its pipe, and exit if the
// pipe becomes unreadable. Returns pipe, or null if there was an error.
public static Socket fork(ZContext ctx, IAttachedRunnable runnable, Object... args) {
Socket pipe = ctx.createSocket(ZMQ.PAIR);
if (pipe != null) {
pipe.bind(String.format("inproc://zctx-pipe-%d", pipe.hashCode()));
} else {
return null;
}
// Connect child pipe to our pipe
ZContext ccontext = ZContext.shadow(ctx);
Socket cpipe = ccontext.createSocket(ZMQ.PAIR);
if (cpipe == null) {
return null;
}
cpipe.connect(String.format("inproc://zctx-pipe-%d", pipe.hashCode()));
// Prepare child thread
Thread shim = new ShimThread(ccontext, runnable, args, cpipe);
shim.start();
return pipe;
}
use of org.zeromq.ZMQ.Socket in project jeromq by zeromq.
the class TestZMQ method testPollerPollout.
@Test
public void testPollerPollout() throws Exception {
int port = Utils.findOpenPort();
ZMQ.Context context = ZMQ.context(1);
Client client = new Client(context, port);
// Socket to send messages to
ZMQ.Socket sender = context.socket(ZMQ.PUSH);
sender.bind("tcp://127.0.0.1:" + port);
ZMQ.Poller outItems;
outItems = context.poller();
outItems.register(sender, ZMQ.Poller.POLLOUT);
while (!Thread.currentThread().isInterrupted()) {
outItems.poll(1000);
if (outItems.pollout(0)) {
sender.send("OK", 0);
System.out.println("ok");
break;
} else {
System.out.println("not writable");
client.start();
}
}
client.join();
sender.close();
context.term();
}
use of org.zeromq.ZMQ.Socket in project jeromq by zeromq.
the class TestZMQ method testSocketUnbind.
@Test
public void testSocketUnbind() {
Context context = ZMQ.context(1);
Socket push = context.socket(ZMQ.PUSH);
Socket pull = context.socket(ZMQ.PULL);
pull.setReceiveTimeOut(50);
int port = pull.bindToRandomPort("tcp://127.0.0.1");
push.connect("tcp://127.0.0.1:" + port);
byte[] data = "ABC".getBytes();
push.send(data);
assertArrayEquals(data, pull.recv());
pull.unbind("tcp://127.0.0.1:" + port);
push.send(data);
assertNull(pull.recv());
push.close();
pull.close();
context.term();
}
use of org.zeromq.ZMQ.Socket in project jeromq by zeromq.
the class TestZMQ method testEventBindFailed.
@Test
public void testEventBindFailed() {
Context context = ZMQ.context(1);
ZMQ.Event event;
Socket helper = context.socket(ZMQ.REP);
int port = helper.bindToRandomPort("tcp://127.0.0.1");
Socket socket = context.socket(ZMQ.REP);
Socket monitor = context.socket(ZMQ.PAIR);
monitor.setReceiveTimeOut(100);
assertTrue(socket.monitor("inproc://monitor.socket", ZMQ.EVENT_BIND_FAILED));
monitor.connect("inproc://monitor.socket");
try {
socket.bind("tcp://127.0.0.1:" + port);
} catch (ZMQException ex) {
}
event = ZMQ.Event.recv(monitor);
assertNotNull("No event was received", event);
assertEquals(ZMQ.EVENT_BIND_FAILED, event.getEvent());
helper.close();
socket.close();
monitor.close();
context.term();
}
use of org.zeromq.ZMQ.Socket in project jeromq by zeromq.
the class TestZMQ method testEventAccepted.
@Test
public void testEventAccepted() {
Context context = ZMQ.context(1);
ZMQ.Event event;
Socket socket = context.socket(ZMQ.REP);
Socket monitor = context.socket(ZMQ.PAIR);
Socket helper = context.socket(ZMQ.REQ);
monitor.setReceiveTimeOut(100);
assertTrue(socket.monitor("inproc://monitor.socket", ZMQ.EVENT_ACCEPTED));
monitor.connect("inproc://monitor.socket");
int port = socket.bindToRandomPort("tcp://127.0.0.1");
helper.connect("tcp://127.0.0.1:" + port);
event = ZMQ.Event.recv(monitor);
assertNotNull("No event was received", event);
assertEquals(ZMQ.EVENT_ACCEPTED, event.getEvent());
helper.close();
socket.close();
monitor.close();
context.term();
}
Aggregations