blob: bbb34b8f26a119a64de1576299512d3febad624b [file] [log] [blame]
using DotPulsar.Internal.Extensions;
using System;
namespace DotPulsar
{
public sealed class MessageMetadata
{
public MessageMetadata() => Metadata = new Internal.PulsarApi.MessageMetadata();
internal Internal.PulsarApi.MessageMetadata Metadata;
public long DeliverAtTime
{
get => Metadata.DeliverAtTime;
set => Metadata.DeliverAtTime = value;
}
public DateTimeOffset DeliverAtTimeAsDateTimeOffset
{
get => Metadata.GetDeliverAtTimeAsDateTimeOffset();
set => Metadata.SetDeliverAtTime(value);
}
public ulong EventTime
{
get => Metadata.EventTime;
set => Metadata.EventTime = value;
}
public DateTimeOffset EventTimeAsDateTimeOffset
{
get => Metadata.GetEventTimeAsDateTimeOffset();
set => Metadata.SetEventTime(value);
}
public string? Key
{
get => Metadata.PartitionKey;
set => Metadata.SetKey(value);
}
public byte[]? KeyBytes
{
get => Metadata.GetKeyAsBytes();
set => Metadata.SetKey(value);
}
public byte[]? OrderingKey
{
get => Metadata.OrderingKey;
set => Metadata.OrderingKey = value;
}
public string? this[string key]
{
get
{
for (var i = 0; i < Metadata.Properties.Count; ++i)
{
var keyValye = Metadata.Properties[i];
if (keyValye.Key == key)
return keyValye.Value;
}
return null;
}
set
{
for (var i = 0; i < Metadata.Properties.Count; ++i)
{
var keyValye = Metadata.Properties[i];
if (keyValye.Key != key)
continue;
keyValye.Value = value;
return;
}
Metadata.Properties.Add(new Internal.PulsarApi.KeyValue { Key = key, Value = value });
}
}
public ulong SequenceId
{
get => Metadata.SequenceId;
set => Metadata.SequenceId = value;
}
}
}