All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.netty.protocol.nrpc.RpcVersion Maven / Gradle / Ivy

The newest version!
package com.github.netty.protocol.nrpc;

import io.netty.buffer.ByteBuf;

/**
 * nrpc protocol version
 *
 * @author wangzihao
 */
public enum RpcVersion {
    /**
     * spring-boot-protocol 2.0.0
     */
    V2_0_0("NRPC/200", new byte[]{'N', 'R', 'P', 'C', '/', 2, 0, 0}),
    /**
     * spring-boot-protocol 2.0.1
     */
    V2_0_1("NRPC/201", new byte[]{'N', 'R', 'P', 'C', '/', 2, 0, 1}),
    /**
     * spring-boot-protocol 2.1.8
     */
    V2_1_8("NRPC/218", new byte[]{'N', 'R', 'P', 'C', '/', 2, 1, 8});

    public static final RpcVersion CURRENT_VERSION = RpcVersion.V2_1_8;
    private static final byte[] PROTOCOL_NAME = {'N', 'R', 'P', 'C'};
    private String text;
    private byte[] textBytes;

    RpcVersion(String text, byte[] textBytes) {
        this.text = text;
        this.textBytes = textBytes;
    }

    public String getText() {
        return text;
    }

    public byte[] getTextBytes() {
        return textBytes;
    }

    /**
     * Whether the NRPC protocol to support
     * 

* Request Packet (note: 1 = request type) * -+------8B--------+--1B--+--1B--+------2B------+-----4B-----+------1B--------+-----length-----+------1B-------+---length----+-----2B------+-------length-------------+ * | header/version | type | ACK | total length | Request ID | service length | service name | method length | method name | data length | data | * | NRPC/010 | 1 | 1 | 55 | 1 | 8 | "/sys/user" | 7 | getUser | 24 | {"age":10,"name":"wang"} | * -+----------------+------+------+--------------+------------+----------------+----------------+---------------+-------------+-------------+--------------------------+ *

*

* Response Packet (note: 2 = response type) * -+------8B--------+--1B--+--1B--+------2B------+-----4B-----+---1B---+--------1B------+--length--+---1B---+-----2B------+----------length----------+ * | header/version | type | ACK | total length | Request ID | status | message length | message | encode | data length | data | * | NRPC/010 | 2 | 0 | 35 | 1 | 200 | 2 | ok | 1 | 24 | {"age":10,"name":"wang"} | * -+----------------+------+------+--------------+------------+--------+----------------+----------+--------+-------------+--------------------------+ * * @param msg message * @return true=yes, false=no */ public boolean isSupport(ByteBuf msg) { // min packet is 8 length if (msg == null || msg.readableBytes() < 8) { return false; } for (int i = 0; i < PROTOCOL_NAME.length; i++) { if (PROTOCOL_NAME[i] != msg.getByte(i)) { return false; } } return true; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy