Пример #1
0
        //[InlineData(1000000)]
        //[InlineData(10000000)]
        //[InlineData(100000000)]
        public void ArrayPoolTest1(int count)
        {
            var arrayPool = ArrayPool <byte> .Create();

            while (count >= 0)
            {
                var    buffer = arrayPool.Rent(4096);
                byte[] bytes  = "7E 7D 02 7D 01 7D 02 7D 01 7E".ToHexBytes();
                var    jT808MessagePackReader = new JT808MessagePackReader(bytes);
                jT808MessagePackReader.Decode(buffer);
                try
                {
                    Assert.Equal(JT808Package.BeginFlag, jT808MessagePackReader.ReadStart());
                    Assert.Equal(0x7E, jT808MessagePackReader.ReadByte());
                    Assert.Equal(0x7D, jT808MessagePackReader.ReadByte());
                    Assert.Equal(0x7E, jT808MessagePackReader.ReadByte());
                    Assert.Equal(0x7D, jT808MessagePackReader.ReadByte());
                    Assert.Equal(JT808Package.EndFlag, jT808MessagePackReader.ReadEnd());
                    Assert.Equal(6, jT808MessagePackReader.ReaderCount);
                }
                catch (Exception)
                {
                }
                finally
                {
                    arrayPool.Return(buffer);
                    count--;
                }
            }
        }
Пример #2
0
 public byte[] AnalyzeJsonBuffer <T>(ReadOnlySpan <byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096)
 {
     byte[] buffer = JT808ArrayPool.Rent(minBufferSize);
     try
     {
         JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version);
         if (CheckPackageType(typeof(T)))
         {
             jT808MessagePackReader.Decode(buffer);
         }
         var analyze = jT808Config.GetAnalyze <T>();
         using (MemoryStream memoryStream = new MemoryStream())
             using (Utf8JsonWriter utf8JsonWriter = new Utf8JsonWriter(memoryStream, options))
             {
                 if (!CheckPackageType(typeof(T)))
                 {
                     utf8JsonWriter.WriteStartObject();
                 }
                 analyze.Analyze(ref jT808MessagePackReader, utf8JsonWriter, jT808Config);
                 if (!CheckPackageType(typeof(T)))
                 {
                     utf8JsonWriter.WriteEndObject();
                 }
                 utf8JsonWriter.Flush();
                 return(memoryStream.ToArray());
             }
     }
     finally
     {
         JT808ArrayPool.Return(buffer);
     }
 }
Пример #3
0
        public void ReadEncodeTest2()
        {
            byte[] bytes = "7E 00 02 00 00 04 00 21 67 92 87 00 2B 7D 02 7E".ToHexBytes();
            JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes);

            jT808MessagePackReader.Decode();
            Assert.Equal(0x7E, jT808MessagePackReader.CalculateCheckXorCode);
        }
Пример #4
0
        public void ReadEncodeTest()
        {
            byte[] bytes = "7E 7D 02 7D 01 7D 02 7D 01 7E".ToHexBytes();
            JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes);

            jT808MessagePackReader.Decode(new byte[4096]);
            Assert.Equal(JT808Package.BeginFlag, jT808MessagePackReader.ReadStart());
            Assert.Equal(0x7E, jT808MessagePackReader.ReadByte());
            Assert.Equal(0x7D, jT808MessagePackReader.ReadByte());
            Assert.Equal(0x7E, jT808MessagePackReader.ReadByte());
            Assert.Equal(0x7D, jT808MessagePackReader.ReadByte());
            Assert.Equal(JT808Package.EndFlag, jT808MessagePackReader.ReadEnd());
            Assert.Equal(6, jT808MessagePackReader.ReaderCount);
        }
Пример #5
0
 public JT808Package Deserialize(ReadOnlySpan <byte> bytes, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096)
 {
     byte[] buffer = JT808ArrayPool.Rent(minBufferSize);
     try
     {
         JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version);
         jT808MessagePackReader.Decode(buffer);
         return(jT808Package.Deserialize(ref jT808MessagePackReader, jT808Config));
     }
     finally
     {
         JT808ArrayPool.Return(buffer);
     }
 }
