Files
UnrealEngineUWP/Engine/Source/Programs/Horde/Horde.Server/Utilities/ConditionSerializer.cs
Ben Marsh 637187c618 Horde: Rename the Horde.Build project to Horde.Server.
#preflight none

[CL 24688228 by Ben Marsh in ue5-main branch]
2023-03-17 09:50:40 -04:00

49 lines
1.3 KiB
C#

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