internal static void Write(INatsStreamWriter writer, ReadOnlySpan <char> subject, ReadOnlySpan <char> subscriptionId, ReadOnlySpan <char> queueGroup) { var trg = new Span <byte>(new byte[3 + 1 + subject.Length + 1 + (queueGroup.IsEmpty ? 0 : queueGroup.Length + 1) + subscriptionId.Length + NatsEncoder.CrlfBytesLen]); Fill(trg, subject, subscriptionId, queueGroup); writer.Write(trg, false); }
internal static async Task WriteAsync(INatsStreamWriter writer, ReadOnlyMemory <char> subject, ReadOnlyMemory <char> subscriptionId, ReadOnlyMemory <char> queueGroup) { var trg = new Memory <byte>(new byte[3 + 1 + subject.Length + 1 + (queueGroup.IsEmpty ? 0 : queueGroup.Length + 1) + subscriptionId.Length + NatsEncoder.CrlfBytesLen]); Fill(trg.Span, subject.Span, subscriptionId.Span, queueGroup.Span); await writer.WriteAsync(trg, false).ConfigureAwait(false); }
internal static void Write(INatsStreamWriter writer, ReadOnlySpan <char> subscriptionId, int?maxMessages = null) { var maxMessagesString = maxMessages.ToString().AsSpan(); var trg = new Span <byte>(new byte[5 + 1 + subscriptionId.Length + (maxMessagesString.IsEmpty ? 0 : maxMessagesString.Length + 1) + NatsEncoder.CrlfBytesLen]); Fill(trg, subscriptionId, maxMessagesString); writer.Write(trg, false); }
internal static async Task WriteAsync(INatsStreamWriter writer, ReadOnlyMemory <char> subscriptionId, int?maxMessages = null) { var maxMessagesString = maxMessages.ToString().AsMemory(); var trg = new Memory <byte>(new byte[5 + 1 + subscriptionId.Length + (maxMessagesString.IsEmpty ? 0 : maxMessagesString.Length + 1) + NatsEncoder.CrlfBytesLen]); Fill(trg.Span, subscriptionId.Span, maxMessagesString.Span); await writer.WriteAsync(trg, false).ConfigureAwait(false); }
internal static void Write(INatsStreamWriter writer, ReadOnlySpan <char> subject, ReadOnlySpan <char> replyTo, ReadOnlyMemory <byte> body) { var bodySize = body.Length.ToString().AsSpan(); var preBodySize = 3 + 1 + subject.Length + 1 + (replyTo.IsEmpty ? 0 : replyTo.Length + 1) + bodySize.Length + NatsEncoder.CrlfBytesLen; var preBody = new Span <byte>(new byte[preBodySize]); FillPreBody(preBody, subject, replyTo, bodySize); writer.Write(preBody, false); writer.Write(body.Span, false); writer.Write(NatsEncoder.CrlfBytes, false); }
internal static async Task WriteAsync(INatsStreamWriter writer, ReadOnlyMemory <char> subject, ReadOnlyMemory <char> replyTo, ReadOnlyMemory <byte> body) { var bodySize = body.Length.ToString().AsMemory(); var preBodySize = 3 + 1 + subject.Length + 1 + (replyTo.Length > 0 ? replyTo.Length + 1 : 0) + bodySize.Length + NatsEncoder.CrlfBytesLen; var preBody = new Memory <byte>(new byte[preBodySize]); FillPreBody(preBody.Span, subject.Span, replyTo.Span, bodySize.Span); await writer.WriteAsync(preBody, false).ConfigureAwait(false); await writer.WriteAsync(body, false).ConfigureAwait(false); await writer.WriteAsync(NatsEncoder.CrlfBytes, false).ConfigureAwait(false); }
internal Publisher(INatsStreamWriter writer, int maxPayload) { _writer = writer; _maxPayload = maxPayload; }
internal static void Write(INatsStreamWriter writer) => writer.Write(Bytes.Span, true);
internal static Task WriteAsync(INatsStreamWriter writer) => writer.WriteAsync(Bytes, true);