Beispiel #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);
        }
Beispiel #2
0
        /// <summary>
        /// 替换在词库中匹配的字符串
        /// </summary>
        /// <param name="text">目标文本</param>
        /// <param name="replace">替换字符串</param>
        /// <param name="libName">词库名称</param>
        /// <returns>替换后的字符串(WIN32平台 返回字符串为"2"时表明含有敏感词不允许发送;"3"表明需要将内容设置在消息结构的反垃圾字段里,由服务器过滤;其他内容可以作为消息正常发送)</returns>
        public static string ReplaceTextMatchedKeywords(string text, string replace, string libName)
        {
            var ptr = nim_tool_replace_text_matched_keywords(text, replace, libName);
            Utf8StringMarshaler marshaler = new Utf8StringMarshaler();
            var result = marshaler.MarshalNativeToManaged(ptr) as string;

            GlobalAPI.FreeBuffer(ptr);
            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// 获取NIM SDK 版本号
        /// </summary>
        /// <returns></returns>
        public static string GetVersion()
        {
            var ptr = ClientNativeMethods.nim_client_version();

            NimUtility.Utf8StringMarshaler marshaler = new Utf8StringMarshaler();
            var ret = marshaler.MarshalNativeToManaged(ptr);

            return(ret != null?ret.ToString() : null);
        }
        public static NIMSignalingNotityInfo NIMSignalingNotityInfoFromC(NIMSignalingNotityInfo_C info_c)
        {
            NIMSignalingNotityInfo info = new NIMSignalingNotityInfo();

            //info.event_type_ = info_c.event_type_;
            info.from_account_id_ = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.from_account_id_));
            info.custom_info_     = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.custom_info_));
            info.channel_info_    = NIMSignalingChannelInfoFromC(info_c.channel_info_);
            return(info);
        }
Beispiel #5
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);
        }
Beispiel #6
0
        private static IntPtr ImportBackupFromRemoteUnPackageCallback(string file_path, IntPtr user_data)
        {
            IntPtr path = IntPtr.Zero;
            NIMLogsBackupImportInfo import_info = (NIMLogsBackupImportInfo)Marshal.PtrToStructure(user_data, typeof(NIMLogsBackupImportInfo));

            if (import_info != null && import_info.RemoteDecryptCallback_ != null)
            {
                string temp_path = import_info.UnPackageCallback_(file_path);
                path = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(temp_path);
            }
            return(path);
        }
        public static NIMSignalingCloseParam_C GetNativeNIMSignalingCloseParam(NIMSignalingCloseParam param)
        {
            NIMSignalingCloseParam_C param_c = new NIMSignalingCloseParam_C();

            if (param != null)
            {
                param_c.channel_id_      = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.channel_id_);
                param_c.custom_info_     = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.custom_info_);
                param_c.offline_enabled_ = param.offline_enabled_;
            }
            return(param_c);
        }
        public static NIMSignalingCreateParam_C GetNativeNIMSignalingCreateParam(NIMSignalingCreateParam param)
        {
            NIMSignalingCreateParam_C param_c = new NIMSignalingCreateParam_C();

            if (param != null)
            {
                param_c.channel_ext_  = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.channel_ext_);
                param_c.channel_name_ = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.channel_name_);
                param_c.channel_type_ = param.channel_type_;
            }
            return(param_c);
        }
        public static NIMSignalingControlParam_C GetNativeNIMSignalingControlParam(NIMSignalingControlParam param)
        {
            NIMSignalingControlParam_C param_c = new NIMSignalingControlParam_C();

            if (param != null)
            {
                param_c.account_id_  = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.account_id_);
                param_c.channel_id_  = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.channel_id_);
                param_c.custom_info_ = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.custom_info_);
            }
            return(param_c);
        }
        public static NIMSignalingMemberInfo NIMSignalingMemberFromC(NIMSignalingMemberInfo_C param)
        {
            NIMSignalingMemberInfo member_info = new NIMSignalingMemberInfo();

            if (param != null)
            {
                member_info.account_id_       = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(param.account_id_));
                member_info.create_timestamp_ = param.create_timestamp_;
                member_info.expire_timestamp_ = param.expire_timestamp_;
                member_info.uid_ = param.uid_;
            }
            return(member_info);
        }
        public static NIMSignalingPushInfo_C GetNativeNIMSignalingPushInfo(NIMSignalingPushInfo param)
        {
            NIMSignalingPushInfo_C param_c = new NIMSignalingPushInfo_C();

            if (param != null)
            {
                param_c.need_badge_   = param.need_badge_;
                param_c.push_title_   = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.push_title_);
                param_c.push_content_ = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.push_content_);
                param_c.push_payload_ = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.push_payload_);
                param_c.need_push_    = param.need_push_;
            }
            return(param_c);
        }
        public static NIMSignalingPushInfo NIMSignalingPushInfoFromC(NIMSignalingPushInfo_C param)
        {
            NIMSignalingPushInfo push_info = new NIMSignalingPushInfo();

            if (param != null)
            {
                push_info.need_badge_   = param.need_badge_;
                push_info.push_title_   = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(param.push_title_));
                push_info.push_content_ = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(param.push_content_));
                push_info.push_payload_ = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(param.push_payload_));
                push_info.need_push_    = param.need_push_;
            }
            return(push_info);
        }
        public static NIMSignalingNotityInfoInvite NIMSignalingNotityInfoFromC(NIMSignalingNotityInfoInvite_C info_c)
        {
            NIMSignalingNotityInfoInvite info = new NIMSignalingNotityInfoInvite();

            info.event_type_      = info_c.event_type_;
            info.from_account_id_ = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.from_account_id_));
            info.custom_info_     = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.custom_info_));
            info.channel_info_    = NIMSignalingChannelInfoFromC(info_c.channel_info_);
            info.timestamp_       = info_c.timestamp_;

            info.to_account_id_ = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.to_account_id_));
            info.request_id_    = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.request_id_));
            info.push_info_     = NIMSignalingPushInfoFromC(info_c.push_info_);
            return(info);
        }
        public static NIMSignalingInviteParam_C GetNativeNIMSignalingInviteParam(NIMSignalingInviteParam param)
        {
            NIMSignalingInviteParam_C param_c = new NIMSignalingInviteParam_C();

            if (param != null)
            {
                param_c.account_id_      = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.account_id_);
                param_c.channel_id_      = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.channel_id_);
                param_c.custom_info_     = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.custom_info_);;
                param_c.offline_enabled_ = param.offline_enabled_;
                param_c.push_info_       = GetNativeNIMSignalingPushInfo(param.push_info_);
                param_c.request_id_      = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.request_id_);
            }
            return(param_c);
        }
        public static NIMSignalingAcceptParam_C GetNativeNIMSignalingAcceptParam(NIMSignalingAcceptParam param)
        {
            NIMSignalingAcceptParam_C param_c = new NIMSignalingAcceptParam_C();

            if (param != null)
            {
                param_c.channel_id_         = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.channel_id_);
                param_c.account_id_         = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.account_id_);
                param_c.request_id_         = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.request_id_);
                param_c.accept_custom_info_ = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.accept_custom_info_);
                param_c.join_custom_info_   = Utf8StringMarshaler.GetInstance("").MarshalManagedToNative(param.join_custom_info_);
                param_c.uid_             = param.uid_;
                param_c.auto_join_       = param.auto_join_;
                param_c.offline_enabled_ = param.offline_enabled_;
            }
            return(param_c);
        }
        public static NIMSignalingChannelInfo NIMSignalingChannelInfoFromC(NIMSignalingChannelInfo_C info_c)
        {
            NIMSignalingChannelInfo info = new NIMSignalingChannelInfo();

            info.channel_ext_      = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.channel_ext_));
            info.channel_id_       = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.channel_id_));
            info.channel_name_     = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.channel_name_));
            info.channel_type_     = info_c.channel_type_;
            info.create_timestamp_ = info_c.create_timestamp_;
            info.creator_id_       = Convert.ToString(Utf8StringMarshaler.GetInstance("").MarshalNativeToManaged(info_c.creator_id_));
            info.expire_timestamp_ = info_c.expire_timestamp_;
            info.invalid_          = info_c.invalid_;



            return(info);
        }
        /// <summary>
        /// Helper method that creates a user friendly type from the internal interop structure.
        /// </summary>
        /// <param name="s">TrackDescriptionStructure from interop</param>
        /// <returns>public TrackDescription to be consumed by the user</returns>
        internal static MediaTrack Build(this MediaTrackStructure s)
        {
            AudioTrack    audioTrack    = default;
            VideoTrack    videoTrack    = default;
            SubtitleTrack subtitleTrack = default;

            switch (s.TrackType)
            {
            case TrackType.Audio:
                audioTrack = MarshalUtils.PtrToStructure <AudioTrack>(s.TrackData);
                break;

            case TrackType.Video:
                videoTrack = MarshalUtils.PtrToStructure <VideoTrack>(s.TrackData);
                break;

            case TrackType.Text:
                subtitleTrack = MarshalUtils.PtrToStructure <SubtitleTrackStructure>(s.TrackData).Build();
                break;

            case TrackType.Unknown:
                break;
            }

            var language = Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Language) as string;
            var des      = Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Description) as string;

            return(new MediaTrack(s.Codec,
                                  s.OriginalFourcc,
                                  s.Id,
                                  s.TrackType,
                                  s.Profile,
                                  s.Level,
                                  new MediaTrackData(audioTrack, videoTrack, subtitleTrack), s.Bitrate,
                                  language,
                                  des));
        }
 /// <summary>
 /// Helper method that creates a user friendly type from the internal interop structure.
 /// </summary>
 /// <param name="s">AudioOutputDescriptionStructure from interop</param>
 /// <returns>public AudioOutputDescription to be consumed by the user</returns>
 internal static AudioOutputDescription Build(this AudioOutputDescriptionStructure s) =>
 new AudioOutputDescription(Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Name) as string,
                            Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Description) as string);
 /// <summary>
 /// Helper method that creates a user friendly type from the internal interop structure.
 /// </summary>
 /// <param name="s">MediaDiscovererDescriptionStructure from interop</param>
 /// <returns>public MediaDiscovererDescription to be consumed by the user</returns>
 internal static MediaDiscovererDescription Build(this MediaDiscovererDescriptionStructure s) =>
 new MediaDiscovererDescription(Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Name) as string,
                                Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.LongName) as string,
                                s.Category);
 /// <summary>
 /// Helper method that creates a user friendly type from the internal interop structure.
 /// </summary>
 /// <param name="s">SubtitleTrackStructure from interop</param>
 /// <returns>public SubtitleTrack to be consumed by the user</returns>
 internal static SubtitleTrack Build(this SubtitleTrackStructure s) => new SubtitleTrack(Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Encoding) as string);
 /// <summary>
 /// Helper method that creates a user friendly type from the internal interop structure.
 /// </summary>
 /// <param name="s">MediaSlaveStructure from interop</param>
 /// <returns>public MediaSlave to be consumed by the user</returns>
 internal static MediaSlave Build(this MediaSlaveStructure s) =>
 new MediaSlave(Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Uri) as string, s.Type, s.Priority);
 /// <summary>
 /// Helper method that creates a user friendly type from the internal interop structure.
 /// </summary>
 /// <param name="s">TrackDescriptionStructure from interop</param>
 /// <returns>public TrackDescription to be consumed by the user</returns>
 internal static TrackDescription Build(this TrackDescriptionStructure s) =>
 new TrackDescription(s.Id, Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Name) as string);
 /// <summary>
 /// Helper method that creates a user friendly type from the internal interop structure.
 /// </summary>
 /// <param name="s">ModuleDescriptionStructure from interop</param>
 /// <returns>public ModuleDescription to be consumed by the user</returns>
 internal static ModuleDescription Build(this ModuleDescriptionStructure s) =>
 new ModuleDescription(Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Name) as string,
                       Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.ShortName) as string,
                       Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.LongName) as string,
                       Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Help) as string);
 /// <summary>
 /// Helper method that creates a user friendly type from the internal interop structure.
 /// </summary>
 /// <param name="s">AudioOutputDeviceStructure from interop</param>
 /// <returns>public AudioOutputDevice to be consumed by the user</returns>
 internal static AudioOutputDevice Build(this AudioOutputDeviceStructure s) =>
 new AudioOutputDevice(Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.DeviceIdentifier) as string,
                       Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Description) as string);
 /// <summary>
 /// Helper method that creates a user friendly type from the internal interop structure.
 /// </summary>
 /// <param name="s">RendererDescriptionStructure from interop</param>
 /// <returns>public RendererDescription to be consumed by the user</returns>
 internal static RendererDescription Build(this RendererDescriptionStructure s) =>
 new RendererDescription(Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.Name) as string,
                         Utf8StringMarshaler.GetInstance().MarshalNativeToManaged(s.LongName) as string);