// Copyright Epic Games, Inc. All Rights Reserved. using System; using EpicGames.Core; using MongoDB.Bson.Serialization; namespace HordeServer.Utilities { /// /// Serializer for ContentHash objects /// public sealed class ContentHashSerializer : IBsonSerializer { /// public Type ValueType => typeof(ContentHash); /// void IBsonSerializer.Serialize(BsonSerializationContext context, BsonSerializationArgs args, object value) { Serialize(context, args, (ContentHash)value); } /// object IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) { return ((IBsonSerializer)this).Deserialize(context, args); } /// public ContentHash Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args) { if (context.Reader.CurrentBsonType == MongoDB.Bson.BsonType.ObjectId) { return new ContentHash(context.Reader.ReadObjectId().ToByteArray()); } else { return ContentHash.Parse(context.Reader.ReadString()); } } /// public void Serialize(BsonSerializationContext context, BsonSerializationArgs args, ContentHash value) { context.Writer.WriteString(value.ToString()); } } }