//[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--; } } }
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); } }
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); }
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); }
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); } }
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); } }
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); }
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); } }
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); } }
/// <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); } }