| /* |
| * 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.Abstractions; |
| |
| using System; |
| using System.Buffers; |
| using System.Collections.Generic; |
| |
| /// <summary> |
| /// A message abstraction. |
| /// </summary> |
| public interface IMessage |
| { |
| /// <summary> |
| /// The id of the message. |
| /// </summary> |
| MessageId MessageId { get; } |
| |
| /// <summary> |
| /// The raw payload of the message. |
| /// </summary> |
| ReadOnlySequence<byte> Data { get; } |
| |
| /// <summary> |
| /// The name of the producer who produced the message. |
| /// </summary> |
| string ProducerName { get; } |
| |
| /// <summary> |
| /// The schema version of the message. |
| /// </summary> |
| byte[]? SchemaVersion { get; } |
| |
| /// <summary> |
| /// The sequence id of the message. |
| /// </summary> |
| ulong SequenceId { get; } |
| |
| /// <summary> |
| /// The redelivery count (maintained by the broker) of the message. |
| /// </summary> |
| uint RedeliveryCount { get; } |
| |
| /// <summary> |
| /// Check whether the message has an event time. |
| /// </summary> |
| bool HasEventTime { get; } |
| |
| /// <summary> |
| /// The event time of the message as unix time in milliseconds. |
| /// </summary> |
| ulong EventTime { get; } |
| |
| /// <summary> |
| /// The event time of the message as an UTC DateTime. |
| /// </summary> |
| public DateTime EventTimeAsDateTime { get; } |
| |
| /// <summary> |
| /// The event time of the message as a DateTimeOffset with an offset of 0. |
| /// </summary> |
| public DateTimeOffset EventTimeAsDateTimeOffset { get; } |
| |
| /// <summary> |
| /// Check whether the key been base64 encoded. |
| /// </summary> |
| bool HasBase64EncodedKey { get; } |
| |
| /// <summary> |
| /// Check whether the message has a key. |
| /// </summary> |
| bool HasKey { get; } |
| |
| /// <summary> |
| /// The key as a string. |
| /// </summary> |
| string? Key { get; } |
| |
| /// <summary> |
| /// The key as bytes. |
| /// </summary> |
| byte[]? KeyBytes { get; } |
| |
| /// <summary> |
| /// Check whether the message has an ordering key. |
| /// </summary> |
| bool HasOrderingKey { get; } |
| |
| /// <summary> |
| /// The ordering key of the message. |
| /// </summary> |
| byte[]? OrderingKey { get; } |
| |
| /// <summary> |
| /// The publish time of the message as unix time in milliseconds. |
| /// </summary> |
| ulong PublishTime { get; } |
| |
| /// <summary> |
| /// The publish time of the message as an UTC DateTime. |
| /// </summary> |
| public DateTime PublishTimeAsDateTime { get; } |
| |
| /// <summary> |
| /// The publish time of the message as a DateTimeOffset with an offset of 0. |
| /// </summary> |
| public DateTimeOffset PublishTimeAsDateTimeOffset { get; } |
| |
| /// <summary> |
| /// The properties of the message. |
| /// </summary> |
| public IReadOnlyDictionary<string, string> Properties { get; } |
| } |