protected override StringRequestInfo ProcessMatchedRequest(byte[] readBuffer, int offset, int length)
        {
            //TODO LIST: decode the readBuffer

            byte[] src = CodeUtils.adDecode(readBuffer.CloneRange(offset, length - 2));

            String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");

            //TODO: construct the receving adler data
            //String data = Encoding.ASCII.GetString(src, 0, src.Length);
            //preamble(1B) version(1B) leng(2B) deviceId(4B) Pdutype(1B) seq(1B) oid-list/tag-list(N) crc(2B)
            String preamble = data.Substring(0, 2);
            String version  = data.Substring(2, 2);
            String leng     = data.Substring(4, 4);
            String deviceId = data.Substring(8, 8);
            String pduType  = data.Substring(16, 2);
            String seq      = data.Substring(18, 2);
            String settings = data.Substring(20, data.Length - 4 - 12 * 2); //减去结尾回车换行符号,减去总的字节数
            String crcs     = data.Substring(data.Length - 8, 4);

            String result = "Adler:" + preamble + "," + version + "," +
                            leng + "," + deviceId + "," + pduType + "," +
                            seq + "," + settings + "," + crcs;

            BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");

            return(m_Parser.ParseRequestInfo(result));
        }
        protected override StringRequestInfo ResolveRequestInfo(ArraySegment <byte> header, byte[] bodyBuffer, int offset, int length)
        {
            byte[] tmpHead = header.Array;
            byte[] tmpBody = bodyBuffer.CloneRange(offset, length);

            byte[] src = new byte[tmpHead.Length + tmpBody.Length];

            tmpHead.CopyTo(src, 0);
            tmpBody.CopyTo(src, tmpHead.Length);

            String data = BitConverter.ToString(src, 0, src.Length).Replace("-", "");

            //TODO: construct the receving casic data
            String preamble    = data.Substring(0, 2);
            String version     = data.Substring(2, 2);
            String leng        = data.Substring(4, 4);
            String deviceId    = data.Substring(8, 12);
            String routeFlag   = data.Substring(20, 2);
            String dstNodeAddr = data.Substring(22, 4);
            String pduType     = data.Substring(26, 4);
            String seq         = data.Substring(30, 2);
            String settings    = data.Substring(32, data.Length - 18 * 2);
            String crcs        = data.Substring(data.Length - 4, 4);

            String result = "Casic:" + preamble + "," + version + "," +
                            leng + "," + deviceId + "," + routeFlag + "," + dstNodeAddr + "," + pduType + "," +
                            seq + "," + settings + "," + crcs;

            BasicRequestInfoParser m_Parser = new BasicRequestInfoParser(":", ",");

            return(m_Parser.ParseRequestInfo(result));
            //  return new BinaryRequestInfo(Encoding.UTF8.GetString(header.Array, header.Offset, 4), bodyBuffer.CloneRange(offset, length));
        }