public override T Deserialize <T>(byte[] bytes) { using (var compressedStream = new MemoryStream(bytes)) using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress)) using (var resultStream = new MemoryStream()) { zipStream.CopyTo(resultStream); resultStream.Position = 0; return((T)ProtobufModel.Deserialize(resultStream, null, typeof(T))); } }
public override byte[] Serialize <T>(T obj) { using (var serializedStream = new MemoryStream()) using (var compressedStream = new MemoryStream()) using (var zipStream = new GZipStream(compressedStream, CompressionMode.Compress)) { ProtobufModel.Serialize(serializedStream, obj); serializedStream.Position = 0; serializedStream.CopyTo(zipStream); zipStream.Close(); return(compressedStream.ToArray()); } }
public void Message_Value_Test() { ProtobufModel model = new ProtobufModel { IntValue = 100, StringValue = "Hello" }; MemoryStream stream = new MemoryStream(); { //Message.Serialize(stream, model); ((IMessage)(Message <ProtobufModel>)model).WriteTo(stream); //Message.Serialize(stream, model); stream.Position = 0; Assert.Equal(stream.Length, ((IMessage)(Message <ProtobufModel>)model).CalculateSize()); var model2 = new MessageMessage <ProtobufModel>(new ProtobufModel()); ((IMessage)model2).MergeFrom(stream); Assert.Equal(model.IntValue, model2.Source.IntValue); Assert.Equal(model.StringValue, model2.Source.StringValue); } { var message = (Message <ProtobufModel>)model; stream.Position = 0; Message.Serialize(stream, model); stream.Position = 0; var model2 = Message <ProtobufModel> .Deserialize(stream); Assert.Equal(model.IntValue, model2.IntValue); Assert.Equal(model.StringValue, model2.StringValue); } }