Пример #1
0
 /// <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));
 }
Пример #2
0
 /// <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);
 }
Пример #3
0
    /// <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);
    }