移除Header降低代码耦合
parent
eb2bfc85e9
commit
a15da0d583
|
@ -47,7 +47,7 @@ public class TCPServerHandler extends ChannelInboundHandlerAdapter {
|
||||||
long time = session.access();
|
long time = session.access();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Handler handler = handlerMapping.getHandler(request.getMessageType());
|
Handler handler = handlerMapping.getHandler(request.getMessageId());
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
if (!interceptor.beforeHandle(request, session))
|
if (!interceptor.beforeHandle(request, session))
|
||||||
return;
|
return;
|
||||||
|
@ -67,7 +67,7 @@ public class TCPServerHandler extends ChannelInboundHandlerAdapter {
|
||||||
}
|
}
|
||||||
time = System.currentTimeMillis() - time;
|
time = System.currentTimeMillis() - time;
|
||||||
if (time > 200)
|
if (time > 200)
|
||||||
log.info("=========消息ID{},处理耗时{}ms,", request.getHeader(), time);
|
log.info("=========消息ID{},处理耗时{}ms,", request.getMessageId(), time);
|
||||||
if (response != null)
|
if (response != null)
|
||||||
ctx.writeAndFlush(response);
|
ctx.writeAndFlush(response);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package io.github.yezhihao.netmc.core;
|
package io.github.yezhihao.netmc.core;
|
||||||
|
|
||||||
import io.github.yezhihao.netmc.core.model.Header;
|
|
||||||
import io.github.yezhihao.netmc.core.model.Message;
|
import io.github.yezhihao.netmc.core.model.Message;
|
||||||
import io.github.yezhihao.netmc.session.Session;
|
import io.github.yezhihao.netmc.session.Session;
|
||||||
|
|
||||||
|
@ -9,7 +8,7 @@ import io.github.yezhihao.netmc.session.Session;
|
||||||
* @author yezhihao
|
* @author yezhihao
|
||||||
* home https://gitee.com/yezhihao/jt808-server
|
* home https://gitee.com/yezhihao/jt808-server
|
||||||
*/
|
*/
|
||||||
public interface HandlerInterceptor<T extends Message<? extends Header>> {
|
public interface HandlerInterceptor<T extends Message> {
|
||||||
/** 未找到对应的Handle */
|
/** 未找到对应的Handle */
|
||||||
T notSupported(T request, Session session);
|
T notSupported(T request, Session session);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package io.github.yezhihao.netmc.core.handler;
|
package io.github.yezhihao.netmc.core.handler;
|
||||||
|
|
||||||
import io.github.yezhihao.netmc.core.model.Header;
|
|
||||||
import io.github.yezhihao.netmc.core.model.Message;
|
import io.github.yezhihao.netmc.core.model.Message;
|
||||||
import io.github.yezhihao.netmc.session.Session;
|
import io.github.yezhihao.netmc.session.Session;
|
||||||
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
|
import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl;
|
||||||
|
@ -17,7 +16,6 @@ public abstract class Handler {
|
||||||
|
|
||||||
public static final int MESSAGE = 0;
|
public static final int MESSAGE = 0;
|
||||||
public static final int SESSION = 1;
|
public static final int SESSION = 1;
|
||||||
public static final int HEADER = 2;
|
|
||||||
|
|
||||||
public final Object targetObject;
|
public final Object targetObject;
|
||||||
public final Method targetMethod;
|
public final Method targetMethod;
|
||||||
|
@ -44,8 +42,6 @@ public abstract class Handler {
|
||||||
|
|
||||||
if (Message.class.isAssignableFrom(clazz))
|
if (Message.class.isAssignableFrom(clazz))
|
||||||
parameterTypes[i] = MESSAGE;
|
parameterTypes[i] = MESSAGE;
|
||||||
else if (Header.class.isAssignableFrom(clazz))
|
|
||||||
parameterTypes[i] = HEADER;
|
|
||||||
else if (Session.class.isAssignableFrom(clazz))
|
else if (Session.class.isAssignableFrom(clazz))
|
||||||
parameterTypes[i] = SESSION;
|
parameterTypes[i] = SESSION;
|
||||||
}
|
}
|
||||||
|
@ -67,9 +63,6 @@ public abstract class Handler {
|
||||||
case Handler.SESSION:
|
case Handler.SESSION:
|
||||||
args[i] = session;
|
args[i] = session;
|
||||||
break;
|
break;
|
||||||
case Handler.HEADER:
|
|
||||||
args[i] = request.getHeader();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (T) targetMethod.invoke(targetObject, args);
|
return (T) targetMethod.invoke(targetObject, args);
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
package io.github.yezhihao.netmc.core.model;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 消息头
|
|
||||||
* @author yezhihao
|
|
||||||
* home https://gitee.com/yezhihao/jt808-server
|
|
||||||
*/
|
|
||||||
public interface Header<ClientID, Type> extends Serializable {
|
|
||||||
|
|
||||||
/** 客户端唯一标识 */
|
|
||||||
ClientID getClientId();
|
|
||||||
|
|
||||||
/** 消息类型 */
|
|
||||||
Type getType();
|
|
||||||
|
|
||||||
/** 消息流水号 */
|
|
||||||
int getSerialNo();
|
|
||||||
|
|
||||||
void setSerialNo(int serialNo);
|
|
||||||
}
|
|
|
@ -7,9 +7,14 @@ import java.io.Serializable;
|
||||||
* @author yezhihao
|
* @author yezhihao
|
||||||
* home https://gitee.com/yezhihao/jt808-server
|
* home https://gitee.com/yezhihao/jt808-server
|
||||||
*/
|
*/
|
||||||
public interface Message<T extends Header> extends Serializable {
|
public interface Message extends Serializable {
|
||||||
|
|
||||||
T getHeader();
|
/** 客户端唯一标识 */
|
||||||
|
Serializable getClientId();
|
||||||
|
|
||||||
Object getMessageType();
|
/** 消息类型 */
|
||||||
|
Serializable getMessageId();
|
||||||
|
|
||||||
|
/** 消息流水号 */
|
||||||
|
int getSerialNo();
|
||||||
}
|
}
|
|
@ -7,6 +7,6 @@ package io.github.yezhihao.netmc.core.model;
|
||||||
public interface Response {
|
public interface Response {
|
||||||
|
|
||||||
/** 应答消息流水号 */
|
/** 应答消息流水号 */
|
||||||
int getSerialNo();
|
int getResponseSerialNo();
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,8 +1,6 @@
|
||||||
package io.github.yezhihao.netmc.model;
|
package io.github.yezhihao.netmc.model;
|
||||||
|
|
||||||
import io.github.yezhihao.netmc.core.model.Header;
|
public class MyHeader {
|
||||||
|
|
||||||
public class MyHeader implements Header<String, Integer> {
|
|
||||||
|
|
||||||
/** 客户端ID */
|
/** 客户端ID */
|
||||||
private String clientId;
|
private String clientId;
|
||||||
|
@ -20,7 +18,6 @@ public class MyHeader implements Header<String, Integer> {
|
||||||
this.serialNo = serialNo;
|
this.serialNo = serialNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getClientId() {
|
public String getClientId() {
|
||||||
return clientId;
|
return clientId;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +26,6 @@ public class MyHeader implements Header<String, Integer> {
|
||||||
this.clientId = clientId;
|
this.clientId = clientId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Integer getType() {
|
public Integer getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
@ -38,12 +34,10 @@ public class MyHeader implements Header<String, Integer> {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSerialNo() {
|
public int getSerialNo() {
|
||||||
return serialNo;
|
return serialNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setSerialNo(int serialNo) {
|
public void setSerialNo(int serialNo) {
|
||||||
this.serialNo = serialNo;
|
this.serialNo = serialNo;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ package io.github.yezhihao.netmc.model;
|
||||||
import io.github.yezhihao.netmc.core.model.Message;
|
import io.github.yezhihao.netmc.core.model.Message;
|
||||||
import io.github.yezhihao.netmc.session.Session;
|
import io.github.yezhihao.netmc.session.Session;
|
||||||
|
|
||||||
public class MyMessage implements Message<MyHeader> {
|
public class MyMessage implements Message {
|
||||||
|
|
||||||
private Session session;
|
private Session session;
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@ public class MyMessage implements Message<MyHeader> {
|
||||||
this.session = session;
|
this.session = session;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public MyHeader getHeader() {
|
public MyHeader getHeader() {
|
||||||
return header;
|
return header;
|
||||||
}
|
}
|
||||||
|
@ -37,10 +36,20 @@ public class MyMessage implements Message<MyHeader> {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object getMessageType() {
|
public String getClientId() {
|
||||||
|
return header.getClientId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer getMessageId() {
|
||||||
return header.getType();
|
return header.getType();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSerialNo() {
|
||||||
|
return header.getSerialNo();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder sb = new StringBuilder("MyMessage{");
|
final StringBuilder sb = new StringBuilder("MyMessage{");
|
||||||
|
@ -50,4 +59,4 @@ public class MyMessage implements Message<MyHeader> {
|
||||||
sb.append('}');
|
sb.append('}');
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue