Search in sources :

Example 61 with Msg

use of zmq.Msg in project jeromq by zeromq.

the class Mechanism method receiveAndProcessZapReply.

protected final int receiveAndProcessZapReply() {
    assert (session != null);
    // ZAP reply consists of 7 frames
    List<Msg> msgs = new ArrayList<>(7);
    // Initialize all reply frames
    for (int idx = 0; idx < 7; ++idx) {
        Msg msg = session.readZapMsg();
        if (msg == null) {
            return session.errno.get();
        }
        if ((msg.flags() & Msg.MORE) == (idx < 6 ? 0 : Msg.MORE)) {
            session.getSocket().eventHandshakeFailedProtocol(session.getEndpoint(), ZMQ.ZMQ_PROTOCOL_ERROR_ZAP_MALFORMED_REPLY);
            return ZError.EPROTO;
        }
        msgs.add(msg);
    }
    // Address delimiter frame
    if (msgs.get(0).size() > 0) {
        session.getSocket().eventHandshakeFailedProtocol(session.getEndpoint(), ZMQ.ZMQ_PROTOCOL_ERROR_ZAP_UNSPECIFIED);
        return ZError.EPROTO;
    }
    // Version frame
    if (msgs.get(1).size() != 3 || !compare(msgs.get(1), "1.0", false)) {
        session.getSocket().eventHandshakeFailedProtocol(session.getEndpoint(), ZMQ.ZMQ_PROTOCOL_ERROR_ZAP_BAD_VERSION);
        return ZError.EPROTO;
    }
    // Request id frame
    if (msgs.get(2).size() != 1 || !compare(msgs.get(2), "1", false)) {
        session.getSocket().eventHandshakeFailedProtocol(session.getEndpoint(), ZMQ.ZMQ_PROTOCOL_ERROR_ZAP_BAD_REQUEST_ID);
        return ZError.EPROTO;
    }
    // Status code frame
    if (msgs.get(3).size() != 3) {
        session.getSocket().eventHandshakeFailedProtocol(session.getEndpoint(), ZMQ.ZMQ_PROTOCOL_ERROR_ZAP_INVALID_STATUS_CODE);
        return ZError.EPROTO;
    }
    // Save status code
    statusCode = new String(msgs.get(3).data(), ZMQ.CHARSET);
    // Save user id
    setUserId(msgs.get(5).data());
    return parseMetadata(msgs.get(6), 0, true);
}
Also used : Msg(zmq.Msg) ArrayList(java.util.ArrayList)

Example 62 with Msg

use of zmq.Msg in project jeromq by zeromq.

the class Mechanism method sendZapRequest.

protected final void sendZapRequest(Mechanisms mechanism, boolean more) {
    assert (session != null);
    assert (peerAddress != null);
    assert (mechanism != null);
    Msg msg = new Msg();
    // Address delimiter frame
    msg.setFlags(Msg.MORE);
    boolean rc = session.writeZapMsg(msg);
    assert (rc);
    // Version frame
    msg = new Msg(3);
    msg.setFlags(Msg.MORE);
    msg.put("1.0".getBytes(ZMQ.CHARSET));
    rc = session.writeZapMsg(msg);
    assert (rc);
    // Request id frame
    msg = new Msg(1);
    msg.setFlags(Msg.MORE);
    msg.put("1".getBytes(ZMQ.CHARSET));
    rc = session.writeZapMsg(msg);
    assert (rc);
    // Domain frame
    msg = new Msg(options.zapDomain.length());
    msg.setFlags(Msg.MORE);
    msg.put(options.zapDomain.getBytes(ZMQ.CHARSET));
    rc = session.writeZapMsg(msg);
    assert (rc);
    // Address frame
    byte[] host = peerAddress.host().getBytes(ZMQ.CHARSET);
    msg = new Msg(host.length);
    msg.setFlags(Msg.MORE);
    msg.put(host);
    rc = session.writeZapMsg(msg);
    assert (rc);
    // Identity frame
    msg = new Msg(options.identitySize);
    msg.setFlags(Msg.MORE);
    msg.put(options.identity, 0, options.identitySize);
    rc = session.writeZapMsg(msg);
    assert (rc);
    // Mechanism frame
    msg = new Msg(mechanism.name().length());
    msg.put(mechanism.name().getBytes(ZMQ.CHARSET));
    if (more) {
        msg.setFlags(Msg.MORE);
    }
    rc = session.writeZapMsg(msg);
    assert (rc);
}
Also used : Msg(zmq.Msg)

