📄 errorhelper.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 + -