package com.mvc;

/**
 * LZSS chars decode and encode tools
 * Autor: djs Date:20220930
 */
public class JniCode {

    private static final JniCode INSTANCE = new JniCode();

    public native int EncodeData(byte[] uncodedData, byte[] encodedData, int uncodedLen);

    public native int DecodeData(byte[] encodedData, byte[] decodedData, int encodedLen);

    static {
        System.loadLibrary("libhcxdlzss");
    }

    /**
     * 压缩方法
     *
     * @param uncodedData 待压缩的字符串byte数组（in)
     * @param encodedData 压缩后的byte数组(out)
     * @param uncodedLen  待压缩的byte数组长度
     * @return 缩后byte数组的长度
     */
    public static int encodeData(byte[] uncodedData, byte[] encodedData, int uncodedLen) {
        return INSTANCE.EncodeData(uncodedData, encodedData, uncodedLen);
    }

    /**
     * 解压方法
     *
     * @param encodedData 待解压的byte数组（in）
     * @param decodedData 解压后的byte数组（out）
     * @param encodedLen  待解压的byte数组长度
     * @return 解压后byte数组的长度
     */
    public static int decondeData(byte[] encodedData, byte[] decodedData, int encodedLen) {
        //临时处理,当上传数据过多时,解压库有问题导致崩溃 2024-05-13 guozhao
        return INSTANCE.DecodeData(encodedData, decodedData, encodedLen);
    }
}
