コード例 #1
0
 public async ValueTask SendAsync(
     byte[] payload,
     CancellationToken cancellationToken = default)
 {
     await _networkClient.SendAsync(payload, cancellationToken)
     .ConfigureAwait(false);
 }
コード例 #2
0
        public async ValueTask SendAsync(
            TSendPayload payload,
            CancellationToken cancellationToken = default)
        {
            var buffer = new MemoryStream();

            await using var _ = buffer.ConfigureAwait(false);
            var writer = new KafkaWriter(buffer);

            await using (writer.ConfigureAwait(false))
            {
                await payload
                .WriteToAsync(writer, cancellationToken)
                .ConfigureAwait(false);
            }

            var lengthBuffer = new MemoryStream();

            await using (lengthBuffer
                         .ConfigureAwait(false))
            {
                var lengthWriter = new KafkaWriter(lengthBuffer);
                await using (lengthWriter.ConfigureAwait(false))
                {
                    await lengthWriter
                    .WriteInt32Async(Int32.From((int)buffer.Length), cancellationToken)
                    .ConfigureAwait(false);
                }

                await _networkClient.SendAsync(
                    lengthBuffer
                    .GetBuffer()
                    .AsMemory()
                    .Slice(0, (int)lengthBuffer.Length),
                    cancellationToken)
                .ConfigureAwait(false);
            }

            await _networkClient.SendAsync(
                buffer.GetBuffer().AsMemory()
                .Slice(0, (int)buffer.Length),
                cancellationToken)
            .ConfigureAwait(false);
        }
コード例 #3
0
 internal static async Task SendAsync(
     this INetworkClient networkClient,
     Frame frame,
     CancellationToken cancellationToken = default)
 {
     await foreach (var bufferSequence in frame
                    .WriteAsync(cancellationToken)
                    .ConfigureAwait(false))
     {
         foreach (var buffer in bufferSequence)
         {
             await networkClient.SendAsync(
                 buffer,
                 cancellationToken)
             .ConfigureAwait(false);
         }
     }
 }
コード例 #4
0
 public async ValueTask <int> SendAsync(ReadOnlyMemory <byte> buffer, CancellationToken cancellationToken = default)
 {
     return(await _second
            .SendAsync(buffer, cancellationToken)
            .ConfigureAwait(false));
 }