perf[net]: 不用强制在xml文件中写协议号

This commit is contained in:
jaysunxiao
2022-06-24 10:52:13 +08:00
parent cfc15a80be
commit fc027fc269
6 changed files with 23 additions and 19 deletions
@@ -11,7 +11,7 @@
* See the License for the specific language governing permissions and limitations under the License.
*/
package com.zfoo.net.core.tpcAsync.client;
package com.zfoo.net.core.tcpAsync.client;
import com.zfoo.net.NetContext;
import com.zfoo.net.core.tcp.TcpClient;
@@ -10,7 +10,7 @@
* See the License for the specific language governing permissions and limitations under the License.
*/
package com.zfoo.net.core.tpcAsync.server;
package com.zfoo.net.core.tcpAsync.server;
import com.zfoo.net.NetContext;
import com.zfoo.net.packet.tcp.AsyncMessAnswer;
@@ -11,7 +11,7 @@
* See the License for the specific language governing permissions and limitations under the License.
*/
package com.zfoo.net.core.tpcAsync.server;
package com.zfoo.net.core.tcpAsync.server;
import com.zfoo.net.core.tcp.TcpServer;
import com.zfoo.util.ThreadUtils;
+11 -10
View File
@@ -4,20 +4,21 @@
<protocols author="jaysunxiao">
<module id="1" name="native" minId="0" maxId="100" version="99.99.999">
<protocol id="0" location="com.zfoo.net.router.attachment.SignalAttachment"/>
<protocol id="1" location="com.zfoo.net.router.attachment.GatewayAttachment"/>
<protocol id="2" location="com.zfoo.net.router.attachment.UdpAttachment"/>
<protocol id="3" location="com.zfoo.net.router.attachment.HttpAttachment"/>
<protocol id="4" location="com.zfoo.net.router.attachment.NoAnswerAttachment"/>
<protocol location="com.zfoo.net.router.attachment.SignalAttachment"/>
<protocol location="com.zfoo.net.router.attachment.GatewayAttachment"/>
<protocol location="com.zfoo.net.router.attachment.UdpAttachment"/>
<protocol location="com.zfoo.net.router.attachment.HttpAttachment"/>
<protocol location="com.zfoo.net.router.attachment.NoAnswerAttachment"/>
<protocol id="20" location="com.zfoo.net.core.gateway.model.AuthUidToGatewayCheck"/>
<protocol id="21" location="com.zfoo.net.core.gateway.model.AuthUidToGatewayConfirm"/>
<protocol id="22" location="com.zfoo.net.core.gateway.model.AuthUidAsk"/>
<protocol id="23" location="com.zfoo.net.core.gateway.model.GatewaySessionInactiveAsk"/>
<protocol id="24" location="com.zfoo.net.core.gateway.model.GatewaySynchronizeSidAsk"/>
<protocol location="com.zfoo.net.core.gateway.model.AuthUidToGatewayCheck"/>
<protocol location="com.zfoo.net.core.gateway.model.AuthUidToGatewayConfirm"/>
<protocol location="com.zfoo.net.core.gateway.model.AuthUidAsk"/>
<protocol location="com.zfoo.net.core.gateway.model.GatewaySessionInactiveAsk"/>
<protocol location="com.zfoo.net.core.gateway.model.GatewaySynchronizeSidAsk"/>
</module>
<!-- 在xml文件中写协议号是为了统一规划协议号,更加直观;不写协议号也没有影响 -->
<module id="2" name="common" minId="100" maxId="1000" version="99.99.999">
<protocol id="100" location="com.zfoo.net.packet.common.Message"/>
<protocol id="101" location="com.zfoo.net.packet.common.Error"/>
@@ -123,16 +123,18 @@ public class ProtocolAnalysis {
modules[module.getId()] = module;
for (var protocolDefinition : moduleDefinition.getProtocols()) {
var id = protocolDefinition.getId();
var location = protocolDefinition.getLocation();
var clazz = Class.forName(location);
var id = getProtocolIdByClass(clazz);
AssertionUtils.isTrue(id >= moduleDefinition.getMinId(), "模块[{}]中的协议[{}]的协议号必须大于或者等于[{}]", moduleDefinition.getName(), clazz.getSimpleName(), moduleDefinition.getMinId());
AssertionUtils.isTrue(id < moduleDefinition.getMaxId(), "模块[{}]中的协议[{}]的协议号必须小于[{}]", moduleDefinition.getName(), clazz.getSimpleName(), moduleDefinition.getMaxId());
AssertionUtils.isNull(protocols[id], "duplicate definition [id:{}] Exception!", id);
// 协议号是否和id是否相等
AssertionUtils.isTrue(getProtocolIdByClass(clazz) == id, "[class:{}]协议序列号[{}]和协议文件里的协议序列号不相等", clazz.getCanonicalName(), PROTOCOL_ID);
// 协议号是否和id是否相等,如果xml文件中没有填protocolId则不检测
if (protocolDefinition.getId() >= 0) {
AssertionUtils.isTrue(protocolDefinition.getId() == id, "[class:{}]协议序列号[{}]和协议文件里的协议序列号不相等", clazz.getCanonicalName(), PROTOCOL_ID);
}
checkProtocol(clazz);
}
}
@@ -140,8 +142,9 @@ public class ProtocolAnalysis {
for (var moduleDefinition : xmlProtocols.getModules()) {
var module = modules[moduleDefinition.getId()];
for (var protocolDefinition : moduleDefinition.getProtocols()) {
var id = protocolDefinition.getId();
var clazz = protocolClassMap.get(id);
var location = protocolDefinition.getLocation();
var clazz = Class.forName(location);
var id = getProtocolIdByClass(clazz);
var registration = parseProtocolRegistration(clazz, module);
if (protocolDefinition.isEnhance()) {
enhanceList.add(registration);
@@ -20,7 +20,7 @@ import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
public class XmlProtocolDefinition {
@JacksonXmlProperty(isAttribute = true, localName = "id")
private short id;
private final short id = -1;
@JacksonXmlProperty(isAttribute = true, localName = "location")
private String location;