Skip to content

Commit d86ec62

Browse files
author
Peng Hu
committed
调通protobuf通讯
1 parent b018763 commit d86ec62

File tree

11 files changed

+36
-41
lines changed

11 files changed

+36
-41
lines changed

src/main/java/info/xiaomo/gengine/network/AbstractHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public abstract class AbstractHandler<T> implements IQueueDriverCommand {
1414

1515
protected T message;
1616

17-
protected Object session;
17+
protected ISession session;
1818

1919
protected int queueId;
2020

@@ -50,7 +50,7 @@ public Object getParam() {
5050

5151
@Override
5252
public void setParam(Object session) {
53-
this.session = session;
53+
this.session = (ISession) session;
5454
}
5555

5656
@Override

src/main/java/info/xiaomo/gengine/network/IMessageAndHandler.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@ public interface IMessageAndHandler {
2525

2626
/**
2727
* 获取handler
28-
* @param handlerName handlerName
2928
* @return AbstractHandler
3029
*/
31-
AbstractHandler getHandler(String handlerName);
30+
AbstractHandler getHandler(int messageId);
3231

3332
/**
3433
* 注册
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package info.xiaomo.gengine.network;
22

3-
import com.google.protobuf.AbstractMessage;
43
import io.netty.channel.Channel;
54

65
/**
@@ -11,10 +10,10 @@ public interface INetworkConsumer {
1110
/**
1211
* 执行具体的指令
1312
*
14-
* @param message message
13+
* @param msg msg
1514
* @param channel channel
1615
*/
17-
void consume(AbstractMessage message, Channel channel);
16+
void consume(Message msg, Channel channel);
1817

1918

2019
}

src/main/java/info/xiaomo/gengine/network/Packet.java renamed to src/main/java/info/xiaomo/gengine/network/Message.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import lombok.Data;
44

55
@Data
6-
public class Packet {
6+
public class Message {
77
public static final byte HEAD_TCP = -128;
88
public static final byte HEAD_UDP = 0;
99
public static final byte HEAD_NEED_ACK = 64;
@@ -13,15 +13,15 @@ public class Packet {
1313
public static final byte PROTOCOL_JSON = 1;
1414
private final byte head;
1515
private final short sid;
16-
private final int cmd;
16+
private final int msgId;
1717
private final byte[] bytes;
1818

19-
public Packet(byte head, int cmd, byte[] bytes) {
19+
public Message(byte head, int cmd, byte[] bytes) {
2020
this(head, (short) 0, cmd, bytes);
2121
}
2222

23-
public Packet(byte head, short sid, int cmd, byte[] bytes) {
24-
this.cmd = cmd;
23+
public Message(byte head, short sid, int msgId, byte[] bytes) {
24+
this.msgId = msgId;
2525
this.bytes = bytes;
2626
this.head = head;
2727
this.sid = sid;

src/main/java/info/xiaomo/gengine/network/client/Client.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
import com.google.protobuf.AbstractMessage;
44
import com.google.protobuf.Descriptors;
5-
import com.google.protobuf.Message;
6-
import info.xiaomo.gengine.network.Packet;
5+
import info.xiaomo.gengine.network.Message;
76
import info.xiaomo.gengine.network.handler.MessageDecoder;
87
import info.xiaomo.gengine.network.handler.MessageEncoder;
9-
import info.xiaomo.gengine.network.pool.MessageAndHandlerPool;
108
import io.netty.bootstrap.Bootstrap;
119
import io.netty.channel.*;
1210
import io.netty.channel.nio.NioEventLoopGroup;
@@ -20,7 +18,6 @@
2018
import java.io.IOException;
2119
import java.util.List;
2220
import java.util.Map;
23-
import java.util.Set;
2421
import java.util.concurrent.*;
2522

2623
/**
@@ -152,14 +149,14 @@ public boolean sendMsg(AbstractMessage message) {
152149
Channel channel = getChannel(Thread.currentThread().getId());
153150
if (channel != null && channel.isActive()) {
154151
int cmd = getMessageID(message);
155-
Packet packet = new Packet(Packet.HEAD_TCP, cmd, message.toByteArray());
152+
Message packet = new Message(Message.HEAD_TCP, cmd, message.toByteArray());
156153
channel.writeAndFlush(packet);
157154
return true;
158155
}
159156
return false;
160157
}
161158

162-
public static int getMessageID(Message msg) {
159+
public static int getMessageID(com.google.protobuf.Message msg) {
163160
for (Map.Entry<Descriptors.FieldDescriptor, Object> fieldDescriptorObjectEntry : msg.getAllFields().entrySet()) {
164161
if (fieldDescriptorObjectEntry.getKey().getName().equals("msgId")) {
165162
return ((Descriptors.EnumValueDescriptor) fieldDescriptorObjectEntry.getValue()).getNumber();

src/main/java/info/xiaomo/gengine/network/client/NetworkConsumerAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package info.xiaomo.gengine.network.client;
22

3-
import com.google.protobuf.AbstractMessage;
43
import info.xiaomo.gengine.network.INetworkConsumer;
4+
import info.xiaomo.gengine.network.Message;
55
import io.netty.channel.Channel;
66

77
/**
@@ -13,7 +13,7 @@
1313
public class NetworkConsumerAdapter implements INetworkConsumer {
1414

1515
@Override
16-
public void consume(AbstractMessage msg, Channel channel) {
16+
public void consume(Message msg, Channel channel) {
1717
// Nothing to do
1818
}
1919
}

src/main/java/info/xiaomo/gengine/network/handler/MessageDecoder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package info.xiaomo.gengine.network.handler;
22

3-
import info.xiaomo.gengine.network.Packet;
3+
import info.xiaomo.gengine.network.Message;
44
import io.netty.buffer.ByteBuf;
55
import io.netty.channel.ChannelHandlerContext;
66
import io.netty.handler.codec.ByteToMessageDecoder;
@@ -38,6 +38,6 @@ protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) t
3838
}
3939
byte[] bytes = new byte[length - 4];
4040
in.readBytes(bytes);
41-
out.add(new Packet(head, cmd, bytes));
41+
out.add(new Message(head, cmd, bytes));
4242
}
4343
}

src/main/java/info/xiaomo/gengine/network/handler/MessageEncoder.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package info.xiaomo.gengine.network.handler;
22

3-
import info.xiaomo.gengine.network.Packet;
3+
import info.xiaomo.gengine.network.Message;
44
import io.netty.buffer.ByteBuf;
55
import io.netty.channel.ChannelHandlerContext;
66
import io.netty.handler.codec.MessageToByteEncoder;
@@ -13,7 +13,7 @@
1313
* 比如客户端请求登录的Protobuf协议如下:
1414
*/
1515
@Slf4j
16-
public class MessageEncoder extends MessageToByteEncoder<Packet> {
16+
public class MessageEncoder extends MessageToByteEncoder<Message> {
1717

1818

1919
private final int downLimit;
@@ -24,14 +24,14 @@ public MessageEncoder(int downLimit) {
2424

2525

2626
@Override
27-
protected void encode(ChannelHandlerContext ctx, Packet packet, ByteBuf buf) {
28-
if ((packet.getBytes().length > this.downLimit) && (log.isWarnEnabled()))
29-
log.warn("packet size[" + packet.getBytes().length + "] is over limit[" + this.downLimit + "]");
30-
31-
buf.writeByte(packet.getHead());
32-
buf.writeShort(packet.getBytes().length + 4);
33-
buf.writeInt(packet.getCmd());
34-
buf.writeBytes(packet.getBytes());
27+
protected void encode(ChannelHandlerContext ctx, Message message, ByteBuf buf) {
28+
if ((message.getBytes().length > this.downLimit) && (log.isWarnEnabled()))
29+
log.warn("packet size[" + message.getBytes().length + "] is over limit[" + this.downLimit + "]");
30+
31+
buf.writeByte(message.getHead());
32+
buf.writeShort(message.getBytes().length + 4);
33+
buf.writeInt(message.getMsgId());
34+
buf.writeBytes(message.getBytes());
3535
}
3636

3737
@Override

src/main/java/info/xiaomo/gengine/network/handler/MessageExecutor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package info.xiaomo.gengine.network.handler;
22

3-
import com.google.protobuf.AbstractMessage;
43
import info.xiaomo.gengine.network.INetworkConsumer;
54
import info.xiaomo.gengine.network.INetworkEventListener;
5+
import info.xiaomo.gengine.network.Message;
66
import io.netty.channel.ChannelHandlerContext;
77
import io.netty.channel.ChannelInboundHandlerAdapter;
88

@@ -29,7 +29,7 @@ public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
2929

3030
@Override
3131
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
32-
consumer.consume((AbstractMessage) msg, ctx.channel());
32+
consumer.consume((Message) msg, ctx.channel());
3333
}
3434

3535
@Override

src/main/java/info/xiaomo/gengine/network/pool/MessageAndHandlerPool.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class MessageAndHandlerPool implements IMessageAndHandler {
2525
*/
2626
private final Map<String, Integer> ids = new HashMap<>(10);
2727

28-
private final Map<String, Class<? extends AbstractHandler>> handlers = new HashMap<>(10);
28+
private final Map<Integer, Class<? extends AbstractHandler>> handlers = new HashMap<>(10);
2929

3030
@Override
3131
public AbstractMessage getMessage(int messageId) {
@@ -39,8 +39,8 @@ public int getMessageId(AbstractMessage message) {
3939

4040

4141
@Override
42-
public AbstractHandler getHandler(String handlerName) {
43-
Class<? extends AbstractHandler> clazz = handlers.get(handlerName);
42+
public AbstractHandler getHandler(int messageId) {
43+
Class<? extends AbstractHandler> clazz = handlers.get(messageId);
4444
if (clazz != null) {
4545
try {
4646
return clazz.getDeclaredConstructor().newInstance();
@@ -54,7 +54,7 @@ public AbstractHandler getHandler(String handlerName) {
5454
@Override
5555
public void register(int messageId, AbstractMessage messageClazz, Class<? extends AbstractHandler> handler) {
5656
messages.put(messageId, messageClazz);
57-
handlers.put(messageClazz.getClass().getName(), handler);
57+
handlers.put(messageId, handler);
5858
ids.put(messageClazz.getClass().getName(), messageId);
5959
}
6060

0 commit comments

Comments
 (0)