⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 errorhelper.cs

📁 破解的飞信源代码
💻 CS
字号:
namespace Imps.Client.Core
{
    using Imps.Client.Base;
    using System;

    internal static class ErrorHelper
    {
        public static void HandleException(Exception ex)
        {
            HandleException(ex, null, null, null);
        }

        public static void HandleException(Exception ex, User user, AsyncBizOperation op, ImpsErrorEventArgs eaError)
        {
            LogHelper.LogException(ex);
            if (eaError != null)
            {
                if (op != null)
                {
                    op.FireImpsErrorInUiThread(eaError);
                }
                else if (user != null)
                {
                    user.FireImpsErrorInUiThread(eaError);
                }
            }
        }

        public static void HandleReceivedErrorResponse(SipResponse resp)
        {
            HandleReceivedErrorResponse(resp, null, null, null);
        }

        public static void HandleReceivedErrorResponse(SipResponse resp, User user, AsyncBizOperation op, ImpsErrorEventArgs eaError)
        {
            LogHelper.LogReceivedSipMessage(resp);
            if (eaError != null)
            {
                if (op != null)
                {
                    op.FireImpsErrorInUiThread(eaError);
                }
                else if (user != null)
                {
                    user.FireImpsErrorInUiThread(eaError);
                }
            }
        }

        public static void HandleSendRequestErrorAndTimeout(SipRequest req)
        {
            HandleSendRequestErrorAndTimeout(req, null, null, null);
        }

        public static void HandleSendRequestErrorAndTimeout(SipRequest req, User user, AsyncBizOperation op, string errmsg)
        {
            new ErrorAndTimeoutWraper(req, user, op, errmsg);
        }

        private class ErrorAndTimeoutWraper
        {
            private string _errmsg;
            private AsyncBizOperation _op;
            private SipRequest _req;
            private User _user;

            internal ErrorAndTimeoutWraper(SipRequest req, User user, AsyncBizOperation op, string errmsg)
            {
                this._errmsg = errmsg;
                this._req = req;
                this._user = user;
                this._op = op;
                req.SendMessageFailed += new EventHandler<FailedEventArgs>(this, (IntPtr) this.req_SendMessageFailed);
                req.WaitResponseTimeout += new EventHandler(this.req_WaitResponseTimeout);
            }

            private void DoFireImpsError()
            {
                if (!string.IsNullOrEmpty(this._errmsg))
                {
                    if (this._op != null)
                    {
                        this._op.FireImpsErrorInUiThread(new ImpsErrorEventArgs(this._errmsg));
                    }
                    else if (this._user != null)
                    {
                        this._user.FireImpsErrorInUiThread(new ImpsErrorEventArgs(this._errmsg));
                    }
                }
            }

            private void req_SendMessageFailed(object sender, FailedEventArgs e)
            {
                LogHelper.LogSendSipMessageFailed(this._req, e.Explain, e.FailedException);
                this.DoFireImpsError();
            }

            private void req_WaitResponseTimeout(object sender, EventArgs e)
            {
                LogHelper.LogWaitSipResponseTimeout(this._req);
                this.DoFireImpsError();
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -