Search in sources :

Example 21 with Socket

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;
}
Also used : Socket(org.zeromq.ZMQ.Socket)

Example 22 with Socket

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();
}
Also used : Socket(org.zeromq.ZMQ.Socket) Context(org.zeromq.ZMQ.Context) Test(org.junit.Test)

Example 23 with Socket

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();
}
Also used : Context(org.zeromq.ZMQ.Context) Socket(org.zeromq.ZMQ.Socket) Test(org.junit.Test)

Example 24 with Socket

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();
}
Also used : Context(org.zeromq.ZMQ.Context) Socket(org.zeromq.ZMQ.Socket) Test(org.junit.Test)

Example 25 with Socket

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();
}
Also used : Context(org.zeromq.ZMQ.Context) Socket(org.zeromq.ZMQ.Socket) Test(org.junit.Test)

Aggregations

Socket (org.zeromq.ZMQ.Socket)84 Context (org.zeromq.ZMQ.Context)32 ZContext (org.zeromq.ZContext)30 Test (org.junit.Test)26 Poller (org.zeromq.ZMQ.Poller)20 ZMsg (org.zeromq.ZMsg)14 Random (java.util.Random)13 ZFrame (org.zeromq.ZFrame)13 PollItem (org.zeromq.ZMQ.PollItem)6 ByteBuffer (java.nio.ByteBuffer)4 ArrayList (java.util.ArrayList)4 SelectableChannel (java.nio.channels.SelectableChannel)3 HashMap (java.util.HashMap)3 IOException (java.io.IOException)2 LinkedList (java.util.LinkedList)2 Entry (java.util.Map.Entry)2 Ignore (org.junit.Ignore)2 Actor (org.zeromq.ZActor.Actor)2 BufferedWriter (java.io.BufferedWriter)1 File (java.io.File)1