mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-05-24 00:25:17 +00:00
perf[net]: 不用强制在xml文件中写协议号
This commit is contained in:
+1
-1
@@ -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;
|
||||
+1
-1
@@ -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;
|
||||
+1
-1
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user