blob: aa80f3ce57d18b6e24ec07905d37f16754d26795 [file] [log] [blame]
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 ulong EventTime
{
get => Metadata.EventTime;
set => Metadata.EventTime = value;
}
public string Key
{
get => Metadata.PartitionKey;
set
{
Metadata.PartitionKey = value;
Metadata.PartitionKeyB64Encoded = false;
}
}
public byte[]? KeyBytes
{
get
{
if (Metadata.PartitionKey is null)
return null;
return Convert.FromBase64String(Metadata.PartitionKey);
}
set
{
Metadata.PartitionKey = Convert.ToBase64String(value);
Metadata.PartitionKeyB64Encoded = true;
}
}
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;
}
}
}