public void TestCompressDecompress() { var source = new List <TestMessage>(); for (var i = 0; i < 100; i++) { var newEl = new TestMessage { Created = DateTime.UtcNow, Data = Convert.ToBase64String(new byte[1024]), MessageId = i }; source.Add(newEl); } var json = Newtonsoft.Json.JsonConvert.SerializeObject(source); var sourceBytes = Encoding.UTF8.GetBytes(json); var compressedPage = new ReadOnlyMemory <byte>(sourceBytes).Compress(); var decompressedBytes = compressedPage.Decompress(); var destJson = Encoding.UTF8.GetString(decompressedBytes.ToArray()); var destResult = Newtonsoft.Json.JsonConvert.DeserializeObject <TestMessage[]>(destJson); Assert.AreEqual(sourceBytes.Length, decompressedBytes.Length); Assert.AreEqual(source.Count, destResult.Length); }
public static IReadOnlyList <MessageContentGrpcModel> UnzipMessages(this ReadOnlyMemory <byte> zippedContent) { if (zippedContent.IsEmpty) { return(Array.Empty <MessageContentGrpcModel>()); } var unzippedMemory = zippedContent.Decompress(); return(ProtoBuf.Serializer.Deserialize <List <MessageContentGrpcModel> >(unzippedMemory) as IReadOnlyList <MessageContentGrpcModel> ?? Array.Empty <MessageContentGrpcModel>()); }