// Copyright Epic Games, Inc. All Rights Reserved. using System; using EpicGames.Horde.Common; using MongoDB.Bson; using MongoDB.Bson.Serialization; namespace HordeServer.Utilities { /// /// Serializer for Condition objects /// public sealed class ConditionSerializer : IBsonSerializer { /// public Type ValueType => typeof(Condition); /// void IBsonSerializer.Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value) => Serialize(context, args, (Condition)value); /// object IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) => Deserialize(context, args); /// public Condition Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) { if (context.Reader.CurrentBsonType == BsonType.Null) { context.Reader.ReadNull(); return null!; } return Condition.Parse(context.Reader.ReadString()); } /// public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, Condition? value) { if (value == null) { context.Writer.WriteNull(); } else { context.Writer.WriteString(value.ToString()); } } } }