/// <summary> /// 消息中是否有某个字段的类型不存在 /// </summary> /// <param name="message"></param> /// <returns></returns> public static bool IsAnyFieldNotExistInMessage(ProtocolControlCache_Message message) { if (!message.hasProto || message.protoData == null) { //未使用proto结构时返回false return(false); } ProtocolControlCache_ProtoStructure.Message messageStructure = ServerProtocolControllerWnd.GetMessageStructure(message); return(IsAnyFieldNotExistInMessageInternal(messageStructure, null)); }
/// <summary> /// 从协议的消息结构得到其使用的proto的数据结构,若返回null则表明该消息未使用proto /// </summary> /// <param name="msg"></param> /// <returns></returns> public static ProtocolControlCache_ProtoStructure GetProtoStructure(ProtocolControlCache_Message msg) { if (msg != null) { if (msg.hasProto) { string path = string.Format("{0}/{1}.proto", LocalServerProtoPath, msg.protoData.protoName); ProtocolControlCache_ProtoStructure protoStructure = ProtocolControlCache_ProtoStructure.GetProtoStructure(path); return(protoStructure); } } return(null); }
/// <summary> /// 获取协议中消息对应的proto中的消息结构 /// </summary> /// <param name="message"></param> /// <returns></returns> public static ProtocolControlCache_ProtoStructure.Message GetMessageStructure(ProtocolControlCache_Message message) { if (!message.hasProto) { return(null); } var protoStructure = GetProtoStructure(message); if (protoStructure == null) { return(null); } for (int i = 0; i < protoStructure.Messages.Count; i++) { var messageStructure = protoStructure.Messages[i]; if (messageStructure.MessageName == message.protoData.protoMsgName) { return(messageStructure); } } return(null); }