public void decode()

in serializer/seata-serializer-seata/src/main/java/org/apache/seata/serializer/seata/protocol/RegisterRMRequestCodec.java [54:125]


    public <T> void decode(T t, ByteBuffer in) {
        RegisterRMRequest registerRMRequest = (RegisterRMRequest)t;

        if (in.remaining() < 2) {
            return;
        }
        short len = in.getShort();
        if (len > 0) {
            if (in.remaining() < len) {
                return;
            }
            byte[] bs = new byte[len];
            in.get(bs);
            registerRMRequest.setVersion(new String(bs, UTF8));
        } else {
            return;
        }
        if (in.remaining() < 2) {
            return;
        }
        len = in.getShort();

        if (len > 0) {
            if (in.remaining() < len) {
                return;
            }
            byte[] bs = new byte[len];
            in.get(bs);
            registerRMRequest.setApplicationId(new String(bs, UTF8));
        }

        if (in.remaining() < 2) {
            return;
        }
        len = in.getShort();

        if (in.remaining() < len) {
            return;
        }
        byte[] bs = new byte[len];
        in.get(bs);
        registerRMRequest.setTransactionServiceGroup(new String(bs, UTF8));

        if (in.remaining() < 2) {
            return;
        }
        len = in.getShort();

        if (len > 0) {
            if (in.remaining() < len) {
                return;
            }
            bs = new byte[len];
            in.get(bs);
            registerRMRequest.setExtraData(new String(bs, UTF8));
        }

        int iLen;
        if (in.remaining() < 4) {
            return;
        }
        iLen = in.getInt();

        if (iLen > 0) {
            if (in.remaining() < iLen) {
                return;
            }
            bs = new byte[iLen];
            in.get(bs);
            registerRMRequest.setResourceIds(new String(bs, UTF8));
        }
    }