/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit.MessagePack/Serialization/MessagePackMessageBody.cs
45 строк
1 KB
Marcus Christensen
Add support for MessagePack serialization.
15 окт 2024, 16:49
15 окт 2024, 16:49
faeebdf
Код
Авторство
О чём код?
namespace MassTransit.Serialization; using System; using System.IO; using MessagePack; public class MessagePackMessageBody<TMessage> : MessageBody where TMessage : class { public long? Length => _lazyMessagePackSerializedObject.Value.Length; readonly Lazy<byte[]> _lazyMessagePackSerializedObject; public MessagePackMessageBody(SendContext<TMessage> context, MessagePackEnvelope? envelope = null) { _lazyMessagePackSerializedObject = new Lazy<byte[]>(() => { var envelopeToSerialize = envelope ?? new MessagePackEnvelope(context, context.Message); return MessagePackSerializer.Serialize(envelopeToSerialize, InternalMessagePackResolver.Options); }); } public MessagePackMessageBody(TMessage message) { _lazyMessagePackSerializedObject = new Lazy<byte[]>(() => MessagePackSerializer.Serialize(message, InternalMessagePackResolver.Options)); } public Stream GetStream() { return new MemoryStream(_lazyMessagePackSerializedObject.Value, false); } public byte[] GetBytes() { return _lazyMessagePackSerializedObject.Value; } public string GetString() { return Convert.ToBase64String(_lazyMessagePackSerializedObject.Value); } }