Example #1
0
        /// <summary>
        /// 导出本地消息记录到云端
        /// </summary>
        /// <param name="export_info">导出需要的参数参考NIMLogsBackupExportInfo定义</param>
        /// <param name="encrypt_key_">加密秘钥</param>
        /// <returns>false 当前有导入/导出操作正在进行中</returns>
        public static bool ExportBackupToRemote(NIMLogsBackupExportInfo export_info, string encrypt_key_)
        {
            bool ret = false;

            if (export_info != null)
            {
                export_info_remain = export_info;
                export_info_c.ToRemotePackageCallback_ = ExportBackupToRemotePackageCallback;
                export_info_c.ToRemoteEncryptCallback_ = ExportBackupToRemoteEncryptCallback;
                export_info_c.encrypt_key_             = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(encrypt_key_);
                export_info_c.ProgressCallback_        = ExportLogsBackupProgressCallback;
                export_info_c.CompleteCallback_        = ExportLogsBackupCompleteCallback;
                export_info_c.ToRemoteLogFiter_        = ExportBackupToRemoteLogFiterCallback;
                export_info_c.PathRelease_             = NewPathRelease;

                //NIMLogsBackupExportInfo_Callback export_info_cb = new NIMLogsBackupExportInfo_Callback();
                int    nSizeOfParam = Marshal.SizeOf(export_info);
                IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);
                try
                {
                    Marshal.StructureToPtr(export_info, param_ptr, false);
                    export_info_c.user_data_ = param_ptr;
                }
                catch
                {
                }
                //public _ExportBackupToRemoteEncryptCallback_C ToRemoteEncryptCallback_;
                long param_value = param_ptr.ToInt64();
                Debug.WriteLine("param_value user_data:" + param_value.ToString());
                Debug.WriteLine("encrypt_key_ user_data:" + export_info_c.encrypt_key_.ToInt64().ToString());
                ret = MsglogNativeMethods.nim_export_backup_to_remote(ref export_info_c);
            }
            return(ret);
        }
Example #2
0
        private static void ExportLogsBackupProgressCallback(LogsBackupRemoteOperate operate, float progress, IntPtr user_data)
        {
            NIMLogsBackupExportInfo export_info = (NIMLogsBackupExportInfo)Marshal.PtrToStructure(user_data, typeof(NIMLogsBackupExportInfo));

            if (export_info != null && export_info.ProgressCallback_ != null)
            {
                export_info.ProgressCallback_(operate, progress);
            }
        }
Example #3
0
        private static bool ExportBackupToRemoteLogFiterCallback(string msg, IntPtr user_data)
        {
            bool ret = false;
            NIMLogsBackupExportInfo export_info = (NIMLogsBackupExportInfo)Marshal.PtrToStructure(user_data, typeof(NIMLogsBackupExportInfo));

            if (export_info != null && export_info.ToRemoteLogFiter_ != null)
            {
                ret = export_info.ToRemoteLogFiter_(msg);
            }
            return(ret);
        }
Example #4
0
        private static IntPtr ExportBackupToRemoteEncryptCallback(string file_path, string encrypt_key, IntPtr user_data)
        {
            IntPtr path = IntPtr.Zero;
            NIMLogsBackupExportInfo export_info = (NIMLogsBackupExportInfo)Marshal.PtrToStructure(user_data, typeof(NIMLogsBackupExportInfo));

            if (export_info != null && export_info.ToRemoteEncryptCallback_ != null)
            {
                string temp_path = export_info.ToRemoteEncryptCallback_(file_path, encrypt_key);
                path = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(temp_path);
            }
            return(path);
        }
Example #5
0
        private static void ExportLogsBackupCompleteCallback(LogsBackupRemoteOperate operate, LogsBackupRemoteState state, IntPtr user_data)
        {
            NIMLogsBackupExportInfo export_info = (NIMLogsBackupExportInfo)Marshal.PtrToStructure(user_data, typeof(NIMLogsBackupExportInfo));

            if (export_info != null && export_info.CompleteCallback_ != null)
            {
                export_info.CompleteCallback_(operate, state);
            }

            //注意,这里应释放user_data
            Marshal.FreeHGlobal(user_data);
        }