79 lines
1.9 KiB
Plaintext
79 lines
1.9 KiB
Plaintext
package ${packageName};
|
|
|
|
import java.io.IOException;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import com.google.protobuf.CodedInputStream;
|
|
import com.google.protobuf.GeneratedMessageV3;
|
|
import com.google.protobuf.Message;
|
|
|
|
public class MsgIds {
|
|
<#list messageInfos as message>
|
|
public static final int ${message.name} = ${message.id?c};
|
|
</#list>
|
|
|
|
//消息CLASS与消息ID的对应关系<消息class, 消息ID>
|
|
private static final Map<Class<? extends Message>, Integer> classToId = new HashMap<>();
|
|
//消息ID与消息CLASS的对应关系<消息ID, 消息class>
|
|
private static final Map<Integer, Class<? extends Message>> idToClass = new HashMap<>();
|
|
|
|
static {
|
|
//初始化消息CLASS与消息ID的对应关系
|
|
initClassToId();
|
|
//初始化消息ID与消息CLASS的对应关系
|
|
initIdToClass();
|
|
}
|
|
|
|
/**
|
|
* 获取消息ID
|
|
* @param clazz
|
|
* @return
|
|
*/
|
|
public static int getIdByClass(Class<? extends Message> clazz) {
|
|
return classToId.get(clazz);
|
|
}
|
|
|
|
/**
|
|
* 获取消息CLASS
|
|
* @param clazz
|
|
* @return
|
|
*/
|
|
@SuppressWarnings("unchecked")
|
|
public static <T> T getClassById(int msgId) {
|
|
return (T) idToClass.get(msgId);
|
|
}
|
|
|
|
|
|
/**
|
|
* 初始化消息CLASS与消息ID的对应关系
|
|
*/
|
|
private static void initClassToId() {
|
|
<#list messageInfos as message>
|
|
classToId.put(${message.className}.${message.name}.class, ${message.name});
|
|
</#list>
|
|
}
|
|
|
|
/**
|
|
* 初始化消息ID与消息CLASS的对应关系
|
|
*/
|
|
private static void initIdToClass() {
|
|
<#list messageInfos as message>
|
|
idToClass.put(${message.name},${message.className}.${message.name}.class);
|
|
</#list>
|
|
}
|
|
/**
|
|
* 根据消息id解析消息
|
|
*/
|
|
public static GeneratedMessageV3 parseFrom(int msgId, CodedInputStream s) throws IOException{
|
|
switch(msgId){
|
|
<#list messageInfos as message>
|
|
case ${message.name}:
|
|
return ${message.className}.${message.name}.parseFrom(s);
|
|
</#list>
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|