Example 63 with Msg

use of zmq.Msg in project jeromq by zeromq.

the class SessionBase method cleanPipes.

// Remove any half processed messages. Flush unflushed messages.
// Call this function when engine disconnect to get rid of leftovers.
private void cleanPipes() {
    assert (pipe != null);
    // Get rid of half-processed messages in the out pipe. Flush any
    // unflushed messages upstream.
    pipe.rollback();
    pipe.flush();
    // Remove any half-read message from the in pipe.
    while (incompleteIn) {
        Msg msg = pullMsg();
        if (msg == null) {
            assert (!incompleteIn);
            break;
        }
    // msg.close ();
    }
}
Also used : Msg(zmq.Msg)

Example 64 with Msg

use of zmq.Msg in project jeromq by zeromq.

the class CurveServerMechanism method sendZapRequest.

private void sendZapRequest(byte[] key) {
    sendZapRequest(Mechanisms.CURVE, true);
    // Credentials frame
    Msg msg = new Msg(Curve.Size.PUBLICKEY.bytes());
    msg.put(key, 0, Curve.Size.PUBLICKEY.bytes());
    boolean rc = session.writeZapMsg(msg);
    assert (rc);
}
Also used : Msg(zmq.Msg)

Example 65 with Msg

use of zmq.Msg in project jeromq by zeromq.

the class ZFrame method send.

/**
 * Internal method to call org.zeromq.Socket send() method.
 * @param socket
 *          0MQ socket to send on
 * @param flags
 *          Valid send() method flags, defined in org.zeromq.ZMQ class
 * @return
 *          True if success, else False
 */
public boolean send(Socket socket, int flags) {
    Utils.checkArgument(socket != null, "socket parameter must be set");
    final SocketBase base = socket.base();
    final zmq.Msg msg = new Msg(data);
    if (group != null) {
        msg.setGroup(group);
    }
    int sendFlags = (flags & ZFrame.MORE) == ZFrame.MORE ? zmq.ZMQ.ZMQ_SNDMORE : 0;
    sendFlags |= (flags & ZFrame.DONTWAIT) == ZFrame.DONTWAIT ? zmq.ZMQ.ZMQ_DONTWAIT : 0;
    // Only set the routerId if the socket is a ZMQ_Server
    if (base instanceof zmq.socket.clientserver.Server) {
        msg.setRoutingId(this.routingId);
    }
    return base.send(msg, sendFlags);
}
Also used : Msg(zmq.Msg) SocketBase(zmq.SocketBase) Msg(zmq.Msg)

Aggregations

Msg (zmq.Msg)124 Test (org.junit.Test)45 SocketBase (zmq.SocketBase)37 Ctx (zmq.Ctx)32 ByteBuffer (java.nio.ByteBuffer)16 ValueReference (zmq.util.ValueReference)16 Pipe (zmq.pipe.Pipe)13 Blob (zmq.util.Blob)7 ArrayList (java.util.ArrayList)5 OutputStream (java.io.OutputStream)4 Socket (java.net.Socket)4 HashSet (java.util.HashSet)3 ExecutorService (java.util.concurrent.ExecutorService)2 Metadata (zmq.io.Metadata)2 InputStream (java.io.InputStream)1 List (java.util.List)1 Event (zmq.ZMQ.Event)1 ZObject (zmq.ZObject)1 Step (zmq.io.coder.IDecoder.Step)1 RawDecoder (zmq.io.coder.raw.RawDecoder)1