blob: 3e558fc5eed055df96d9cf74d4ccbc8c66f50828 [file] [log] [blame]
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace DotPulsar.Internal.Extensions
{
using System;
using Metadata = PulsarApi.MessageMetadata;
public static class MessageMetadataExtensions
{
// Deliver at
public static DateTime GetDeliverAtTimeAsDateTime(this Metadata metadata)
=> metadata.GetDeliverAtTimeAsDateTimeOffset().UtcDateTime;
public static void SetDeliverAtTime(this Metadata metadata, DateTime timestamp)
=> metadata.SetDeliverAtTime(new DateTimeOffset(timestamp));
public static DateTimeOffset GetDeliverAtTimeAsDateTimeOffset(this Metadata metadata)
=> DateTimeOffset.FromUnixTimeMilliseconds(metadata.DeliverAtTime);
public static void SetDeliverAtTime(this Metadata metadata, DateTimeOffset timestamp)
=> metadata.DeliverAtTime = timestamp.ToUnixTimeMilliseconds();
// Event time
public static DateTime GetEventTimeAsDateTime(this Metadata metadata)
=> metadata.GetEventTimeAsDateTimeOffset().UtcDateTime;
public static void SetEventTime(this Metadata metadata, DateTime timestamp)
=> metadata.SetEventTime(new DateTimeOffset(timestamp));
public static DateTimeOffset GetEventTimeAsDateTimeOffset(this Metadata metadata)
=> DateTimeOffset.FromUnixTimeMilliseconds((long) metadata.EventTime);
public static void SetEventTime(this Metadata metadata, DateTimeOffset timestamp)
=> metadata.EventTime = (ulong) timestamp.ToUnixTimeMilliseconds();
// Key
public static byte[]? GetKeyAsBytes(this Metadata metadata)
=> metadata.PartitionKeyB64Encoded ? Convert.FromBase64String(metadata.PartitionKey) : null;
public static void SetKey(this Metadata metadata, string? key)
{
metadata.PartitionKey = key;
metadata.PartitionKeyB64Encoded = false;
}
public static void SetKey(this Metadata metadata, byte[]? key)
{
if (key is null)
return;
metadata.PartitionKey = Convert.ToBase64String(key);
metadata.PartitionKeyB64Encoded = true;
}
}
}