Пример #6
0
 public JT808Package Deserialize(ReadOnlySpan <byte> bytes, int minBufferSize = 4096)
 {
     byte[] buffer = JT808ArrayPool.Rent(minBufferSize);
     try
     {
         JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes);
         jT808MessagePackReader.Decode(buffer);
         return(JT808PackageFormatter.Instance.Deserialize(ref jT808MessagePackReader, jT808Config));
     }
     finally
     {
         JT808ArrayPool.Return(buffer);
     }
 }
Пример #7
0
        public void JT808MessagePackReaderConstructorTest()
        {
            byte[] bytes = "7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E".ToHexBytes();
            JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes);

            jT808MessagePackReader.Decode(new byte[4096]);
            Assert.Equal(0x13, jT808MessagePackReader.CalculateCheckXorCode);
            Assert.Equal(jT808MessagePackReader.SrcBuffer.Length, bytes.Length);
            byte[] bytes1 = "7E 02 00 00 26 12 34 56 78 90 12 00 7E 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 13 7E".ToHexBytes();
            //7E02000026123456789012007E000000010000000200BA7F0E07E4F11C0028003C00001810151010100104000000640202007D137D
            //7E02000026123456789012007E000000010000000200BA7F0E07E4F11C0028003C00001810151010100104000000640202007D137E
            var a = jT808MessagePackReader.Reader.ToArray().ToHexString();

            Assert.Equal(jT808MessagePackReader.Reader.ToArray(), bytes1);
        }
Пример #8
0
 public dynamic Deserialize(ReadOnlySpan <byte> bytes, Type type, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096)
 {
     byte[] buffer = JT808ArrayPool.Rent(minBufferSize);
     try
     {
         var formatter = jT808Config.GetMessagePackFormatterByType(type);
         JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version);
         if (CheckPackageType(type))
         {
             jT808MessagePackReader.Decode(buffer);
         }
         return(JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(formatter, ref jT808MessagePackReader, jT808Config));
     }
     finally
     {
         JT808ArrayPool.Return(buffer);
     }
 }
Пример #9
0
 public T Deserialize <T>(ReadOnlySpan <byte> bytes, JT808Version version = JT808Version.JTT2013, int minBufferSize = 4096)
 {
     byte[] buffer = JT808ArrayPool.Rent(minBufferSize);
     try
     {
         JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version);
         if (CheckPackageType(typeof(T)))
         {
             jT808MessagePackReader.Decode(buffer);
         }
         var formatter = jT808Config.GetMessagePackFormatter <T>();
         return(formatter.Deserialize(ref jT808MessagePackReader, jT808Config));
     }
     finally
     {
         JT808ArrayPool.Return(buffer);
     }
 }
Пример #10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="bytes"></param>
 /// <param name="version"></param>
 /// <param name="options"></param>
 /// <param name="minBufferSize"></param>
 /// <returns></returns>
 public byte[] AnalyzeJsonBuffer(ReadOnlySpan <byte> bytes, JT808Version version = JT808Version.JTT2013, JsonWriterOptions options = default, int minBufferSize = 8096)
 {
     byte[] buffer = JT808ArrayPool.Rent(minBufferSize);
     try
     {
         JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes, version);
         jT808MessagePackReader.Decode(buffer);
         using MemoryStream memoryStream     = new MemoryStream();
         using Utf8JsonWriter utf8JsonWriter = new Utf8JsonWriter(memoryStream, options);
         jT808Package.Analyze(ref jT808MessagePackReader, utf8JsonWriter, jT808Config);
         utf8JsonWriter.Flush();
         return(memoryStream.ToArray());
     }
     finally
     {
         JT808ArrayPool.Return(buffer);
     }
 }