| File: System\Buffers\IBufferWriter.cs | Web Access |
| Project: src\runtime\src\libraries\System.Memory\src\System.Memory.csproj (System.Memory) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Buffers { /// <summary> /// Represents an output sink into which <typeparam name="T"/> data can be written. /// </summary> public interface IBufferWriter<T> { /// <summary> /// Notifies <see cref="IBufferWriter{T}"/> that <paramref name="count"/> amount of data was written to the output <see cref="Span{T}"/>/<see cref="Memory{T}"/> /// </summary> /// <remarks> /// You must request a new buffer after calling Advance to continue writing more data and cannot write to a previously acquired buffer. /// </remarks> void Advance(int count); /// <summary> /// Returns a <see cref="Memory{T}"/> to write to that is at least the requested length (specified by <paramref name="sizeHint"/>). /// If no <paramref name="sizeHint"/> is provided (or it's equal to <code>0</code>), some non-empty buffer is returned. /// </summary> /// <remarks> /// This must never return an empty <see cref="Memory{T}"/> but it can throw /// if the requested buffer size is not available. /// </remarks> /// <remarks> /// There is no guarantee that successive calls will return the same buffer or the same-sized buffer. /// </remarks> /// <remarks> /// You must request a new buffer after calling Advance to continue writing more data and cannot write to a previously acquired buffer. /// </remarks> Memory<T> GetMemory(int sizeHint = 0); /// <summary> /// Returns a <see cref="Span{T}"/> to write to that is at least the requested length (specified by <paramref name="sizeHint"/>). /// If no <paramref name="sizeHint"/> is provided (or it's equal to <code>0</code>), some non-empty buffer is returned. /// </summary> /// <remarks> /// This must never return an empty <see cref="Span{T}"/> but it can throw /// if the requested buffer size is not available. /// </remarks> /// <remarks> /// There is no guarantee that successive calls will return the same buffer or the same-sized buffer. /// </remarks> /// <remarks> /// You must request a new buffer after calling Advance to continue writing more data and cannot write to a previously acquired buffer. /// </remarks> Span<T> GetSpan(int sizeHint = 0); } }