//---------------------------------------------------------------------------------------- // ScoreDetails //---------------------------------------------------------------------------------------- // see SQLiteMatchDAO.java/commitMatch. We're a little simpler here because the C# type system is // stronger than the Java type system public byte[] EncodeScoreDetails() { FMSScoreDetails details = new FMSScoreDetails(); details.RedAllianceScore = new FMSSkystoneScoreDetail(RedScores, BlueScores.PenaltyPoints); details.BlueAllianceScore = new FMSSkystoneScoreDetail(BlueScores, RedScores.PenaltyPoints); using MemoryStream ms = new MemoryStream(); using (GZipStream gzipOut = new GZipStream(ms, CompressionMode.Compress)) { DefaultContractResolver contractResolver = new DefaultContractResolver { NamingStrategy = new UpperCamelCaseNamingStrategy(true, false), }; JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings { ContractResolver = contractResolver }); using BsonDataWriter bsonDataWriter = new BsonDataWriter(gzipOut); serializer.Serialize(bsonDataWriter, details); } byte[] result = ms.ToArray(); return(result); }
public FMSScoreDetails DecodeScoreDetails() { using GZipStream gzipIn = new GZipStream(new MemoryStream(ScoreDetails), CompressionMode.Decompress); MemoryStream scoreDetailsBson = MiscUtil.ReadFully(gzipIn); scoreDetailsBson.Seek(0, SeekOrigin.Begin); using BsonDataReader bsonReader = new BsonDataReader(scoreDetailsBson); DefaultContractResolver contractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy(true, false) }; JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings { ContractResolver = contractResolver }); FMSScoreDetails details = serializer.Deserialize <FMSScoreDetails>(bsonReader); return(details); }