public async Task <CommandSendReceipt> Send(PulsarApi.MessageMetadata metadata, ReadOnlySequence <byte> payload) { metadata.ProducerName = _cachedMetadata.ProducerName; _cachedSendPackage.Metadata = metadata; _cachedSendPackage.Payload = payload; return(await SendPackage(metadata.SequenceId == 0)); }
public static void SetKey(this Metadata metadata, byte[]?key) { if (key is null) { return; } metadata.PartitionKey = Convert.ToBase64String(key); metadata.PartitionKeyB64Encoded = true; }
// Key public static byte[]? GetKeyAsBytes(this Metadata metadata) { if (metadata.PartitionKey is null) { return(null); } if (metadata.PartitionKeyB64Encoded) { return(Convert.FromBase64String(metadata.PartitionKey)); } return(Encoding.UTF8.GetBytes(metadata.PartitionKey)); }
public static ReadOnlySequence <byte> Serialize(BaseCommand command, PulsarApi.MessageMetadata metadata, ReadOnlySequence <byte> payload) { var commandBytes = Serialize <BaseCommand>(command); var commandSizeBytes = ToBigEndianBytes((uint)commandBytes.Length); var metadataBytes = Serialize(metadata); var metadataSizeBytes = ToBigEndianBytes((uint)metadataBytes.Length); var sb = new SequenceBuilder <byte>().Append(metadataSizeBytes).Append(metadataBytes).Append(payload); var checksum = Crc32C.Calculate(sb.Build()); return(sb.Prepend(ToBigEndianBytes(checksum)) .Prepend(Constants.MagicNumber) .Prepend(commandBytes) .Prepend(commandSizeBytes) .Prepend(ToBigEndianBytes((uint)sb.Length)) .Build()); }
public ProducerChannel(ulong id, string name, SequenceId sequenceId, IConnection connection) { _cachedMetadata = new PulsarApi.MessageMetadata { ProducerName = name }; var commandSend = new CommandSend { ProducerId = id, NumMessages = 1 }; _cachedSendPackage = new SendPackage(commandSend, _cachedMetadata); _id = id; _sequenceId = sequenceId; _connection = connection; }
public ProducerStream(ulong id, string name, SequenceId sequenceId, Connection connection, IFaultStrategy faultStrategy, IProducerProxy proxy) { _cachedMetadata = new PulsarApi.MessageMetadata { ProducerName = name }; var commandSend = new CommandSend { ProducerId = id, NumMessages = 1 }; _cachedSendPackage = new SendPackage(commandSend, _cachedMetadata); _id = id; _sequenceId = sequenceId; _connection = connection; _faultStrategy = faultStrategy; _proxy = proxy; }
public Message Add(MessageIdData messageId, PulsarApi.MessageMetadata metadata, ReadOnlySequence <byte> data) { if (_trackBatches) { _batches.AddLast(new Batch(messageId, metadata.NumMessagesInBatch)); } long index = 0; for (var i = 0; i < metadata.NumMessagesInBatch; ++i) { var singleMetadataSize = data.ReadUInt32(index, true); index += 4; var singleMetadata = Serializer.Deserialize <SingleMessageMetadata>(data.Slice(index, singleMetadataSize)); index += singleMetadataSize; var singleMessageId = new MessageId(messageId.LedgerId, messageId.EntryId, messageId.Partition, i); var message = new Message(singleMessageId, metadata, singleMetadata, data.Slice(index, singleMetadata.PayloadSize)); _messages.Enqueue(message); index += (uint)singleMetadata.PayloadSize; } return(_messages.Dequeue()); }
public SendPackage(CommandSend command, PulsarApi.MessageMetadata metadata) { Command = command; Metadata = metadata; }
private async ValueTask <MessageId> InternalSend(PulsarApi.MessageMetadata metadata, ReadOnlySequence <byte> data, CancellationToken cancellationToken) { var response = await _channel.Send(metadata, data, cancellationToken).ConfigureAwait(false); return(response.MessageId.ToMessageId()); }
public async ValueTask <MessageId> Send(PulsarApi.MessageMetadata metadata, ReadOnlySequence <byte> data, CancellationToken cancellationToken) => await _executor.Execute(() => InternalSend(metadata, data, cancellationToken), cancellationToken).ConfigureAwait(false);
public static DateTimeOffset GetDeliverAtTimeAsDateTimeOffset(this Metadata metadata) => DateTimeOffset.FromUnixTimeMilliseconds(metadata.DeliverAtTime);
public Task <CommandSendReceipt> Send(PulsarApi.MessageMetadata metadata, byte[] payload) => throw GetException();
public static void SetKey(this Metadata metadata, string?key) { metadata.PartitionKey = key; metadata.PartitionKeyB64Encoded = false; }
public static void SetEventTime(this Metadata metadata, DateTimeOffset timestamp) => metadata.EventTime = (ulong)timestamp.ToUnixTimeMilliseconds();
public static DateTimeOffset GetEventTimeAsDateTimeOffset(this Metadata metadata) => DateTimeOffset.FromUnixTimeMilliseconds((long)metadata.EventTime);
public static void SetEventTime(this Metadata metadata, DateTime timestamp) => metadata.SetEventTime(new DateTimeOffset(timestamp));
// Event time public static DateTime GetEventTimeAsDateTime(this Metadata metadata) => metadata.GetEventTimeAsDateTimeOffset().UtcDateTime;
public static void SetDeliverAtTime(this Metadata metadata, DateTimeOffset timestamp) => metadata.DeliverAtTime = timestamp.ToUnixTimeMilliseconds();
public Task <CommandSendReceipt> Send(PulsarApi.MessageMetadata metadata, ReadOnlySequence <byte> payload) => throw GetException();
public static byte[]? GetKeyAsBytes(this Metadata metadata) => metadata.PartitionKeyB64Encoded ? Convert.FromBase64String(metadata.PartitionKey) : null;