| 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; |
| } |
| } |
| } |