Exemplo n.º 1
0
    public static byte[] DataToBytes(object data, DataSerializerConfig config, out byte flag)
    {
        byte[] bytes = null;
        flag = 0;
        using (MemoryStream ms = new MemoryStream()) {
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(ms, data);

            bytes = ms.ToArray();

#if ENABLE_COMPRESS_SERIALIZE_DATA
            if (config.EnableCompression)
            {
                bytes = GZipUtil.Compress(bytes);
                flag |= (byte)Flags.Compress;
            }
#endif

            if (config.CryptKey != null)
            {
                bytes = CryptoUtil.Encrypt(bytes, config.CryptKey, config.CryptIv);
                flag |= (byte)Flags.Crypt;
            }
        }
        return(bytes);
    }
Exemplo n.º 2
0
    public static T BytesToData <T>(byte[] bytes, DataSerializerConfig config)
    {
        byte[] dataBytes = new byte[bytes.Length - 1];
        Array.Copy(bytes, 1, dataBytes, 0, bytes.Length - 1);

        byte flag = bytes[0];

        if (config.CryptKey != null && (flag & (byte)Flags.Crypt) == (byte)Flags.Crypt)
        {
            dataBytes = CryptoUtil.Decrypt(bytes, config.CryptKey, config.CryptIv);
        }

#if ENABLE_COMPRESS_SERIALIZE_DATA
        if ((flag & (byte)Flags.Compress) == (byte)Flags.Compress)
        {
            dataBytes = GZipUtil.Uncompress(dataBytes);
        }
#endif

        T data             = default(T);
        BinaryFormatter bf = new BinaryFormatter();
        using (MemoryStream ms = new MemoryStream(dataBytes)) {
            data = (T)bf.Deserialize(ms);
        }

        return(data);
    }
Exemplo n.º 3
0
 public DataSerializerImpl(DataSerializerConfig config)
 {
     this.config = config;
     Environment.SetEnvironmentVariable("MONO_REFLECTION_SERIALIZER", "yes");
     if (!Directory.Exists(savePath))
     {
         Directory.CreateDirectory(savePath);
     }
 }
Exemplo n.º 4
0
    public static T ReadFile <T>(string filePath, DataSerializerConfig config)
    {
        if (!File.Exists(filePath))
        {
            return(default(T));
        }

        byte[] bytes = File.ReadAllBytes(filePath);
        return(BytesToData <T>(bytes, config));
    }
Exemplo n.º 5
0
    public static void WriteFile(object data, string filePath, DataSerializerConfig config)
    {
        string tmpFilePath = filePath + ".tmp";
        byte   flag;
        var    bytes = DataToBytes(data, config, out flag);

        byte[] writeBytes = new byte[bytes.Length + 1];
        writeBytes[0] = flag;
        Array.Copy(bytes, 0, writeBytes, 1, bytes.Length);
        try {
            File.WriteAllBytes(tmpFilePath, writeBytes);
            File.Delete(filePath);
            File.Move(tmpFilePath, filePath);
        } catch (Exception ex) {
            Debug.LogError("Filed to write file : filepath=" + filePath);
            Debug.LogError(ex.Message);
            throw ex;
        } finally {
            if (File.Exists(tmpFilePath))
            {
                File.Delete(tmpFilePath);
            }
        }
    }
Exemplo n.º 6
0
    public static byte[] DataToBytes(object data, DataSerializerConfig config)
    {
        byte dummy;

        return(DataToBytes(data, config, out dummy));
    }