Ejemplo n.º 1
0
 public static ErlType complexAnalyse(ByteBuffer data)
 {
     int position = data.position;
     int num2 = data.readByte();
     data.position = position;
     if ((num2 == ErlArray.TAG[0]) || (num2 == ErlArray.TAG[1]))
     {
         ErlArray array = new ErlArray(null);
         array.bytesRead(data);
         return array;
     }
     switch (num2)
     {
     case 0x6a:
         {
             ErlNullList list = new ErlNullList();
             list.bytesRead(data);
             return list;
         }
     case 0x6c:
         {
             ErlList list2 = new ErlList(null);
             list2.bytesRead(data);
             return list2;
         }
     case 100:
         {
             ErlAtom atom = new ErlAtom(null);
             atom.bytesRead(data);
             return atom;
         }
     case 0x6b:
         {
             ErlString str = new ErlString(null);
             str.sampleBytesRead(data);
             return str;
         }
     case 110:
         {
             ErlLong @long = new ErlLong();
             @long.bytesRead(data);
             return @long;
         }
     case 0x6d:
         {
             ErlByteArray array2 = new ErlByteArray(null);
             array2.bytesRead(data);
             return array2;
         }
     }
     return null;
 }
Ejemplo n.º 2
0
    /// <summary>
    /// 二进制数据解析 走到这里,肯定是erlang标准二进制数据
    /// </summary>
    /// <returns>The analyse.</returns>
    /// <param name="data">Data.</param>
    public static ErlType  complexAnalyse(ByteBuffer data)
    {
        int position = data.position;
        int tag      = data.readByte();

        data.position = position;
        //			 MonoBehaviour.print("----------complexAnalyse--------------"+tag);
        if (tag == ErlArray.TAG [0] || tag == ErlArray.TAG [1])
        {
            ErlArray erlArray = new ErlArray(null);
            erlArray.bytesRead(data);
            return(erlArray);
        }
        else if (tag == ErlNullList.TAG)
        {
            ErlNullList erlNullList = new ErlNullList();
            erlNullList.bytesRead(data);
            return(erlNullList);
        }
        else if (tag == ErlList.TAG)
        {
            ErlList erlList = new ErlList(null);
            erlList.bytesRead(data);
            return(erlList);
        }
        else if (tag == ErlAtom.TAG)
        {
            ErlAtom erlAtom = new ErlAtom(null);
            erlAtom.bytesRead(data);
            return(erlAtom);
        }
        else if (tag == ErlString.TAG)
        {
            ErlString erlString = new ErlString(null);
            erlString.sampleBytesRead(data);
            return(erlString);
        }
        else
        {
            return(null);
        }
    }