public void OpenGameVersion() { string path = AppUtil.DataPath + this.m_remote_version_file; this.m_remote_version.Clear(); Sqlite3tool.OpenCyMzq(path, ref this.m_remote_version); }
public void CloseGameDataBase() { bool flag = this.m_main_sqlite != null; if (flag) { this.m_main_sqlite.CloseDb(); this.m_main_sqlite = null; } }
public void InitSqlite(bool update_version) { string res_work_path = AppUtil.DataPath; // c:/luaframework/ string http_str = m_http_path + m_remote_version_file; //http://192.168.7.223/patchs/xxx_head.cymzq RuntimePlatform platform = Application.platform; if (platform == RuntimePlatform.IPhonePlayer) { http_str = http_str.Replace("patchs", "patchsIos"); } else if (platform == RuntimePlatform.Android) { http_str = http_str.Replace("patchs", "patchsAndroid"); } string path = res_work_path + m_remote_version_file;//c:/luaframework/patchs/xxx_head.cymzq m_main_sqlite = new Sqlite3tool(); string real_db_path = res_work_path + m_real_db_file;//c:/luaframework/patchs/xxx_main.sydb if (m_main_sqlite.OpenOrCreateDb(real_db_path)) { Debug.Log("SqliteFilePack@InitSqlite: OpenOrCreateDb succeed"); if (update_version) { MemoryLoadCallbackFunc delay_func = delegate(bool is_suc, byte[] buffer) { if (is_suc) { Util.Log("PackResult.Success"); Pathtool.DeleteToFile(path); bool flag2 = Pathtool.SaveDataToFile(path, buffer); if (flag2) { Sqlite3tool.OpenCyMzq(path, ref this.m_remote_version); this.m_result = PackResult.Success; LogMgr.Log("OpenCyMzq {0}", path); } } else { LogMgr.Log("PackResult.Faild"); this.m_result = PackResult.Faild; LogMgr.LogError(string.Format("init sqlite error {0}", path)); } }; MemoryQuest memory_quest = new MemoryQuest(); memory_quest.RelativePath = http_str + "?v=" + Util.GetTimeStamp(); LogMgr.Log("download file:{0}", memory_quest.RelativePath); ResRequest.Instance.RequestMemoryAsync(memory_quest, delay_func); } else { Sqlite3tool.OpenCyMzq(path, ref this.m_remote_version); m_result = PackResult.Success; Debug.Log("OpenCyMzq " + path); } } else { m_main_sqlite.CloseDb(); Debug.Log("OpenOrCreateDb error"); } }
private static void ExportCyMzq(string file_name) { string _name = Path.GetFileNameWithoutExtension(file_name); string _dir = Path.GetDirectoryName(file_name); string _file = string.Format("{0}/{1}.txt", _dir, _name); if (File.Exists(_file)) { return; } StringBuilder log_sb = new StringBuilder(); FileStream fs = new FileStream(file_name, FileMode.Open); int nLength = (int)fs.Length; BinaryReader tmp_reader = new BinaryReader(fs); int unzip = tmp_reader.ReadInt32(); log_sb.Append("unzip = " + unzip + "\n"); if (unzip != 0) { int md5_data_size = 4; int version_data_size = 4; int len_data_size = 4; byte[] buffs = tmp_reader.ReadBytes(nLength - 4); int len = 0; byte[] DecompBuffs = Sqlite3tool.DecompNetBuffer(buffs, nLength, unzip, out len); if (unzip != len) { LogMgr.LogError("error: unzip != len"); } MemoryStream decomp_ms = new MemoryStream(DecompBuffs); BinaryReader decomp_reader = new BinaryReader(decomp_ms); int file_path_count = decomp_reader.ReadInt32(); int file_count = decomp_reader.ReadInt32(); byte[] file_path_byte = decomp_reader.ReadBytes(file_path_count); byte[] md5_code_byte = decomp_reader.ReadBytes(file_count * md5_data_size); byte[] version_byte = decomp_reader.ReadBytes(file_count * version_data_size); byte[] len_byte = decomp_reader.ReadBytes(file_count * len_data_size); MemoryStream md5_code_mem = new MemoryStream(md5_code_byte); BinaryReader md5_code_all = new BinaryReader(md5_code_mem); MemoryStream version_mem = new MemoryStream(version_byte); BinaryReader version_all = new BinaryReader(version_mem); MemoryStream len_mem = new MemoryStream(len_byte); BinaryReader len_all = new BinaryReader(len_mem); int file_path_begin_pos = 0; for (int index = 0; index < file_count; index++) { string file_path = ""; byte[] md5 = md5_code_all.ReadBytes(4); StringBuilder sb = new StringBuilder(); for (int i = 0; i < md5.Length; i++) { sb.Append(md5[i].ToString("X2")); } int version = version_all.ReadInt32(); int length = len_all.ReadInt32(); int end_pos = 0; Sqlite3tool.ParseFilePath(ref file_path_byte, file_path_begin_pos, file_path_count, out end_pos, out file_path); file_path_begin_pos = end_pos; PathHashInfo _hash = DataEncrypt.GetPathHashInfo(file_path); log_sb.Append("hash0: "); log_sb.Append(_hash.hash0); log_sb.Append(", "); log_sb.Append("hash1: "); log_sb.Append(_hash.hash1); log_sb.Append(", "); log_sb.Append("hash2: "); log_sb.Append(_hash.hash1); log_sb.Append(", "); log_sb.Append("version: "); log_sb.Append(version); log_sb.Append(", "); log_sb.Append("file_name: "); log_sb.Append(Util.GetAssetsBundlePathFromBase64(file_path)); log_sb.Append(", "); log_sb.Append("file_mds: "); log_sb.Append(sb.ToString()); log_sb.Append(", "); log_sb.Append("data_len: "); log_sb.Append(length); log_sb.Append(", "); log_sb.Append("unzip_len: "); log_sb.Append(length); log_sb.Append("\n"); } fs.Close(); fs.Dispose(); } System.IO.File.WriteAllText(_file, log_sb.ToString()); log_sb.Clear(); }
public static bool OpenCyMzq(string file_name, ref Dictionary <string, DbFileInfo> map) { FileStream fs = new FileStream(file_name, FileMode.Open); int nLength = (int)fs.Length; BinaryReader tmp_reader = new BinaryReader(fs); int unzip = tmp_reader.ReadInt32(); bool result; if (unzip == 0) { result = false; } else { int md5_data_size = 4; int version_data_size = 4; int len_data_size = 4; byte[] buffs = tmp_reader.ReadBytes(nLength - 4); int len = 0; byte[] DecompBuffs = Sqlite3tool.DecompNetBuffer(buffs, nLength, unzip, out len); if (unzip != len) { LogMgr.LogError("error: unzip != len"); } MemoryStream decomp_ms = new MemoryStream(DecompBuffs); BinaryReader decomp_reader = new BinaryReader(decomp_ms); int file_path_count = decomp_reader.ReadInt32(); int file_count = decomp_reader.ReadInt32(); byte[] file_path_byte = decomp_reader.ReadBytes(file_path_count); byte[] md5_code_byte = decomp_reader.ReadBytes(file_count * md5_data_size); byte[] version_byte = decomp_reader.ReadBytes(file_count * version_data_size); byte[] len_byte = decomp_reader.ReadBytes(file_count * len_data_size); MemoryStream md5_code_mem = new MemoryStream(md5_code_byte); BinaryReader md5_code_all = new BinaryReader(md5_code_mem); MemoryStream version_mem = new MemoryStream(version_byte); BinaryReader version_all = new BinaryReader(version_mem); MemoryStream len_mem = new MemoryStream(len_byte); BinaryReader len_all = new BinaryReader(len_mem); int file_path_begin_pos = 0; for (int index = 0; index < file_count; index++) { string file_path = ""; byte[] md5 = md5_code_all.ReadBytes(4); StringBuilder sb = new StringBuilder(); for (int i = 0; i < md5.Length; i++) { sb.Append(md5[i].ToString("X2")); } int version = version_all.ReadInt32(); int length = len_all.ReadInt32(); int end_pos = 0; Sqlite3tool.ParseFilePath(ref file_path_byte, file_path_begin_pos, file_path_count, out end_pos, out file_path); file_path_begin_pos = end_pos; DbFileInfo info = new DbFileInfo(); info.file_name = file_path; info.hash_info = DataEncrypt.GetPathHashInfo(file_path); info.version = version; info.data_len = length; info.unzip_len = length; info.file_md5 = sb.ToString(); map.Add(info.file_name, info); } fs.Close(); fs.Dispose(); result = true; } #if UNITY_EDITOR //ExportCyMzq(file_name); #endif return(result); }