DocSpace-buildtools/common/ASC.Common/Caching/Protobuf.cs

40 lines
1.0 KiB
C#
Raw Normal View History

using System;
2020-08-27 14:01:37 +00:00
using Confluent.Kafka;
2020-08-27 14:01:37 +00:00
using Google.Protobuf;
namespace ASC.Common.Caching
{
public class ProtobufSerializer<T> : ISerializer<T> where T : IMessage<T>, new()
{
public byte[] Serialize(T data, SerializationContext context)
=> data.ToByteArray();
}
public class ProtobufDeserializer<T> : IDeserializer<T> where T : IMessage<T>, new()
{
private readonly MessageParser<T> parser;
public ProtobufDeserializer()
{
parser = new MessageParser<T>(() => new T());
}
public T Deserialize(ReadOnlySpan<byte> data, bool isNull, SerializationContext context)
=> parser.ParseFrom(data.ToArray());
}
2019-08-28 12:58:53 +00:00
public static class GuidExtension
{
public static ByteString ToByteString(this Guid id)
{
return ByteString.CopyFrom(id.ToByteArray());
}
public static Guid FromByteString(this ByteString id)
{
return new Guid(id.ToByteArray());
}
}
}