Skip to content

Commit fb9bdd8

Browse files
committed
[增加]1. 增加消息处理器的时间耗时
1 parent 8029bfb commit fb9bdd8

File tree

2 files changed

+72
-43
lines changed

2 files changed

+72
-43
lines changed

GameFrameX.Core/BaseHandler/BaseComponentHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public override async Task Init(INetworkMessage message, INetWorkChannel netWork
5353
/// <returns>内部执行任务</returns>
5454
public override Task InnerAction()
5555
{
56-
CacheComponent.Tell(ActionAsync);
56+
CacheComponent.Tell(InnerActionAsync);
5757
return Task.CompletedTask;
5858
}
5959

Lines changed: 71 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,86 @@
1-
using GameFrameX.NetWork;
1+
using System.Diagnostics;
2+
using GameFrameX.Log;
3+
using GameFrameX.NetWork;
24
using GameFrameX.NetWork.Abstractions;
5+
using GameFrameX.Setting;
36

4-
namespace GameFrameX.Core.BaseHandler;
5-
6-
/// <summary>
7-
/// 基础消息处理器
8-
/// </summary>
9-
public abstract class BaseMessageHandler : IMessageHandler
7+
namespace GameFrameX.Core.BaseHandler
108
{
119
/// <summary>
12-
/// 网络频道
10+
/// 基础消息处理器
1311
/// </summary>
14-
public INetWorkChannel NetWorkChannel { get; private set; }
12+
public abstract class BaseMessageHandler : IMessageHandler
13+
{
14+
/// <summary>
15+
/// 网络频道
16+
/// </summary>
17+
public INetWorkChannel NetWorkChannel { get; private set; }
1518

16-
/// <summary>
17-
/// 消息对象
18-
/// </summary>
19-
public INetworkMessage Message { get; private set; }
19+
/// <summary>
20+
/// 消息对象
21+
/// </summary>
22+
public INetworkMessage Message { get; private set; }
2023

21-
private bool _isInit;
24+
private bool _isInit;
2225

23-
/// <summary>
24-
/// 初始化
25-
/// 子类实现必须调用
26-
/// </summary>
27-
/// <param name="message">消息对象</param>
28-
/// <param name="netWorkChannel">网络渠道</param>
29-
/// <returns></returns>
30-
public virtual Task Init(INetworkMessage message, INetWorkChannel netWorkChannel)
31-
{
32-
Message = message;
33-
NetWorkChannel = netWorkChannel;
34-
_isInit = true;
35-
return Task.CompletedTask;
36-
}
26+
/// <summary>
27+
/// 监控器
28+
/// </summary>
29+
private Stopwatch _stopwatch;
3730

38-
/// <summary>
39-
/// 动作异步
40-
/// </summary>
41-
/// <returns></returns>
42-
protected abstract Task ActionAsync();
31+
/// <summary>
32+
/// 初始化
33+
/// 子类实现必须调用
34+
/// </summary>
35+
/// <param name="message">消息对象</param>
36+
/// <param name="netWorkChannel">网络渠道</param>
37+
/// <returns>初始化任务</returns>
38+
public virtual Task Init(INetworkMessage message, INetWorkChannel netWorkChannel)
39+
{
40+
_stopwatch = new Stopwatch();
41+
Message = message;
42+
NetWorkChannel = netWorkChannel;
43+
_isInit = true;
44+
return Task.CompletedTask;
45+
}
4346

44-
/// <summary>
45-
/// 执行
46-
/// </summary>
47-
/// <returns></returns>
48-
public virtual Task InnerAction()
49-
{
50-
if (_isInit == false)
47+
/// <summary>
48+
/// 动作异步
49+
/// </summary>
50+
/// <returns>动作执行任务</returns>
51+
protected abstract Task ActionAsync();
52+
53+
/// <summary>
54+
/// 内部动作异步
55+
/// 记录执行时间并调用 <see cref="ActionAsync"/>
56+
/// </summary>
57+
/// <returns>动作执行任务</returns>
58+
protected Task InnerActionAsync()
5159
{
52-
throw new Exception("消息处理器未初始化,请调用先Init方法,如果已经子类实现了Init方法,请调用在子类Init中调用父类Init方法");
60+
if (GlobalSettings.IsDebug)
61+
{
62+
_stopwatch.Restart();
63+
var result = ActionAsync();
64+
_stopwatch.Stop();
65+
LogHelper.Debug($"消息处理器:{GetType().Name} 执行耗时:{_stopwatch.ElapsedMilliseconds} ms");
66+
return result;
67+
}
68+
69+
return ActionAsync();
5370
}
5471

55-
return ActionAsync();
72+
/// <summary>
73+
/// 执行
74+
/// </summary>
75+
/// <returns>执行任务</returns>
76+
public virtual Task InnerAction()
77+
{
78+
if (_isInit == false)
79+
{
80+
throw new Exception("消息处理器未初始化,请调用先Init方法,如果已经子类实现了Init方法,请调用在子类Init中调用父类Init方法");
81+
}
82+
83+
return InnerActionAsync();
84+
}
5685
}
5786
}

0 commit comments

Comments
 (0)