Skip to content

Commit 278c35c

Browse files
committed
[增加]1. 增加消息处理器的类名检查和类型标记检查
1 parent aaef888 commit 278c35c

File tree

2 files changed

+170
-149
lines changed

2 files changed

+170
-149
lines changed

GameFrameX.Core/Hotfix/HotfixModule.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,22 @@ private bool AddTcpHandler(Type type)
289289
return false;
290290
}
291291

292+
var classFullName = type.FullName;
293+
if (classFullName == null)
294+
{
295+
return false;
296+
}
297+
298+
if (!type.IsSealed)
299+
{
300+
throw new InvalidOperationException($"{classFullName} 必须是标记为sealed的类");
301+
}
302+
303+
if (!classFullName.EndsWith(GlobalConst.ComponentHandlerNameSuffix))
304+
{
305+
throw new Exception($"组件代理必须以[{GlobalConst.ComponentHandlerNameSuffix}]结尾,{classFullName}");
306+
}
307+
292308
if (_tcpHandlerTypes.Contains(attribute.MessageType))
293309
{
294310
LogHelper.Error($"重复注册消息TCP处理器 类型:[{type.FullName}]");
Lines changed: 154 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -1,150 +1,155 @@
1-
namespace GameFrameX.Utility.Setting;
2-
3-
/// <summary>
4-
/// 全局常量类
5-
/// </summary>
6-
public static class GlobalConst
7-
{
8-
/// <summary>
9-
/// SessionId Key
10-
/// </summary>
11-
public const string SessionIdKey = "SESSION_ID";
12-
13-
/// <summary>
14-
/// ActorId Key
15-
/// </summary>
16-
public const string ActorIdKey = "ACTOR_ID";
17-
18-
/// <summary>
19-
/// 唯一ID
20-
/// </summary>
21-
public const string UniqueIdIdKey = "UNIQUEID_ID";
22-
23-
/// <summary>
24-
/// 组件代理名称后缀
25-
/// </summary>
26-
public const string ComponentAgentNameSuffix = "ComponentAgent";
27-
28-
/// <summary>
29-
/// 组件代理包裹名称后缀
30-
/// </summary>
31-
public const string ComponentAgentWrapperNameSuffix = "ComponentAgentWrapper";
32-
33-
/// <summary>
34-
/// 组件包裹名称后缀
35-
/// </summary>
36-
public const string WrapperNameSuffix = "Wrapper";
37-
38-
/// <summary>
39-
/// 组件代理名称前缀
40-
/// </summary>
41-
public const string HotfixNameSpaceNamePrefix = "GameFrameX.Hotfix.";
42-
43-
/// <summary>
44-
/// 秒标记
45-
/// </summary>
46-
public const int SecondMask = 0b111111111111111111111111111111;
47-
48-
/// <summary>
49-
/// 最大全局ID
50-
/// </summary>
51-
public const int MaxGlobalId = MaxServerId * 1000;
52-
53-
/// <summary>
54-
/// 最小服务器ID
55-
/// </summary>
56-
public const int MinServerId = 1000;
57-
58-
/// <summary>
59-
/// 最大服务器ID
60-
/// </summary>
61-
public const int MaxServerId = 9999;
62-
63-
/// <summary>
64-
/// 最大Actor增量
65-
/// </summary>
66-
public const int MaxActorIncrease = 4095; // 4095
67-
68-
/// <summary>
69-
/// 最大唯一增量
70-
/// </summary>
71-
public const int MaxUniqueIncrease = 524287; //524287
72-
73-
/// <summary>
74-
/// 服务器ID 长度标记位=>49 = 63-14
75-
/// </summary>
76-
public const int ServerIdOrModuleIdMask = 49; //49+14=63
77-
78-
/// <summary>
79-
/// Actor类型标记
80-
/// </summary>
81-
public const int ActorTypeMask = 42; //42+7 = 49
82-
83-
/// <summary>
84-
/// 时间戳标记
85-
/// </summary>
86-
public const int TimestampMask = 12; //12+30 =42
87-
88-
/// <summary>
89-
/// 模块ID时间戳标记
90-
/// </summary>
91-
public const int ModuleIdTimestampMask = 19; //19+30 =42
92-
93-
#region ActorType
94-
95-
/// <summary>
96-
/// 空将会被判断为无效值
97-
/// </summary>
98-
public const ushort ActorTypeNone = 0;
99-
100-
/// <summary>
101-
/// 角色
102-
/// </summary>
103-
public const ushort ActorTypePlayer = 1;
104-
105-
/// <summary>
106-
/// 分割线(勿调整,勿用于业务逻辑)
107-
/// </summary>
108-
public const int ActorTypeSeparator = 128;
109-
110-
/// <summary>
111-
/// 服务类型
112-
/// </summary>
113-
public const int ActorTypeServer = 129;
114-
115-
/// <summary>
116-
/// 最大值
117-
/// </summary>
118-
public const int ActorTypeMax = 999;
119-
120-
#endregion
121-
122-
123-
#region HTTP
124-
125-
/// <summary>
126-
/// HTTP 请求的签名字段名称
127-
/// </summary>
128-
public const string HttpSignKey = "sign";
129-
130-
/// <summary>
131-
/// HTTP 请求的时间戳字段名称
132-
/// </summary>
133-
public const string HttpTimestampKey = "timestamp";
134-
135-
#endregion
136-
137-
138-
#region GlobalTimer 全局计时器
139-
140-
/// <summary>
141-
/// 数据存储间隔 单位 毫秒
142-
/// </summary>
143-
internal const int SaveIntervalInMilliSeconds = 300_000; //300_000;
144-
145-
/// <summary>
146-
/// </summary>
147-
public const int MAGIC = 60;
148-
149-
#endregion
1+
namespace GameFrameX.Utility.Setting;
2+
3+
/// <summary>
4+
/// 全局常量类
5+
/// </summary>
6+
public static class GlobalConst
7+
{
8+
/// <summary>
9+
/// SessionId Key
10+
/// </summary>
11+
public const string SessionIdKey = "SESSION_ID";
12+
13+
/// <summary>
14+
/// ActorId Key
15+
/// </summary>
16+
public const string ActorIdKey = "ACTOR_ID";
17+
18+
/// <summary>
19+
/// 唯一ID
20+
/// </summary>
21+
public const string UniqueIdIdKey = "UNIQUEID_ID";
22+
23+
/// <summary>
24+
/// 组件代理名称后缀
25+
/// </summary>
26+
public const string ComponentAgentNameSuffix = "ComponentAgent";
27+
28+
/// <summary>
29+
/// 组件处理器名称后缀
30+
/// </summary>
31+
public const string ComponentHandlerNameSuffix = "Handler";
32+
33+
/// <summary>
34+
/// 组件代理包裹名称后缀
35+
/// </summary>
36+
public const string ComponentAgentWrapperNameSuffix = "ComponentAgentWrapper";
37+
38+
/// <summary>
39+
/// 组件包裹名称后缀
40+
/// </summary>
41+
public const string WrapperNameSuffix = "Wrapper";
42+
43+
/// <summary>
44+
/// 组件代理名称前缀
45+
/// </summary>
46+
public const string HotfixNameSpaceNamePrefix = "GameFrameX.Hotfix.";
47+
48+
/// <summary>
49+
/// 秒标记
50+
/// </summary>
51+
public const int SecondMask = 0b111111111111111111111111111111;
52+
53+
/// <summary>
54+
/// 最大全局ID
55+
/// </summary>
56+
public const int MaxGlobalId = MaxServerId * 1000;
57+
58+
/// <summary>
59+
/// 最小服务器ID
60+
/// </summary>
61+
public const int MinServerId = 1000;
62+
63+
/// <summary>
64+
/// 最大服务器ID
65+
/// </summary>
66+
public const int MaxServerId = 9999;
67+
68+
/// <summary>
69+
/// 最大Actor增量
70+
/// </summary>
71+
public const int MaxActorIncrease = 4095; // 4095
72+
73+
/// <summary>
74+
/// 最大唯一增量
75+
/// </summary>
76+
public const int MaxUniqueIncrease = 524287; //524287
77+
78+
/// <summary>
79+
/// 服务器ID 长度标记位=>49 = 63-14
80+
/// </summary>
81+
public const int ServerIdOrModuleIdMask = 49; //49+14=63
82+
83+
/// <summary>
84+
/// Actor类型标记
85+
/// </summary>
86+
public const int ActorTypeMask = 42; //42+7 = 49
87+
88+
/// <summary>
89+
/// 时间戳标记
90+
/// </summary>
91+
public const int TimestampMask = 12; //12+30 =42
92+
93+
/// <summary>
94+
/// 模块ID时间戳标记
95+
/// </summary>
96+
public const int ModuleIdTimestampMask = 19; //19+30 =42
97+
98+
#region ActorType
99+
100+
/// <summary>
101+
/// 空将会被判断为无效值
102+
/// </summary>
103+
public const ushort ActorTypeNone = 0;
104+
105+
/// <summary>
106+
/// 角色
107+
/// </summary>
108+
public const ushort ActorTypePlayer = 1;
109+
110+
/// <summary>
111+
/// 分割线(勿调整,勿用于业务逻辑)
112+
/// </summary>
113+
public const int ActorTypeSeparator = 128;
114+
115+
/// <summary>
116+
/// 服务类型
117+
/// </summary>
118+
public const int ActorTypeServer = 129;
119+
120+
/// <summary>
121+
/// 最大值
122+
/// </summary>
123+
public const int ActorTypeMax = 999;
124+
125+
#endregion
126+
127+
128+
#region HTTP
129+
130+
/// <summary>
131+
/// HTTP 请求的签名字段名称
132+
/// </summary>
133+
public const string HttpSignKey = "sign";
134+
135+
/// <summary>
136+
/// HTTP 请求的时间戳字段名称
137+
/// </summary>
138+
public const string HttpTimestampKey = "timestamp";
139+
140+
#endregion
141+
142+
143+
#region GlobalTimer 全局计时器
144+
145+
/// <summary>
146+
/// 数据存储间隔 单位 毫秒
147+
/// </summary>
148+
internal const int SaveIntervalInMilliSeconds = 300_000; //300_000;
149+
150+
/// <summary>
151+
/// </summary>
152+
public const int MAGIC = 60;
153+
154+
#endregion
150155
}

0 commit comments

Comments
 (0)