示例#1
0
        /// <summary>
        /// 导入已备份在云端的消息记录
        /// </summary>
        /// <param name="import_info">导入需要的参数参考NIMLogsBackupImportInfo定义</param>
        /// <returns>false 当前有导入/导出操作正在进行中</returns>
        public static bool ImportBackupFromRemote(NIMLogsBackupImportInfo import_info)
        {
            bool ret = false;

            if (import_info != null)
            {
                //这里需增长import_info的生命周期,否则import_info被gc回收掉,会导致回调出问题
                import_info_remain = import_info;

                import_info_c.UnPackageCallback_     = ImportBackupFromRemoteUnPackageCallback;
                import_info_c.RemoteDecryptCallback_ = ImportBackupFromRemoteDecryptCallback;
                import_info_c.PathRelease_           = NewPathRelease;

                import_info_c.ProgressCallback_ = ImportLogsBackupProgressCallback;
                import_info_c.CompleteCallback_ = ImportLogsBackupCompleteCallback;

                int    nSizeOfParam = Marshal.SizeOf(import_info);
                IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);
                try
                {
                    Marshal.StructureToPtr(import_info, param_ptr, false);
                    import_info_c.user_data_ = param_ptr;
                }
                catch
                {
                }
                ret = MsglogNativeMethods.nim_import_backup_from_remote(ref import_info_c);
            }
            return(ret);
        }