<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets</name>
    </assembly>
    <members>
        <member name="P:Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.IOQueueCount">
            <summary>
            The number of I/O queues used to process requests. Set to 0 to directly schedule I/O to the ThreadPool.
            </summary>
            <remarks>
            Defaults to <see cref="P:System.Environment.ProcessorCount" /> rounded down and clamped between 1 and 16.
            </remarks>
        </member>
        <member name="P:Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.WaitForDataBeforeAllocatingBuffer">
            <summary>
            Wait until there is data available to allocate a buffer. Setting this to false can increase throughput at the cost of increased memory usage.
            </summary>
            <remarks>
            Defaults to true.
            </remarks>
        </member>
        <member name="P:Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.NoDelay">
            <summary>
            Set to false to enable Nagle's algorithm for all connections.
            </summary>
            <remarks>
            Defaults to true.
            </remarks>
        </member>
        <member name="P:Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.Backlog">
            <summary>
            The maximum length of the pending connection queue.
            </summary>
            <remarks>
            Defaults to 512.
            </remarks>
        </member>
        <member name="P:Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.UnsafePreferInlineScheduling">
            <summary>
            Inline application and transport continuations instead of dispatching to the threadpool.
            </summary>
            <remarks>
            This will run application code on the IO thread which is why this is unsafe.
            It is recommended to set the DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS environment variable to '1' when using this setting to also inline the completions
            at the runtime layer as well.
            This setting can make performance worse if there is expensive work that will end up holding onto the IO thread for longer than needed.
            Test to make sure this setting helps performance.
            </remarks>
        </member>
        <member name="P:Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketsStrings.FileHandleEndPointNotSupported">
            <summary>The Socket transport does not support binding to file handles. Consider using the libuv transport instead.</summary>
        </member>
        <member name="P:Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketsStrings.OnlyIPEndPointsSupported">
            <summary>Only ListenType.IPEndPoint is supported by the Socket Transport. https://go.microsoft.com/fwlink/?linkid=874850</summary>
        </member>
        <member name="P:Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketsStrings.TransportAlreadyBound">
            <summary>Transport is already bound.</summary>
        </member>
        <member name="T:Microsoft.AspNetCore.Hosting.WebHostBuilderSocketExtensions">
            <summary>
            <see cref="T:Microsoft.AspNetCore.Hosting.IWebHostBuilder" /> extension methods to configure the Socket transport to be used by Kestrel.
            </summary>
        </member>
        <member name="M:Microsoft.AspNetCore.Hosting.WebHostBuilderSocketExtensions.UseSockets(Microsoft.AspNetCore.Hosting.IWebHostBuilder)">
            <summary>
            Specify Sockets as the transport to be used by Kestrel.
            </summary>
            <param name="hostBuilder">
            The Microsoft.AspNetCore.Hosting.IWebHostBuilder to configure.
            </param>
            <returns>
            The Microsoft.AspNetCore.Hosting.IWebHostBuilder.
            </returns>
        </member>
        <member name="M:Microsoft.AspNetCore.Hosting.WebHostBuilderSocketExtensions.UseSockets(Microsoft.AspNetCore.Hosting.IWebHostBuilder,System.Action{Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions})">
            <summary>
            Specify Sockets as the transport to be used by Kestrel.
            </summary>
            <param name="hostBuilder">
            The Microsoft.AspNetCore.Hosting.IWebHostBuilder to configure.
            </param>
            <param name="configureOptions">
            A callback to configure Libuv options.
            </param>
            <returns>
            The Microsoft.AspNetCore.Hosting.IWebHostBuilder.
            </returns>
        </member>
        <member name="T:System.Buffers.DiagnosticMemoryPool">
            <summary>
            Used to allocate and distribute re-usable blocks of memory.
            </summary>
        </member>
        <member name="F:System.Buffers.DiagnosticMemoryPool.AnySize">
            <summary>
            This default value passed in to Rent to use the default value for the pool.
            </summary>
        </member>
        <member name="T:System.Buffers.DiagnosticPoolBlock">
            <summary>
            Block tracking object used by the byte buffer memory pool. A slab is a large allocation which is divided into smaller blocks. The
            individual blocks are then treated as independent array segments.
            </summary>
        </member>
        <member name="F:System.Buffers.DiagnosticPoolBlock._pool">
            <summary>
            Back-reference to the memory pool which this block was allocated from. It may only be returned to this pool.
            </summary>
        </member>
        <member name="M:System.Buffers.DiagnosticPoolBlock.#ctor(System.Buffers.DiagnosticMemoryPool,System.Buffers.IMemoryOwner{System.Byte})">
            <summary>
            This object cannot be instantiated outside of the static Create method
            </summary>
        </member>
        <member name="T:System.Buffers.MemoryPoolBlock">
            <summary>
            Block tracking object used by the byte buffer memory pool. A slab is a large allocation which is divided into smaller blocks. The
            individual blocks are then treated as independent array segments.
            </summary>
        </member>
        <member name="M:System.Buffers.MemoryPoolBlock.#ctor(System.Buffers.SlabMemoryPool,System.Buffers.MemoryPoolSlab,System.Int32,System.Int32)">
            <summary>
            This object cannot be instantiated outside of the static Create method
            </summary>
        </member>
        <member name="P:System.Buffers.MemoryPoolBlock.Pool">
            <summary>
            Back-reference to the memory pool which this block was allocated from. It may only be returned to this pool.
            </summary>
        </member>
        <member name="P:System.Buffers.MemoryPoolBlock.Slab">
            <summary>
            Back-reference to the slab from which this block was taken, or null if it is one-time-use memory.
            </summary>
        </member>
        <member name="T:System.Buffers.MemoryPoolSlab">
            <summary>
            Slab tracking object used by the byte buffer memory pool. A slab is a large allocation which is divided into smaller blocks. The
            individual blocks are then treated as independent array segments.
            </summary>
        </member>
        <member name="P:System.Buffers.MemoryPoolSlab.IsActive">
            <summary>
            True as long as the blocks from this slab are to be considered returnable to the pool. In order to shrink the
            memory pool size an entire slab must be removed. That is done by (1) setting IsActive to false and removing the
            slab from the pool's _slabs collection, (2) as each block currently in use is Return()ed to the pool it will
            be allowed to be garbage collected rather than re-pooled, and (3) when all block tracking objects are garbage
            collected and the slab is no longer references the slab will be garbage collected
            </summary>
        </member>
        <member name="T:System.Buffers.SlabMemoryPool">
            <summary>
            Used to allocate and distribute re-usable blocks of memory.
            </summary>
        </member>
        <member name="F:System.Buffers.SlabMemoryPool._blockSize">
            <summary>
            The size of a block. 4096 is chosen because most operating systems use 4k pages.
            </summary>
        </member>
        <member name="F:System.Buffers.SlabMemoryPool._blockCount">
            <summary>
            Allocating 32 contiguous blocks per slab makes the slab size 128k. This is larger than the 85k size which will place the memory
            in the large object heap. This means the GC will not try to relocate this array, so the fact it remains pinned does not negatively
            affect memory management's compactification.
            </summary>
        </member>
        <member name="P:System.Buffers.SlabMemoryPool.MaxBufferSize">
            <summary>
            Max allocation block size for pooled blocks,
            larger values can be leased but they will be disposed after use rather than returned to the pool.
            </summary>
        </member>
        <member name="P:System.Buffers.SlabMemoryPool.BlockSize">
            <summary>
            The size of a block. 4096 is chosen because most operating systems use 4k pages.
            </summary>
        </member>
        <member name="F:System.Buffers.SlabMemoryPool._slabLength">
            <summary>
            4096 * 32 gives you a slabLength of 128k contiguous bytes allocated per slab
            </summary>
        </member>
        <member name="F:System.Buffers.SlabMemoryPool._blocks">
            <summary>
            Thread-safe collection of blocks which are currently in the pool. A slab will pre-allocate all of the block tracking objects
            and add them to this collection. When memory is requested it is taken from here first, and when it is returned it is re-added.
            </summary>
        </member>
        <member name="F:System.Buffers.SlabMemoryPool._slabs">
            <summary>
            Thread-safe collection of slabs which have been allocated by this pool. As long as a slab is in this collection and slab.IsActive,
            the blocks will be added to _blocks when returned.
            </summary>
        </member>
        <member name="F:System.Buffers.SlabMemoryPool._isDisposed">
            <summary>
            This is part of implementing the IDisposable pattern.
            </summary>
        </member>
        <member name="F:System.Buffers.SlabMemoryPool.AnySize">
            <summary>
            This default value passed in to Rent to use the default value for the pool.
            </summary>
        </member>
        <member name="M:System.Buffers.SlabMemoryPool.Lease">
            <summary>
            Called to take a block from the pool.
            </summary>
            <returns>The block that is reserved for the called. It must be passed to Return when it is no longer being used.</returns>
        </member>
        <member name="M:System.Buffers.SlabMemoryPool.AllocateSlab">
            <summary>
            Internal method called when a block is requested and the pool is empty. It allocates one additional slab, creates all of the
            block tracking objects, and adds them all to the pool.
            </summary>
        </member>
        <member name="M:System.Buffers.SlabMemoryPool.Return(System.Buffers.MemoryPoolBlock)">
            <summary>
            Called to return a block to the pool. Once Return has been called the memory no longer belongs to the caller, and
            Very Bad Things will happen if the memory is read of modified subsequently. If a caller fails to call Return and the
            block tracking object is garbage collected, the block tracking object's finalizer will automatically re-create and return
            a new tracking object into the pool. This will only happen if there is a bug in the server, however it is necessary to avoid
            leaving "dead zones" in the slab due to lost block tracking objects.
            </summary>
            <param name="block">The block to return. It must have been acquired by calling Lease on the same memory pool instance.</param>
        </member>
    </members>
</doc>
