コード例 #1
0
        public static async Task SerializeAsync(Stream stream, IEnumerable <Document> documents, CancellationToken cancellationToken = default)
        {
            using var buffer = new PooledByteBufferWriter(stream);
            // ReSharper disable once UseAwaitUsing
            using var writer = new Utf8JsonWriter(buffer);

            writer.WriteStartArray();

            foreach (var document in documents)
            {
                writer.WriteStartObject();

                foreach (var(key, attributeValue) in document)
                {
                    writer.WritePropertyName(key);

                    WriteAttributeValue(buffer, writer, in attributeValue);

                    if (buffer.ShouldFlush(writer))
                    {
                        await buffer.FlushAsync(writer, cancellationToken).ConfigureAwait(false);
                    }
                }

                writer.WriteEndObject();
            }

            writer.WriteEndArray();

            await buffer.FlushAsync(writer, cancellationToken).ConfigureAwait(false);
        }
コード例 #2
0
        private async ValueTask WriteValueAsync(Utf8JsonWriter writer, PooledByteBufferWriter bufferWriter, StringAttributeValue attributeValue)
        {
            writer.WriteStringValue(attributeValue.Value);

            if (bufferWriter.ShouldFlush(writer))
            {
                await bufferWriter.FlushAsync(writer).ConfigureAwait(false);
            }
        }
コード例 #3
0
        private void WriteValue(Utf8JsonWriter writer, PooledByteBufferWriter bufferWriter, StringAttributeValue attributeValue)
        {
            writer.WriteStringValue(attributeValue.Value);

            if (bufferWriter.ShouldFlush(writer))
            {
                bufferWriter.FlushAsync(writer);
            }
        }
コード例 #4
0
        public async Task <long> AsyncBenchmark()
        {
            await using var stream = new MemoryStream();
            using var bufferWriter = new PooledByteBufferWriter(stream, 160 * 1024);
            await using var writer = new Utf8JsonWriter(bufferWriter);

            await WriteDataAsync(writer, bufferWriter).ConfigureAwait(false);

            await bufferWriter.FlushAsync(writer).ConfigureAwait(false);

            return(stream.Length);
        }
コード例 #5
0
ファイル: DdbWriter.cs プロジェクト: shimat/EfficientDynamoDb
 public ValueTask FlushAsync() => BufferWriter.FlushAsync(JsonWriter);