<?xml version="1.0"?>
<doc>
    <assembly>
        <name>SnapDB</name>
    </assembly>
    <members>
        <member name="T:SnapDB.BitConvert">
            <summary>
            Contains functions that convert from floating-points to unsigned 64-bit integers,
            and from unsigned 64-bit integers to floating-points.
            </summary>
        </member>
        <member name="M:SnapDB.BitConvert.ToUInt64(System.Single)">
            <summary>
            Converts a single-precision floating-point number to an unsigned 64-bit integer representation.
            </summary>
            <param name="value">The single-precision floating-point number to convert.</param>
            <returns>
            An unsigned 64-bit integer representation of the input single-precision floating-point number.
            </returns>
            <remarks>
            This method performs an unsafe conversion by treating the input float as an uint and
            then casting it to ulong.
            </remarks>
            <seealso cref="M:SnapDB.BitConvert.ToUInt64(System.Single)"/>
        </member>
        <member name="M:SnapDB.BitConvert.ToSingle(System.UInt64)">
            <summary>
            Converts an unsigned 64-bit integer to a single-precision floating-point number.
            </summary>
            <param name="value">The unsigned 64-bit integer to convert.</param>
            <returns>
            A single-precision floating-point number representing the input unsigned 64-bit integer.
            </returns>
            <remarks>
            This method performs an unsafe conversion by first casting the input ulong to an uint
            and then treating it as a float.
            </remarks>
            <seealso cref="M:SnapDB.BitConvert.ToUInt64(System.Single)"/>
        </member>
        <member name="M:SnapDB.BitConvert.ToUInt64Pair(System.Guid)">
            <summary>
            Converts a Guid value into two unsigned 64-bit integers.
            </summary>
            <param name="value">Guid value to convert.</param>
            <returns>
            Two unsigned 64-bit integers representing the input Guid value.
            </returns>
        </member>
        <member name="M:SnapDB.BitConvert.ToGuid(System.UInt64,System.UInt64)">
            <summary>
            Converts two unsigned 64-bit integers into a Guid.
            </summary>
            <param name="value1">Value1 of the Guid.</param>
            <param name="value2">Value2 of the Guid.</param>
            <returns>
            A Guid representation of the input unsigned 64-bit integers.
            </returns>
        </member>
        <member name="T:SnapDB.Collections.BitArray">
            <summary>
            Represents an array of bits much like the native .NET implementation,
            however this focuses on providing a free space bit array.
            </summary>
        </member>
        <member name="F:SnapDB.Collections.BitArray.BitsPerElement">
            <summary>
            Defines the number of bits per array element.
            </summary>
        </member>
        <member name="F:SnapDB.Collections.BitArray.BitsPerElementMask">
            <summary>
            Defines the mask to apply to get the bit position of the value.
            </summary>
        </member>
        <member name="F:SnapDB.Collections.BitArray.BitsPerElementShift">
            <summary>
            Defines the number of bits to shift to get the index of the array.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.BitArray.#ctor(System.Boolean,System.Int32)">
            <summary>
            Initializes <see cref="T:SnapDB.Collections.BitArray"/>.
            </summary>
            <param name="initialState">
            If this is set to <c>true</c>, all elements will be set; if <c>false</c>, all elements will be cleared.
            </param>
            <param name="count">The number of bit positions to support.</param>
        </member>
        <member name="P:SnapDB.Collections.BitArray.ClearCount">
            <summary>
            Gets the number of bits that are cleared in this array.
            </summary>
        </member>
        <member name="P:SnapDB.Collections.BitArray.Count">
            <summary>
            Gets the number of bits this array contains.
            </summary>
        </member>
        <member name="P:SnapDB.Collections.BitArray.Item(System.Int32)">
            <summary>
            Gets or Sets individual bits in this array.
            </summary>
            <param name="index">Bit position to access.</param>
            <returns>Bit at specified <paramref name="index"/>.</returns>
        </member>
        <member name="P:SnapDB.Collections.BitArray.SetCount">
            <summary>
            Gets the number of bits that are set in this array.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.BitArray.GetBit(System.Int32)">
            <summary>
            Gets the status of the corresponding bit.
            </summary>
            <param name="index">Bit position to access.</param>
            <returns><c>true</c> if set; otherwise, <c>false</c> if cleared.</returns>
        </member>
        <member name="M:SnapDB.Collections.BitArray.GetBitUnchecked(System.Int32)">
            <summary>
            Gets the status of the corresponding bit.
            This method does not validate the bounds of the array,
            and will be Aggressively Inlined.
            </summary>
            <param name="index">Bit position to access.</param>
            <returns><c>true</c> if set; otherwise, <c>false</c> if cleared.</returns>
        </member>
        <member name="M:SnapDB.Collections.BitArray.SetBit(System.Int32)">
            <summary>
            Sets the corresponding bit to <c>true</c>.
            </summary>
            <param name="index">Bit position to set.</param>
        </member>
        <member name="M:SnapDB.Collections.BitArray.TrySetBit(System.Int32)">
            <summary>
            Sets the corresponding bit to <c>true</c>.
            Returns <c>true</c> if the bit state was changed.
            </summary>
            <param name="index">Bit position to set.</param>
            <returns><c>true</c> if the bit state was changed; otherwise, <c>false</c> if the bit was already set.</returns>
        </member>
        <member name="M:SnapDB.Collections.BitArray.ClearAll">
            <summary>
            Clears all bits.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.BitArray.ClearBit(System.Int32)">
            <summary>
            Clears bit at the specified <paramref name="index"/>.
            </summary>
            <param name="index">Bit position to set.</param>
        </member>
        <member name="M:SnapDB.Collections.BitArray.TryClearBit(System.Int32)">
            <summary>
            Sets the corresponding bit to <c>false</c>.
            Returns <c>true</c> if the bit state was changed.
            </summary>
            <param name="index">Bit position to clear.</param>
            <returns><c>true</c> if the bit state was changed; otherwise, <c>false</c> if the bit was already cleared.</returns>
        </member>
        <member name="M:SnapDB.Collections.BitArray.ClearBits(System.Int32,System.Int32)">
            <summary>
            Clears a specified series of bits.
            </summary>
            <param name="index">Starting index to clear.</param>
            <param name="length">Length of bits to clear.</param>
        </member>
        <member name="M:SnapDB.Collections.BitArray.SetAll">
            <summary>
            Sets all bits.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.BitArray.SetBits(System.Int32,System.Int32)">
            <summary>
            Sets a specified series of bits.
            </summary>
            <param name="index">Starting index to set.</param>
            <param name="length">Length of bits to set.</param>
        </member>
        <member name="M:SnapDB.Collections.BitArray.AreAllBitsSet(System.Int32,System.Int32)">
            <summary>
            Determines if any of the provided bits are set.
            </summary>
            <param name="index">Starting index to check.</param>
            <param name="length">Number of bits to check.</param>
            <returns><c>true</c> if all bits in range are set; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Collections.BitArray.AreAllBitsCleared(System.Int32,System.Int32)">
            <summary>
            Determines if any of the provided bits are cleared.
            </summary>
            <param name="index">Starting index to check.</param>
            <param name="length">Number of bits to check.</param>
            <returns><c>true</c> if all bits in range are clear; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Collections.BitArray.SetCapacity(System.Int32)">
            <summary>
            Increases the capacity of the bit array.
            Decreasing capacity is currently not supported.
            </summary>
            <param name="capacity">Number of bits to support.</param>
        </member>
        <member name="M:SnapDB.Collections.BitArray.EnsureCapacity(System.Int32)">
            <summary>
            Ensures that the bit array has a minimum capacity to accommodate a specified number of bits.
            </summary>
            <param name="capacity">Minimum number of bits the bit array should be able to hold.</param>
            <remarks>
            If the current capacity of the bit array is less than the specified capacity, the method
            increases the capacity to either double the current capacity or the specified capacity,
            whichever is greater.
            </remarks>
        </member>
        <member name="M:SnapDB.Collections.BitArray.FindClearedBit">
            <summary>
            Finds the position of the next cleared (unset) bit in the bit array.
            </summary>
            <returns>Position of the next cleared bit; otherwise, -1 if no cleared bit is found.</returns>
        </member>
        <member name="M:SnapDB.Collections.BitArray.FindSetBit">
            <summary>
            Finds the position of the next set (1) bit in the bit array.
            </summary>
            <returns>Position of the next set bit; otherwise, -1 if no set bit is found.</returns>
        </member>
        <member name="M:SnapDB.Collections.BitArray.GetAllSetBits">
            <summary>
            Returns a yielded list of all bits that are set.
            </summary>
            <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of integers representing the positions of set bits in the bit array.</returns>
        </member>
        <member name="M:SnapDB.Collections.BitArray.GetAllClearedBits">
            <summary>
            Returns a yielded list of all bits that are cleared.
            </summary>
            <returns>An <see cref="T:System.Collections.Generic.IEnumerable`1"/> of integers representing the positions of cleared bits in the bit array.</returns>
        </member>
        <member name="T:SnapDB.Collections.ConcurrentIndexedDictionary`2">
            <summary>
            A thread-safe indexed dictionary that can only be added to.
            </summary>
            <typeparam name="TKey">The type of keys in the dictionary.</typeparam>
            <typeparam name="TValue">The type of values in the dictionary.</typeparam>
            <remarks>
            This is a special purpose class that supports only the "add" and "get" operations.
            It is designed for indexing and dictionary lookup capabilities.
            </remarks>
        </member>
        <member name="P:SnapDB.Collections.ConcurrentIndexedDictionary`2.Count">
            <summary>
            Gets the number of items in the dictionary.
            </summary>
        </member>
        <member name="P:SnapDB.Collections.ConcurrentIndexedDictionary`2.Item(System.Int32)">
            <summary>
            Gets the value at the specified index in the dictionary.
            </summary>
            <param name="index">The index of the value to get.</param>
            <returns>The value at the specified index.</returns>
            <exception cref="T:System.IndexOutOfRangeException">
            Thrown if the specified index is less than 0, or if it is
            greater than or equal to the Count of elements in the dictionary.
            </exception>
        </member>
        <member name="M:SnapDB.Collections.ConcurrentIndexedDictionary`2.Get(`0)">
            <summary>
            Gets the value associated with the specified key in the dictionary.
            </summary>
            <param name="key">The key for which to retrieve the associated value.</param>
            <returns>
            The value associated with the specified key.
            </returns>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">
            Thrown if the specified key is not found in the dictionary.
            </exception>
        </member>
        <member name="M:SnapDB.Collections.ConcurrentIndexedDictionary`2.IndexOf(`0)">
            <summary>
            Gets the index of the specified <paramref name="key"/> in the dictionary.
            </summary>
            <param name="key">The key to find the index for.</param>
            <returns>The index of the key in the dictionary, or -1 if the key is not found.</returns>
        </member>
        <member name="M:SnapDB.Collections.ConcurrentIndexedDictionary`2.Add(`0,`1)">
            <summary>
            Adds a key-value pair to the dictionary, and returns the index at which it was added.
            </summary>
            <param name="key">The key to add to the dictionary.</param>
            <param name="value">The value associated with the key.</param>
            <returns>The index at which the key-value pair was added in the dictionary.</returns>
            <exception cref="T:System.Data.DuplicateNameException">Thrown if the specified key already exists in the dictionary.</exception>
        </member>
        <member name="M:SnapDB.Collections.ConcurrentIndexedDictionary`2.GetOrAdd(`0,System.Func{`1})">
            <summary>
            Gets the value associated with the specified <paramref name="key"/> from the dictionary, or adds it if not found.
            </summary>
            <param name="key">The key to retrieve or add.</param>
            <param name="createFunction">A function that creates the value if the key is not found.</param>
            <returns>The existing value associated with the key if found, or a newly created value if the key is not found.</returns>
        </member>
        <member name="T:SnapDB.Collections.LargeArray`1">
            <summary>
            Implementation that utilizes a jagged array structure and
            array expansion optimization to improve performance.
            </summary>
            <typeparam name="T">Array type.</typeparam>
        </member>
        <member name="M:SnapDB.Collections.LargeArray`1.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.Collections.LargeArray`1"/> with a jagged array depth of 1024 elements.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.LargeArray`1.#ctor(System.Int32)">
            <summary>
            Creates a <see cref="T:SnapDB.Collections.LargeArray`1"/> with the specified jagged array depth.
            </summary>
            <param name="jaggedArrayDepth">The number of elements per jagged array (rounds up to the nearest power of 2).</param>
        </member>
        <member name="P:SnapDB.Collections.LargeArray`1.Capacity">
            <summary>
            Gets the number of items in the array.
            </summary>
        </member>
        <member name="P:SnapDB.Collections.LargeArray`1.Item(System.Int32)">
            <summary>
            Gets or sets the value in the specified index of the array.
            </summary>
            <param name="index">The index to address.</param>
            <returns>The value at the specified index.</returns>
        </member>
        <member name="M:SnapDB.Collections.LargeArray`1.SetCapacity(System.Int32)">
            <summary>
            Sets the capacity of the array to at least the given length. Will not reduce the size.
            </summary>
            <param name="length">The new length (capacity) for the data structure.</param>
            <returns>The updated capacity of the data structure after setting it to the specified length.</returns>
        </member>
        <member name="M:SnapDB.Collections.LargeArray`1.Clear">
            <summary>
            Clears all elements in the data structure, setting each element to its default value.
            </summary>
        </member>
        <member name="T:SnapDB.Collections.ListExtensions">
            <summary>
            Extensions for <see cref="T:System.Collections.Generic.IList`1"/>
            </summary>
        </member>
        <member name="M:SnapDB.Collections.ListExtensions.ReplaceFirstNullOrAdd``1(System.Collections.Generic.IList{``0},``0)">
            <summary>
            Replaces the first <c>null</c> element in the list with the specified item, or adds the item to the end of the list if no <c>null</c> elements are found.
            </summary>
            <typeparam name="T">The type of elements in the list, which must be reference types.</typeparam>
            <param name="list">The list to operate on.</param>
            <param name="item">The item to replace or add.</param>
            <returns>The index of the replaced or added item in the list.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the input list is <c>null</c>.</exception>
        </member>
        <member name="M:SnapDB.Collections.ListExtensions.ReplaceFirstNullOrAdd``1(System.Collections.Generic.List{``0},``0)">
            <summary>
            Replaces the first <c>null</c> element in the list with the specified item, or adds the item to the end of the list if no <c>null</c> elements are found.
            </summary>
            <typeparam name="T">The type of elements in the list, which must be reference types.</typeparam>
            <param name="list">The list to operate on.</param>
            <param name="item">The item to replace or add.</param>
            <returns>The index of the replaced or added item in the list.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the input list is <c>null</c>.</exception>
        </member>
        <member name="T:SnapDB.Collections.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Collections"/> namespace organizes all common SnapDB library functionality related to arrays, queues, lists, etc., 
            e.g., the <see cref="T:SnapDB.Collections.LargeArray`1"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Collections.NullableLargeArray`1">
            <summary>
            Provides a high speed list that can have elements that can be null.
            It is similar to a <see cref="T:System.Collections.Generic.List`1"/> except high speed lookup for
            NextIndexOfNull-like functions is provided as well.
            </summary>
            <typeparam name="T">Array type.</typeparam>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.Collections.NullableLargeArray`1"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Collections.NullableLargeArray`1.Capacity">
            <summary>
            Gets the number of items that can be stored in the array.
            </summary>
        </member>
        <member name="P:SnapDB.Collections.NullableLargeArray`1.CountFree">
            <summary>
            Gets the number of available spaces in the array. Equal to <see cref="P:SnapDB.Collections.NullableLargeArray`1.Capacity"/> - <see cref="P:SnapDB.Collections.NullableLargeArray`1.CountUsed"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Collections.NullableLargeArray`1.CountUsed">
            <summary>
            Gets the number of non-null items that are in the array.
            </summary>
        </member>
        <member name="P:SnapDB.Collections.NullableLargeArray`1.Item(System.Int32)">
            <summary>
            Gets the provided item from the array.
            </summary>
            <param name="index">The index of the item.</param>
            <returns>The item at the specified index.</returns>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.HasValue(System.Int32)">
            <summary>
            Checks if the element at the specified index has a value.
            </summary>
            <param name="index">The index to check.</param>
            <returns><c>true</c> if the element has a value; otherwise, <c>false</c>.</returns>
            <remarks>
            Bounds checking is performed by the underlying BitArray.
            </remarks>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.TryGetValue(System.Int32,`0@)">
            <summary>
            Tries to get the value at the specified index if it exists.
            </summary>
            <param name="index">The index of the value to retrieve.</param>
            <param name="value">When this method returns, contains the value at the specified index if it exists, or the default value for the type if not.</param>
            <returns><c>true</c> if the value at the specified index exists; otherwise, <c>false</c>.</returns>
            <remarks>
            This method checks if the element at the specified index has a value using <see cref="M:SnapDB.Collections.NullableLargeArray`1.HasValue(System.Int32)"/>.
            </remarks>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.SetCapacity(System.Int32)">
            <summary>
            Increases the capacity of the array to at least the given length. Will not reduce the size.
            </summary>
            <param name="length"></param>
            <returns>The current length of the list.</returns>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.GetValue(System.Int32)">
            <summary>
            Gets the specified item from the list. Throws an exception if the item is <c>null</c>.
            </summary>
            <param name="index"></param>
            <returns>The item from the specified index.</returns>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.SetNull(System.Int32)">
            <summary>
            Sets the following item to <c>null</c>.
            </summary>
            <param name="index"></param>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.SetValue(System.Int32,`0)">
            <summary>
            Sets the value at the specified index.
            </summary>
            <param name="index">The index at which to set the value.</param>
            <param name="value">The value to set at the specified index.</param>
            <remarks>
            This method sets the value at the specified index and marks it as used using <see cref="M:SnapDB.Collections.BitArray.SetBit(System.Int32)"/>.
            </remarks>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.OverwriteValue(System.Int32,`0)">
            <summary>
            Overwrites the value at the specified index.
            </summary>
            <param name="index">The index of the value to overwrite.</param>
            <param name="value">The new value to set at the specified index.</param>
            <exception cref="T:System.IndexOutOfRangeException">Thrown if the index does not exist.</exception>
            <remarks>
            This method replaces the existing value at the specified index with the new value.
            </remarks>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.AddValue(`0)">
            <summary>
            Adds a new value to the list at the nearest possible empty location.
            If there is not enough room, the list is automatically expanded.
            </summary>
            <param name="value">The value to add.</param>
            <returns>The index where the value was placed.</returns>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.Clear">
            <summary>
            Clears all elements in the list
            </summary>
        </member>
        <member name="M:SnapDB.Collections.NullableLargeArray`1.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the non-null elements of this collection.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> that can be used to iterate through the collection.
            </returns>
        </member>
        <member name="T:SnapDB.Collections.ResourceQueue`1">
            <summary>
            Provides a specialized, thread-safe queue that acts as a quasi-buffer pool.
            </summary>
            <typeparam name="T">The type of resources managed by the queue (must be a reference type).</typeparam>
        </member>
        <member name="M:SnapDB.Collections.ResourceQueue`1.#ctor(System.Func{`0},System.Int32,System.Int32)">
            <summary>
            Creates a new Resource Queue with the specified initial resources and maximum capacity.
            </summary>
            <param name="instance">A delegate that will return the necessary queue.</param>
            <param name="initialCount">The initial number of resources to have in the queue.</param>
            <param name="maximumCount">The maximum number of resources the queue can hold.</param>
        </member>
        <member name="M:SnapDB.Collections.ResourceQueue`1.Dequeue">
            <summary>
            Removes an item from the queue. If one does not exist, a new item is created.
            </summary>
            <returns>The dequeued or newly recreated item of type T.</returns>
        </member>
        <member name="M:SnapDB.Collections.ResourceQueue`1.Enqueue(`0)">
            <summary>
            Adds an item back to the queue, so long as queue is not at maximum capacity.
            </summary>
            <param name="resource">The resource of type T to enqueue.</param>
        </member>
        <member name="T:SnapDB.Collections.ResourceQueueCollection`2">
            <summary>
            Provides a thread-safe collection of many different resources of the same type.
            </summary>
            <typeparam name="TKey">An IComparable type key that is used to distinguish different resource queues.</typeparam>
            <typeparam name="TResource">The type of the resource queue.</typeparam>
        </member>
        <member name="M:SnapDB.Collections.ResourceQueueCollection`2.#ctor(System.Func{`1},System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Collections.ResourceQueueCollection`2"/> class
            with a default instance creation function and initial and maximum counts.
            </summary>
            <param name="instance">A function to create instances of the resource queues.</param>
            <param name="initialCount">The initial number of resources in each queue.</param>
            <param name="maximumCount">The maximum number of resources in each queue.</param>
        </member>
        <member name="M:SnapDB.Collections.ResourceQueueCollection`2.#ctor(System.Func{`0,`1},System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Collections.ResourceQueueCollection`2"/> class
            with a custom instance creation function and initial and maximum counts.
            </summary>
            <param name="instance">A function that returns the instance creation function for each key.</param>
            <param name="initialCount">The initial number of resources in each queue.</param>
            <param name="maximumCount">The maximum number of resources in each queue.</param>
        </member>
        <member name="M:SnapDB.Collections.ResourceQueueCollection`2.#ctor(System.Func{`0,System.Func{`1}},System.Int32,System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Collections.ResourceQueueCollection`2"/> class
            with a custom instance creation function and initial and maximum counts.
            </summary>
            <param name="instance">A function that returns the instance creation function for each key.</param>
            <param name="initialCount">The initial number of resources in each queue.</param>
            <param name="maximumCount">The maximum number of resources in each queue.</param>
        </member>
        <member name="M:SnapDB.Collections.ResourceQueueCollection`2.#ctor(System.Func{`0,System.Func{`1}},System.Func{`0,System.Int32},System.Func{`0,System.Int32})">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Collections.ResourceQueueCollection`2"/> class
            with a custom instance creation function, initial counts, and maximum counts.
            </summary>
            <param name="instance">A function that returns the instance creation function for each key.</param>
            <param name="initialCount">A function that specifies the initial count for each queue based on the key.</param>
            <param name="maximumCount">A function that specifies the maximum count for each queue based on the key.</param>
        </member>
        <member name="P:SnapDB.Collections.ResourceQueueCollection`2.Item(`0)">
            <summary>
            Gets the resource queue for a key of <c>this</c>.
            </summary>
            <param name="key">The key identifying the resource queue to pull from.</param>
        </member>
        <member name="M:SnapDB.Collections.ResourceQueueCollection`2.GetResourceQueue(`0)">
            <summary>
            Gets a resource queue associated with the specified key or creates a new one if it doesn't exist.
            </summary>
            <param name="key">The key associated with the resource queue.</param>
            <returns>
            A <see cref="T:SnapDB.Collections.ResourceQueue`1"/> instance associated with the specified key.
            If the resource queue doesn't exist, a new one is created and added to the collection.
            </returns>
            <remarks>
            This method provides thread-safe access to resource queues. It attempts to retrieve an
            existing resource queue associated with the given key. If the queue doesn't exist, it creates
            a new resource queue based on the provided initialization parameters and adds it to the collection.
            </remarks>
        </member>
        <member name="T:SnapDB.Collections.SortedListFactory">
            <summary>
            Quickly creates a <see cref="T:System.Collections.SortedList"/> from a provided list of keys and values.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.SortedListFactory.Create``2(System.Collections.Generic.ICollection{``0},System.Collections.Generic.ICollection{``1})">
            <summary>
            Creates a sorted list from a provided keys and values.
            </summary>
            <typeparam name="TKey">The type of keys in the sorted list.</typeparam>
            <typeparam name="TValue">The type of values in the sorted list.</typeparam>
            <param name="keys">A collection of keys to be used in the sorted list.</param>
            <param name="values">A collection of values to be associated with the keys in the sorted list.</param>
            <returns>A sorted list containing the specified keys and values.</returns>
        </member>
        <member name="T:SnapDB.Collections.WeakList`1">
            <summary>
            Creates a list of items that will be weak referenced.
            This list is thread-safe and allows enumeration while adding and removing from the list.
            </summary>
            <typeparam name="T">List type.</typeparam>
        </member>
        <member name="T:SnapDB.Collections.WeakList`1.Snapshot">
            <summary>
            Contains a snapshot of the data so read operations can be non-blocking.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Snapshot.Grow">
            <summary>
            Grows the snapshot, doubling the size of the number of entries.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Snapshot.Remove(`0)">
            <summary>
            Removes all occurrences of <paramref name="item"/> from the list.
            </summary>
            <param name="item">Item to remove.</param>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Snapshot.TryAdd(`0)">
            <summary>
            Attempts to add <paramref name="item"/> to the list.
            </summary>
            <param name="item"></param>
            <returns><c>true</c> if added, <c>false</c> otherwise.</returns>
        </member>
        <member name="T:SnapDB.Collections.WeakList`1.Enumerator">
            <summary>
            An <see cref="T:System.Collections.Generic.IEnumerator`1"/> for <see cref="T:SnapDB.Collections.WeakList`1"/>
            </summary>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Enumerator.#ctor(System.WeakReference[],System.Int32)">
            <summary>
            Creates a <see cref="T:SnapDB.Collections.WeakList`1.Enumerator"/>.
            </summary>
            <param name="items">The weak referenced items.</param>
            <param name="count">The number of valid items in the list.</param>
        </member>
        <member name="P:SnapDB.Collections.WeakList`1.Enumerator.Current">
            <summary>
            Gets the element in the collection at the current position of the enumerator.
            </summary>
            <returns>
            The element in the collection at the current position of the enumerator.
            </returns>
        </member>
        <member name="P:SnapDB.Collections.WeakList`1.Enumerator.System#Collections#IEnumerator#Current">
            <summary>
            Gets the current element in the collection.
            </summary>
            <returns>
            The current element in the collection.
            </returns>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Enumerator.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Enumerator.MoveNext">
            <summary>
            Advances the enumerator to the next valid item in the collection.
            </summary>
            <returns>
            <c>true</c> if the enumerator was successfully advanced to the next item;
            <c>false</c> if the end of the collection has been reached.
            </returns>
            <exception cref="T:System.InvalidOperationException">The collection was modified after the enumerator was created. </exception>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Enumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before the first element in the collection.
            </summary>
            <exception cref="T:System.InvalidOperationException">The collection was modified after the enumerator was created. </exception>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.Collections.WeakList`1"/>
            </summary>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Clear">
            <summary>
            Clears all of the times in the list. Method is thread safe.
            </summary>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Add(`0)">
            <summary>
            Adds the <paramref name="item"/> to the list. Method is thread safe.
            </summary>
            <param name="item">Item to add.</param>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.Remove(`0)">
            <summary>
            Removes all occurrences of the <paramref name="item"/> from the list. Method is thread-safe.
            </summary>
            <param name="item">Item to remove.</param>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> that can be used to iterate through the collection.
            </returns>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.System#Collections#Generic#IEnumerable{T}#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> that can be used to iterate through the collection.
            </returns>
        </member>
        <member name="M:SnapDB.Collections.WeakList`1.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through a collection.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
            </returns>
        </member>
        <member name="T:SnapDB.DateTimeExtensions">
            <summary>
            Helper methods for type <see cref="T:System.DateTime"/>
            </summary>
        </member>
        <member name="M:SnapDB.DateTimeExtensions.RoundDownToNearestDay(System.DateTime)">
            <summary>
            Rounds down a <see cref="T:System.DateTime"/> value to the nearest day.
            </summary>
            <param name="value">The <see cref="T:System.DateTime"/> value to round down.</param>
            <returns>The rounded-down <see cref="T:System.DateTime"/> value.</returns>
            <remarks>
            This method rounds down the input <paramref name="value"/> to the nearest day by removing the time component.
            </remarks>
        </member>
        <member name="M:SnapDB.DateTimeExtensions.RoundDownToNearestHour(System.DateTime)">
            <summary>
            Rounds down a <see cref="T:System.DateTime"/> value to the nearest hour.
            </summary>
            <param name="value">The <see cref="T:System.DateTime"/> value to round down.</param>
            <returns>The rounded-down <see cref="T:System.DateTime"/> value.</returns>
            <remarks>
            This method rounds down the input <paramref name="value"/> to the nearest hour by removing the minutes, seconds, and milliseconds components.
            </remarks>
        </member>
        <member name="M:SnapDB.DateTimeExtensions.RoundDownToNearestMinute(System.DateTime)">
            <summary>
            Rounds down a <see cref="T:System.DateTime"/> value to the nearest minute.
            </summary>
            <param name="value">The <see cref="T:System.DateTime"/> value to round down.</param>
            <returns>The rounded-down <see cref="T:System.DateTime"/> value.</returns>
            <remarks>
            This method rounds down the input <paramref name="value"/> to the nearest minute by removing the seconds and milliseconds components.
            </remarks>
        </member>
        <member name="M:SnapDB.DateTimeExtensions.RoundDownToNearestSecond(System.DateTime)">
            <summary>
            Rounds down a <see cref="T:System.DateTime"/> value to the nearest second.
            </summary>
            <param name="value">The <see cref="T:System.DateTime"/> value to round down.</param>
            <returns>The rounded-down <see cref="T:System.DateTime"/> value.</returns>
            <remarks>
            This method rounds down the input <paramref name="value"/> to the nearest second by removing the milliseconds component.
            </remarks>
        </member>
        <member name="M:SnapDB.DateTimeExtensions.RoundDownToNearestMillisecond(System.DateTime)">
            <summary>
            Rounds down a <see cref="T:System.DateTime"/> value to the nearest millisecond.
            </summary>
            <param name="value">The <see cref="T:System.DateTime"/> value to round down.</param>
            <returns>The rounded-down <see cref="T:System.DateTime"/> value.</returns>
            <remarks>
            This method rounds down the input <paramref name="value"/> to the nearest millisecond by removing the microseconds component.
            </remarks>
        </member>
        <member name="T:SnapDB.Globals">
            <summary>
            Maintains the static global classes for the historian.
            </summary>
        </member>
        <member name="F:SnapDB.Globals.MemoryPool">
            <summary>
            A global Memory Pool that uses 64KB pages.
            </summary>
        </member>
        <member name="T:SnapDB.Immutables.IImmutableObject">
            <summary>
            Represents an object that can be configured as "read only" and thus made immutable.
            </summary>
        </member>
        <member name="P:SnapDB.Immutables.IImmutableObject.IsReadOnly">
            <summary>
            Gets or sets if a class is "read only". Once it has been set as "read only", it is immutable and must be cloned to be modified.
            </summary>
        </member>
        <member name="M:SnapDB.Immutables.IImmutableObject.CloneEditable">
            <summary>
            Makes a clone of this object and allows it to be edited.
            </summary>
            <returns>
            An editable clone of the object.
            </returns>
        </member>
        <member name="M:SnapDB.Immutables.IImmutableObject.CloneReadonly">
            <summary>
            Makes a "read only" clone of this object. Returns the same object if it is already marked as "read only".
            </summary>
            <returns>
            A "read only" clone of the object.
            </returns>
        </member>
        <member name="T:SnapDB.Immutables.IImmutableObject`1">
            <summary>
            Represents an object that can be configured as read only and thus made immutable.
            The original contents of this class will not be editable once <see cref="P:SnapDB.Immutables.IImmutableObject.IsReadOnly"/> is set to <c>true</c>.
            In order to modify the contest of this object, a clone of the object must be created with <see cref="M:SnapDB.Immutables.IImmutableObject`1.CloneEditable"/>.
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="M:SnapDB.Immutables.IImmutableObject`1.CloneEditable">
            <summary>
            Makes a clone of this object and allows it to be edited.
            </summary>
            <returns>
            An editable clone of the object.
            </returns>
        </member>
        <member name="M:SnapDB.Immutables.IImmutableObject`1.CloneReadonly">
            <summary>
            Makes a read-only clone of this object. Returns the same object if it is already marked as read-only.
            </summary>
            <returns>
            A read-only clone of this object.
            </returns>
        </member>
        <member name="T:SnapDB.Immutables.ImmutableList`1">
            <summary>
            A list that can be modified until <see cref="P:SnapDB.Immutables.ImmutableObjectBase`1.IsReadOnly"/> is set to <c>true</c>. Once this occurs,
            the list itself can no longer be modified.  Remember, this does not cause objects contained in this class to be Immutable
            unless they implement <see cref="T:SnapDB.Immutables.IImmutableObject"/>.
            </summary>
            <typeparam name="T">List type.</typeparam>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.#ctor(System.Func{`0,`0})">
            <summary>
            Creates a new <see cref="T:SnapDB.Immutables.ImmutableList`1"/>.
            </summary>
            <param name="formatter">Allows items to be formatted when inserted into a list.</param>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.#ctor(System.Int32,System.Func{`0,`0})">
            <summary>
            Creates a new <see cref="T:SnapDB.Immutables.ImmutableList`1"/>.
            </summary>
            <param name="capacity">The integer capacity that the list can hold.</param>
            <param name="formatter">An optional formatter for the items in the list of type <typeparamref name="T"/>.</param>
        </member>
        <member name="P:SnapDB.Immutables.ImmutableList`1.Count">
            <summary>
            Gets the number of elements contained in the <see cref="T:System.Collections.ICollection"/>.
            </summary>
            <returns>The number of elements contained in the <see cref="T:System.Collections.ICollection"/>.</returns>
        </member>
        <member name="P:SnapDB.Immutables.ImmutableList`1.Item(System.Int32)">
            <summary>
            Gets or sets the element at the specified index.
            </summary>
            <returns>The element at the specified index.</returns>
            <param name="index">The zero-based index of the element to get or set.</param>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.AddRange(System.Collections.Generic.IEnumerable{`0})">
            <summary>
            Adds the elements of the specified collection to the end of the <see cref="T:System.Collections.Generic.List`1"/>.
            </summary>
            <param name="collection">
            The collection whose elements should be added to the end of the <see cref="T:System.Collections.Generic.List`1"/>.
            The collection itself cannot be <c>null</c>, but it can contain elements that are <c>null</c>.
            </param>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.SetMembersAsReadOnly">
            <summary>
            Requests that member fields be set to "read-only".
            </summary>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.CloneMembersAsEditable">
            <summary>
            Request that member fields be cloned and marked as editable.
            </summary>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.GetEnumerator">
            <summary>Returns an enumerator that iterates through the collection.</summary>
            <returns>A <see cref="T:System.Collections.Generic.IEnumerator`1"/> that can be used to iterate through the collection.</returns>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.System#Collections#IEnumerable#GetEnumerator">
            <summary>Returns an enumerator that iterates through a collection.</summary>
            <returns>An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.</returns>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.Add(`0)">
            <summary>Adds an item to the <see cref="T:System.Collections.ICollection"/>.</summary>
            <param name="item">The object to add to the <see cref="T:System.Collections.ICollection"/>.</param>
            <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.ICollection"/> is read-only.</exception>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.Clear">
            <summary>
            Removes all items from the collection.
            </summary>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.Contains(`0)">
            <summary>
            Determines whether the <see cref="T:System.Collections.ICollection"/> contains a specific value.
            </summary>
            <returns><c>true</c> if <paramref name="item"/> is found in the <see cref="T:System.Collections.ICollection"/>; otherwise, <c>false</c>.</returns>
            <param name="item">The object to locate in the <see cref="T:System.Collections.ICollection"/>.</param>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.CopyTo(`0[],System.Int32)">
            <summary>
            Copies the elements of the <see cref="T:System.Collections.ICollection"/> to an <see cref="T:System.Array"/>, starting at a particular <see cref="T:System.Array"/> index.
            </summary>
            <param name="array">
            The one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied from <see cref="T:System.Collections.ICollection"/>.
            The <see cref="T:System.Array"/> must have zero-based indexing.
            </param>
            <param name="arrayIndex">The zero-based index in <paramref name="array"/> at which copying begins.</param>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.Remove(`0)">
            <summary>
            Removes the first occurrence of a specific object from the <see cref="T:System.Collections.ICollection"/>.
            </summary>
            <param name="item">The object to remove from the <see cref="T:System.Collections.ICollection"/>.</param>
            <returns>
            <c>true</c> if <paramref name="item"/> was successfully removed from the <see cref="T:System.Collections.ICollection"/>;
            otherwise, <c>false</c>. This method also returns false if <paramref name="item"/> is not found in the original <see cref="T:System.Collections.ICollection"/>.
            </returns>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.IndexOf(`0)">
            <summary>
            Determines the index of a specific item in the <see cref="T:System.Collections.Generic.IList`1"/>.
            </summary>
            <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
            <returns>The index of <paramref name="item"/> if found in the list; otherwise, -1.</returns>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.Insert(System.Int32,`0)">
            <summary>
            Inserts an item to the <see cref="T:System.Collections.Generic.IList`1"/> at the specified index.
            </summary>
            <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
            <param name="item">The object to insert into the <see cref="T:System.Collections.Generic.IList`1"/>.</param>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableList`1.RemoveAt(System.Int32)">
            <summary>
            Removes the <see cref="T:System.Collections.Generic.IList`1"/> item at the specified index.
            </summary>
            <param name="index">The zero-based index of the item to remove.</param>
        </member>
        <member name="T:SnapDB.Immutables.ImmutableObjectAutoBase`1">
            <summary>
            Represents an object that can be configured as read only and thus made immutable.
            This class will automatically clone any field that implements <see cref="T:SnapDB.Immutables.IImmutableObject"/>
            </summary>
            <typeparam name="T">Object type.</typeparam>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectAutoBase`1.SetMembersAsReadOnly">
            <summary>
            Requests that member fields be set to "read-only".
            </summary>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectAutoBase`1.CloneMembersAsEditable">
            <summary>
            Request that member fields be cloned and marked as editable.
            </summary>
        </member>
        <member name="T:SnapDB.Immutables.ImmutableObjectBase`1">
            <summary>
            Represents an object that can be configured as read only and thus made immutable.
            The original contents of this class will not be editable once <see cref="P:SnapDB.Immutables.ImmutableObjectBase`1.IsReadOnly"/> is set to true.
            In order to modify the contest of this object, a clone of the object must be created with <see cref="M:SnapDB.Immutables.ImmutableObjectBase`1.CloneEditable"/>.
            </summary>
            <typeparam name="T">Object type.</typeparam>
            <remarks>
            For a classes that implement this, all setters should call <see cref="M:SnapDB.Immutables.ImmutableObjectBase`1.TestForEditable"/> before
            setting the value.
            </remarks>
        </member>
        <member name="P:SnapDB.Immutables.ImmutableObjectBase`1.IsReadOnly">
            <summary>
            Gets or sets if this class is immutable and thus read-only. Once
            setting to read-only, the class becomes immutable.
            </summary>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectBase`1.TestForEditable">
            <summary>
            Test if the class has been marked as read-only. Throws an exception if editing cannot occur.
            </summary>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectBase`1.SetMembersAsReadOnly">
            <summary>
            Requests that member fields be set to read-only.
            </summary>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectBase`1.CloneMembersAsEditable">
            <summary>
            Request that member fields be cloned and marked as editable.
            </summary>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectBase`1.CloneEditable">
            <summary>
            Creates a clone of this class that is editable.
            A clone is always created, even if this class is already editable.
            </summary>
            <returns>The newly created instance of type 'T'.</returns>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectBase`1.SnapDB#Immutables#IImmutableObject#CloneReadonly">
            <summary>
            Makes a "read-only" clone of this object. Returns the same object if it is already marked as read-only.
            </summary>
            <returns>The non-editable clone.</returns>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectBase`1.SnapDB#Immutables#IImmutableObject#CloneEditable">
            <summary>
            Makes a clone of this object and allows it to be edited.
            </summary>
            <returns>The editable clone.</returns>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectBase`1.CloneReadonly">
            <summary>
            Creates a read-only clone of the object.
            </summary>
            <returns>
            A new instance with the same state as the original, marked as read-only.
            </returns>
            <remarks>
            This method is used to create a copy of the object with read-only access.
            If the object is already read-only, it returns itself.
            </remarks>
        </member>
        <member name="M:SnapDB.Immutables.ImmutableObjectBase`1.Clone">
            <summary>
            Creates a clone of the object, either as a read-only instance or an editable one.
            </summary>
            <returns>
            If the object is read-only, it returns itself. If the object is editable, it returns
            a new instance with the same state as the original.
            </returns>
            <remarks>
            This method is used to create a copy of the object, allowing either read-only or
            editable access depending on the object's current state.
            </remarks>
        </member>
        <member name="T:SnapDB.Immutables.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Immutables"/> namespace organizes all common SnapDB library functionality related to immutable objects,
            e.g., the <see cref="T:SnapDB.Immutables.IImmutableObject"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.IO.BinaryStreamBase">
            <summary>
            An abstract class for reading/writing to a little-endian stream.
            </summary>
        </member>
        <member name="F:SnapDB.IO.BinaryStreamBase.Stream">
            <summary>
            A <see cref="F:SnapDB.IO.BinaryStreamBase.Stream"/> implementation of this <see cref="T:SnapDB.IO.BinaryStreamBase"/>
            </summary>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.IO.BinaryStreamBase"/>
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamBase.CanRead">
            <summary>
            When overridden in a derived class, gets a value indicating whether the current stream supports reading.
            </summary>
            <returns>
            <c>true</c> if the stream supports reading; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamBase.CanSeek">
            <summary>
            When overridden in a derived class, gets a value indicating whether the current stream supports seeking.
            </summary>
            <returns>
            <c>true</c> if the stream supports seeking; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamBase.CanWrite">
            <summary>
            When overridden in a derived class, gets a value indicating whether the current stream supports writing.
            </summary>
            <returns>
            <c>true</c> if the stream supports writing; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamBase.Length">
            <summary>
            When overridden in a derived class, gets the length in bytes of the stream.
            </summary>
            <returns>
            A long value representing the length of the stream in bytes.
            </returns>
            <exception cref="T:System.NotSupportedException">A class derived from Stream does not support seeking. </exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamBase.Position">
            <summary>
            When overridden in a derived class, gets or sets the position within the current stream.
            </summary>
            <returns>
            The current position within the stream.
            </returns>
            <exception cref="T:System.IO.IOException">An I/O error occurs.</exception>
            <exception cref="T:System.NotSupportedException">The stream does not support seeking.</exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.BinaryStreamBase"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.IO.BinaryStreamBase"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">Set to <c>true</c> to release both managed and unmanaged resources; set to <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
            </summary>
            <param name="buffer">An array of bytes. This method copies <paramref name="count"/> bytes from <paramref name="buffer"/> to the current stream.</param>
            <param name="offset">The zero-based byte offset in <paramref name="buffer"/> at which to begin copying bytes to the current stream.</param>
            <param name="count">The number of bytes to be written to the current stream.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.SetLength(System.Int64)">
            <summary>
            When overridden in a derived class, sets the length of the current stream.
            </summary>
            <param name="value">The desired length of the current stream in bytes.</param>
            <exception cref="T:System.IO.IOException">An I/O error occurs.</exception>
            <exception cref="T:System.NotSupportedException">The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.</exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Flush">
            <summary>
            When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.
            </summary>
            <exception cref="T:System.IO.IOException">An I/O error occurs. </exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
            </summary>
            <returns>
            The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
            </returns>
            <param name="buffer">
            An array of bytes. When this method returns, the buffer contains the specified byte array with the values between <paramref name="offset"/> and
            (<paramref name="offset"/> + <paramref name="count"/> - 1) replaced by the bytes read from the current source.
            </param>
            <param name="offset">The zero-based byte offset in <paramref name="buffer"/> at which to begin storing the data read from the current stream.</param>
            <param name="count">The maximum number of bytes to be read from the current stream.</param>
            <exception cref="T:System.ArgumentException">The sum of <paramref name="offset"/> and <paramref name="count"/> is larger than the buffer length.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is <c>null</c>.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="offset"/> or <paramref name="count"/> is negative.</exception>
            <exception cref="T:System.IO.IOException">An I/O error occurs.</exception>
            <exception cref="T:System.NotSupportedException">The stream does not support reading.</exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            When overridden in a derived class, sets the position within the current stream.
            </summary>
            <returns>
            The new position within the current stream.
            </returns>
            <param name="offset">A byte offset relative to the <paramref name="origin"/> parameter.</param>
            <param name="origin">A value of type <see cref="T:System.IO.SeekOrigin"/> indicating the reference point used to obtain the new position.</param>
            <exception cref="T:System.IO.IOException">An I/O error occurs.</exception>
            <exception cref="T:System.NotSupportedException">The stream does not support seeking, such as if the stream is constructed from a pipe or console output.</exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.UpdateLocalBuffer(System.Boolean)">
            <summary>
            Updates the local buffer data.
            </summary>
            <param name="isWriting">Hints to the stream if write access is desired.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Copy(System.Int64,System.Int64,System.Int32)">
            <summary>
            Copies a block of data from the current stream to another position within the same stream.
            </summary>
            <param name="source">The starting position in the stream from which data will be copied.</param>
            <param name="destination">The position in the stream where the data will be copied to.</param>
            <param name="length">The number of bytes to copy from the source position to the destination position.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.InsertBytes(System.Int32,System.Int32)">
            <summary>
            Inserts a certain number of bytes into the stream, shifting valid data to the right.  The stream's position remains unchanged.
            (i.e., pointing to the beginning of the newly inserted bytes).
            </summary>
            <param name="numberOfBytes">The number of bytes to insert</param>
            <param name="lengthOfValidDataToShift">The number of bytes that will need to be shifted to perform this insert</param>
            <remarks>
            Internally this function merely accomplishes an Array.Copy(stream,position,stream,position+numberOfBytes,lengthOfValidDataToShift)
            However, it's much more complicated than this. So this is a pretty useful function.
            The newly created space is uninitialized.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.RemoveBytes(System.Int32,System.Int32)">
            <summary>
            Removes a certain number of bytes from the stream, shifting valid data after this location to the left.  The stream's position remains unchanged.
            (i.e., pointing to where the data used to exist).
            </summary>
            <param name="numberOfBytes">
            The distance to shift.  Positive means shifting to the right (i.e., inserting data)
            Negative means shift to the left (i.e., deleting data)
            </param>
            <param name="lengthOfValidDataToShift">
            The number of bytes that will need to be shifted to perform the remove.
            This only includes the data that is valid after the shift is complete, and not the data that will be removed.
            </param>
            <remarks>
            Internally this function merely accomplishes an Array.Copy(stream,position+numberOfBytes,stream,position,lengthOfValidDataToShift)
            However, it's much more complicated than this. So this is a pretty useful function.
            The space at the end of the copy is uninitialized.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.SByte)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Boolean)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.UInt16)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.UInt32)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.UInt64)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Single)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Double)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.DateTime)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Byte)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Int16)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Int32)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Int64)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Decimal)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Guid)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.WriteUInt24(System.UInt32)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.WriteUInt40(System.UInt64)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.WriteUInt48(System.UInt64)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.WriteUInt56(System.UInt64)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.WriteUInt(System.UInt64,System.Int32)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
            <param name="bytes">The number of bytes to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write7Bit(System.UInt32)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write7Bit(System.UInt64)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.String)">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Byte[])">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.WriteWithLength(System.Byte[])">
            <summary>
            Writes the specified <paramref name="value"/> to the underlying stream in little-endian format.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Write(System.Byte*,System.Int32)">
            <summary>
            Writes the specified <paramref name="buffer"/> to the underlying stream in little-endian format.
            </summary>
            <param name="buffer">The pointer to the first byte.</param>
            <param name="length">The number of bytes to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadInt8">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadBoolean">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadUInt16">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadUInt24">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadUInt32">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadUInt40">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadUInt48">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadUInt56">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadUInt64">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadUInt(System.Int32)">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <param name="bytes">The number of bytes in the value</param>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadSingle">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadDouble">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadDateTime">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadUInt8">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadInt16">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadInt32">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadInt64">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadDecimal">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadGuid">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Read7BitUInt32">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.Read7BitUInt64">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadBytes(System.Int32)">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <param name="count">The number of bytes to read.</param>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadBytes">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.TryReadBytes(System.Int32,System.Byte[]@)">
            <summary>
            Attempts to read a byte array from the stream with a specified maximum length.
            </summary>
            <param name="maxLength">The maximum allowed length for the byte array to be read.</param>
            <param name="value">When this method returns, contains the byte array read from the stream, if successful; otherwise, <c>null</c>.</param>
            <returns>
            <c>true</c> If a byte array is successfully read within the specified maximum length; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadString">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.TryReadString(System.Int32,System.String@)">
            <summary>
            Attempts to read a byte array from the stream with a specified maximum length.
            </summary>
            <param name="maxLength">The maximum allowed length for the byte array to be read.</param>
            <param name="value">When this method returns, contains the byte array read from the stream, if successful; otherwise, <c>null</c>.</param>
            <returns>
            <c>true</c> if a byte array is successfully read within the specified maximum length; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadAll(System.Byte*,System.Int32)">
            <summary>
            Reads from the underlying stream in little-endian format. Advancing the position.
            </summary>
            <param name="buffer">The pointer to write the data to.</param>
            <param name="length">The number of bytes to read.</param>
            <returns>The data read.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamBase.ReadAll(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads all of the provided bytes. Will not return prematurely,
            but continue to execute a <see cref="M:SnapDB.IO.BinaryStreamBase.Read(System.Byte[],System.Int32,System.Int32)"/> command until the entire
            <paramref name="length"/> has been read.
            </summary>
            <param name="buffer"></param>
            <param name="position"></param>
            <param name="length"></param>
            <exception cref="T:System.IO.EndOfStreamException">occurs if the end of the stream has been reached.</exception>
        </member>
        <member name="F:SnapDB.IO.BinaryStreamBase.Utf8">
            <summary>
            A shared instance of UTF8 encoding.
            </summary>
        </member>
        <member name="T:SnapDB.IO.BinaryStreamPointerBase">
            <summary>
            An implementation of <see cref="T:SnapDB.IO.BinaryStreamBase"/> that is pointer based.
            </summary>
        </member>
        <member name="F:SnapDB.IO.BinaryStreamPointerBase.Current">
            <summary>
            The current position data.
            </summary>
        </member>
        <member name="F:SnapDB.IO.BinaryStreamPointerBase.First">
            <summary>
            The first position of the block.
            </summary>
        </member>
        <member name="F:SnapDB.IO.BinaryStreamPointerBase.FirstPosition">
            <summary>
            The position that corresponds to the first byte in the buffer.
            </summary>
        </member>
        <member name="F:SnapDB.IO.BinaryStreamPointerBase.LastPosition">
            <summary>
            Contains the position for the last position.
            </summary>
        </member>
        <member name="F:SnapDB.IO.BinaryStreamPointerBase.LastRead">
            <summary>
            One past the last address for reading.
            </summary>
        </member>
        <member name="F:SnapDB.IO.BinaryStreamPointerBase.LastWrite">
            <summary>
            One past the last address for writing.
            </summary>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.IO.BinaryStreamPointerBase"/>.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamPointerBase.CanRead">
            <summary>
            Indicates whether or not the stream allows reading.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamPointerBase.CanSeek">
            <summary>
            Indicates whether or not the stream allows seeking.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamPointerBase.CanWrite">
            <summary>
            Indicates whether or not the stream allows writing.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamPointerBase.Length">
            <summary>
            Throws a <see cref="T:System.NotSupportedException"/> since getting the length of this stream is not supported.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamPointerBase.PointerVersion">
            <summary>
            Gets the pointer version number, assuming that this binary stream has an unmanaged buffer backing this stream.
            If the pointer version is the same, then any pointer acquired is still valid.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamPointerBase.Position">
            <summary>
            Gets or sets the current position for the stream.
            </summary>
            <remarks>
            It is important to use this to Get or Set the position from the underlying stream since
            this class buffers the results of the query. Setting this field does not guarantee that
            the underlying stream will get set. Call FlushToUnderlyingStream to accomplish this.
            </remarks>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamPointerBase.RemainingReadLength">
            <summary>
            Returns the number of bytes available at the end of the stream.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamPointerBase.RemainingWriteLength">
            <summary>
            Returns the number of bytes available at the end of the stream for writing purposes.
            </summary>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.GetWritePointer(System.Int64,System.Int32)">
            <summary>
            Gets a pointer to the specified write position in the binary stream that can be used for writing up the provided length and reserving space for writing the data.
            Current position does not get advanced after calling this function.
            </summary>
            <param name="position">The position in the binary stream to obtain the pointer for.</param>
            <param name="length">The number of bytes valid for writing.</param>
            <returns>A pointer to the specified write position in the binary stream.</returns>
            <exception cref="T:System.Exception">Thrown if the provided <paramref name="length"/> is greater than the available remaining space in the stream.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.GetReadPointer(System.Int64,System.Int32)">
            <summary>
            Gets a read pointer to a specified position in the stream for a specified length of data.
            </summary>
            <param name="position">The position in the stream to obtain the read pointer from.</param>
            <param name="length">The length of data to read starting from the specified position.</param>
            <returns>A read pointer to the specified position in the stream.</returns>
            <exception cref="T:System.Exception">Thrown if the requested length exceeds the available data.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.GetReadPointer(System.Int64,System.Int32,System.Boolean@)">
            <summary>
            Gets a read pointer to a specified position in the stream for a specified length of data
            and determines if the stream supports writing at that position.
            </summary>
            <param name="position">The position in the stream to obtain the read pointer from.</param>
            <param name="length">The length of data to read starting from the specified position.</param>
            <param name="supportsWriting">
            When this method returns, contains a boolean indicating whether writing is supported at the specified position.
            </param>
            <returns>A read pointer to the specified position in the stream.</returns>
            <exception cref="T:System.Exception">Thrown if the requested length exceeds the available data.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Copy(System.Int64,System.Int64,System.Int32)">
            <summary>
            Copies a block of data from one position in the stream to another position within the same stream.
            </summary>
            <param name="source">The starting position in the stream from which data will be copied.</param>
            <param name="destination">The position in the stream where the data will be copied to.</param>
            <param name="length">The number of bytes to copy from the source position to the destination position.</param>
            <exception cref="T:System.ArgumentException">Thrown if source, destination, or length is less than zero.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Write(System.Byte)">
            <summary>
            Writes a single byte to the stream.
            </summary>
            <param name="value">The byte value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Write(System.Int16)">
            <summary>
            Writes a single short to the stream.
            </summary>
            <param name="value">The short value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Write(System.Int32)">
            <summary>
            Writes a single int to the stream.
            </summary>
            <param name="value">The int value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Write(System.Int64)">
            <summary>
            Writes a single long to the stream.
            </summary>
            <param name="value">The long value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Write7Bit(System.UInt32)">
            <summary>
            Writes a single uint to the stream.
            </summary>
            <param name="value">The uint value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Write7Bit(System.UInt64)">
            <summary>
            Writes a single ulong to the stream.
            </summary>
            <param name="value">The ulong value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Write(System.Byte*,System.Int32)">
            <summary>
            Writes a block of data from a pointer to the stream.
            </summary>
            <param name="buffer">A pointer to the data to write.</param>
            <param name="length">The number of bytes to write from the buffer.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Writes a block of data from a byte array to the stream, starting from a specified offset and for a specified count of bytes.
            </summary>
            <param name="value">The byte array containing the data to write.</param>
            <param name="offset">The starting offset in the byte array from which to begin writing.</param>
            <param name="count">The number of bytes to write from the byte array.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.ReadUInt8">
            <summary>
            Reads a single unsigned byte (UInt8) from the stream.
            </summary>
            <returns>The unsigned byte (UInt8) read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.ReadInt16">
            <summary>
            Reads a single unsigned byte (UInt16) from the stream.
            </summary>
            <returns>The unsigned byte (UInt16) read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.ReadInt32">
            <summary>
            Reads a single unsigned byte (UInt32) from the stream.
            </summary>
            <returns>The unsigned byte (UInt32) read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.ReadInt64">
            <summary>
            Reads a single unsigned byte (UInt64) from the stream.
            </summary>
            <returns>The unsigned byte (UInt64) read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Read7BitUInt32">
            <summary>
            Reads a 7-bit encoded unsigned 32-bit integer (UInt32) from the stream.
            </summary>
            <returns>The 7-bit encoded unsigned 32-bit integer (UInt32) read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Read7BitUInt64">
            <summary>
            Reads a 7-bit encoded unsigned 64-bit integer (UInt64) from the stream.
            </summary>
            <returns>The 7-bit encoded unsigned 64-bit integer (UInt64) read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a specified number of bytes from the BinaryStream and advances the position by that amount.
            </summary>
            <param name="value">The byte array where the read bytes will be stored.</param>
            <param name="offset">The starting index in the byte array where the read bytes will be placed.</param>
            <param name="count">The maximum number of bytes to read.</param>
            <returns>The total number of bytes read into the buffer.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.SetLength(System.Int64)">
            <summary>
            Sets the length of the BinaryStream, which is not supported and will throw a <see cref="T:System.NotSupportedException"/>.
            </summary>
            <param name="value">The desired length of the BinaryStream.</param>
            <exception cref="T:System.NotSupportedException">Thrown to indicate that setting the length of the BinaryStream is not supported.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamPointerBase.Flush">
            <summary>
            Flushes any buffered data or state within the stream.
            This method intentionally does nothing, as there is no buffering to flush.
            </summary>
        </member>
        <member name="T:SnapDB.IO.BinaryStreamStream">
            <summary>
            A <see cref="T:System.IO.Stream"/> wrapper around a <see cref="T:SnapDB.IO.BinaryStreamBase"/>.
            </summary>
            <remarks>
            A <see cref="T:System.IO.Stream"/> inherits from <see cref="T:System.MarshalByRefObject"/>
            which prevents any methods from inlining. Therefore, a <see cref="T:SnapDB.IO.BinaryStreamBase"/>
            will not inherit from <see cref="T:System.IO.Stream"/>.
            </remarks>
        </member>
        <member name="F:SnapDB.IO.BinaryStreamStream.BaseStream">
            <summary>
            A new <see cref="F:SnapDB.IO.BinaryStreamStream.BaseStream"/> that reads and writes to a little-endian stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamStream.#ctor(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Creates a <see cref="T:System.IO.Stream"/> wrapper around a <see cref="T:SnapDB.IO.BinaryStreamBase"/>.
            </summary>
            <param name="baseStream"></param>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamStream.CanRead">
            <summary>
            When overridden in a derived class, gets a value indicating whether the current stream supports reading.
            </summary>
            <returns>
            <c>true</c> if the stream supports reading; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamStream.CanSeek">
            <summary>
            When overridden in a derived class, gets a value indicating whether the current stream supports seeking.
            </summary>
            <returns>
            <c>true</c> if the stream supports seeking; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamStream.CanWrite">
            <summary>
            When overridden in a derived class, gets a value indicating whether the current stream supports writing.
            </summary>
            <returns>
            <c>true</c> if the stream supports seeking; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamStream.Length">
            <summary>
            When overridden in a derived class, gets the length in bytes of the stream.
            </summary>
            <returns>
            A long value representing the length of the stream in bytes.
            </returns>
            <exception cref="T:System.NotSupportedException">A class derived from Stream does not support seeking.</exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamStream.Position">
            <summary>
            When overridden in a derived class, gets or sets the position within the current stream.
            </summary>
            <returns>
            The current position within the stream.
            </returns>
            <exception cref="T:System.IO.IOException">An I/O error occurs.</exception>
            <exception cref="T:System.NotSupportedException">The stream does not support seeking.</exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamStream.Flush">
            <summary>
            When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.
            </summary>
            <exception cref="T:System.IO.IOException">An I/O error occurs. </exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            When overridden in a derived class, sets the position within the current stream.
            </summary>
            <returns>
            The new position within the current stream.
            </returns>
            <param name="offset">A byte offset relative to the <paramref name="origin"/> parameter.</param>
            <param name="origin">A value of type <see cref="T:System.IO.SeekOrigin"/> indicating the reference point used to obtain the new position.</param>
            <exception cref="T:System.IO.IOException">An I/O error occurs.</exception>
            <exception cref="T:System.NotSupportedException">The stream does not support seeking, such as if the stream is constructed from a pipe or console output.</exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamStream.SetLength(System.Int64)">
            <summary>
            When overridden in a derived class, sets the length of the current stream.
            </summary>
            <param name="value">The desired length of the current stream in bytes.</param>
            <exception cref="T:System.IO.IOException">An I/O error occurs.</exception>
            <exception cref="T:System.NotSupportedException">The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.</exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamStream.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
            </summary>
            <returns>
            The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
            </returns>
            <param name="buffer">
            An array of bytes. When this method returns, the buffer contains the specified byte array with the values between <paramref name="offset"/>
            and (<paramref name="offset"/> + <paramref name="count"/> - 1) replaced by the bytes read from the current source.
            </param>
            <param name="offset">
            The zero-based byte offset in <paramref name="buffer"/> at which to begin storing the data read from the current stream.
            </param>
            <param name="count">
            The maximum number of bytes to be read from the current stream.
            </param>
            <exception cref="T:System.ArgumentException">
            The sum of <paramref name="offset"/> and <paramref name="count"/> is larger than the buffer length.
            </exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="buffer"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="offset"/> or <paramref name="count"/> is negative.</exception>
            <exception cref="T:System.IO.IOException">An I/O error occurs.</exception>
            <exception cref="T:System.NotSupportedException">The stream does not support reading.</exception>
            <exception cref="T:System.ObjectDisposedException">Methods were called after the stream was closed.</exception>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamStream.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
            </summary>
            <param name="buffer">An array of bytes. This method copies <paramref name="count"/> bytes from <paramref name="buffer"/> to the current stream. </param>
            <param name="offset">The zero-based byte offset in <paramref name="buffer"/> at which to begin copying bytes to the current stream. </param>
            <param name="count">The number of bytes to be written to the current stream. </param>
        </member>
        <member name="T:SnapDB.IO.BinaryStreamWrapper">
            <summary>
            A simple wrapper of a <see cref="T:System.IO.Stream"/>. Provides no caching functionality.
            </summary>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamWrapper.#ctor(System.IO.Stream,System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.IO.BinaryStreamWrapper"/> class with the specified <see cref="T:System.IO.Stream"/> and ownership information.
            </summary>
            <param name="stream">The underlying <see cref="T:System.IO.Stream"/> to be wrapped.</param>
            <param name="ownsStream">Indicates whether this wrapper owns the underlying stream.</param>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamWrapper.CanRead">
            <summary>
            Gets a value indicating whether the underlying stream supports reading.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamWrapper.CanSeek">
            <summary>
            Gets a value indicating whether the underlying stream supports seeking.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamWrapper.CanWrite">
            <summary>
            Gets a value indicating whether the underlying stream supports writing.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamWrapper.Length">
            <summary>
            Gets the length (in bytes) of the underlying stream.
            </summary>
        </member>
        <member name="P:SnapDB.IO.BinaryStreamWrapper.Position">
            <summary>
            Gets or sets the current position for the stream.
            </summary>
            <remarks>
            It is important to use this to get or set the position from the underlying stream since
            this class buffers the results of the query. Setting this field does not guarantee that
            the underlying stream will get set. Call FlushToUnderlyingStream to accomplish this.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamWrapper.Dispose(System.Boolean)">
            <summary>
            Releases and cleans up resources associated with the object.
            </summary>
            <param name="disposing">Indicates whether the method is called from an explicit disposal or during finalization.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamWrapper.Write(System.Byte)">
            <summary>
            Writes a byte to the underlying stream.
            </summary>
            <param name="value">The byte to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamWrapper.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Writes a block of bytes to the underlying stream.
            </summary>
            <param name="value">The buffer containing the data to write.</param>
            <param name="offset">The zero-based byte offset in the buffer from which to begin writing.</param>
            <param name="count">The maximum number of bytes to write.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamWrapper.ReadUInt8">
            <summary>
            Reads a byte from the underlying stream.
            </summary>
            <returns>The byte read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamWrapper.Flush">
            <summary>
            Flushes the underlying stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamWrapper.SetLength(System.Int64)">
            <summary>
            Sets the length of the underlying stream.
            </summary>
            <param name="value">The desired length of the stream in bytes.</param>
        </member>
        <member name="M:SnapDB.IO.BinaryStreamWrapper.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a block of bytes from the underlying stream.
            </summary>
            <param name="value">The buffer where the read data will be stored.</param>
            <param name="offset">The zero-based byte offset in the buffer from which to begin writing the read data.</param>
            <param name="count">The maximum number of bytes to read.</param>
            <returns>The total number of bytes read into the buffer.</returns>
        </member>
        <member name="T:SnapDB.IO.FileStructure.BlockType">
            <summary>
            Each block of bytes in a file is one of these types.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.BlockType.FileAllocationTable">
            <summary>
            The first few pages of a file system.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.BlockType.DataBlock">
            <summary>
            Contains the actual data.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.BlockType.IndexIndirect1">
            <summary>
            A metadata block. Contains a set of pointer blocks that point to <see cref="F:SnapDB.IO.FileStructure.BlockType.IndexIndirect2"/> blocks.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.BlockType.IndexIndirect2">
            <summary>
            A metadata block. Contains a set of pointer blocks that point to <see cref="F:SnapDB.IO.FileStructure.BlockType.IndexIndirect3"/> blocks.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.BlockType.IndexIndirect3">
            <summary>
            A metadata block. Contains a set of pointer blocks that point to <see cref="F:SnapDB.IO.FileStructure.BlockType.IndexIndirect4"/> blocks.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.BlockType.IndexIndirect4">
            <summary>
            A metadata block. Contains a set of pointer blocks that point to the actual data.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.FileHeaderAttributes">
            <summary>
            Defines a set of attribute flags associated with file header.
            </summary>
            <summary>
            Represents attributes that can be stored in the file header block.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.FileHeaderAttributes.EndOfAttributes">
            <summary>
            Indicates the end of file header attributes.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.FileHeaderAttributes.UserAttributes">
            <summary>
            Represents user-defined attributes stored in the file header.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.FileHeaderAttributes.FileFlags">
            <summary>
            Represents file flags stored in the file header.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.FileHeaderAttributes.HistorianMetaDataVersion">
            <summary>
            Represents the version of Historian metadata stored in the file header.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.FileHeaderBlock">
            <summary>
            Contains the information that is in the header page of an archive file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.ArchiveId">
            <summary>
            The GUID number for this archive.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.ArchiveType">
            <summary>
            The GUID number for this archive.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.BlockSize">
            <summary>
            The number of bytes per block for the file structure.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.CanRead">
            <summary>
            Determines if the archive file can be read
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.CanWrite">
            <summary>
            Determines if the file can be written to because enough features are recognized by this current version to do it without corrupting the file system.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.DataBlockSize">
            <summary>
            Gets the size of each data block (block size - overhead)
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.FileCount">
            <summary>
            Returns the number of files that are in this file system.
            </summary>
            <returns>Number of files that are in this file system. </returns>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.Files">
            <summary>
            A list of all of the files in this collection.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.Flags">
            <summary>
            User definable flags to associate with archive files.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.HeaderBlockCount">
            <summary>
            Gets the number of times the file header exists in the archive file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.IsSimplifiedFileFormat">
            <summary>
            Gets if this file uses the simplified file format.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.LastAllocatedBlock">
            <summary>
            Represents the last block that has been allocated.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.FileHeaderBlock.SnapshotSequenceNumber">
            <summary>
            Maintains a sequential number that represents the version of the file.
            </summary>
            <remarks>
            This will be updated every time the file system has been modified. Initially, it will be one.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.CloneEditable">
            <summary>
            Clones the object, while incrementing the sequence number.
            </summary>
            <returns>The clone of the object.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.AllocateFreeBlocks(System.UInt32)">
            <summary>
            Allocates a sequential number of blocks at the end of the file and returns the starting address of the allocation
            </summary>
            <param name="count">the number of blocks to allocate</param>
            <returns>the address of the first block of the allocation </returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.CreateNewFile(SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Creates a new file on the file system and returns the <see cref="T:SnapDB.IO.FileStructure.SubFileHeader"/> associated with the new file.
            </summary>
            <param name="fileName">Represents the nature of the data that will be stored in this file.</param>
            <returns>The newly created <see cref="T:SnapDB.IO.FileStructure.SubFileHeader"/> instance.</returns>
            <remarks>A file system only supports 64 files. This is a fundamental limitation and cannot be changed easily.</remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.ContainsSubFile(SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Determines if the file contains the subfile
            </summary>
            <param name="fileName">the subfile to look for</param>
            <returns>true if contained, false otherwise</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.GetBytes">
            <summary>
            Gets the binary representation of the file allocation table.
            </summary>
            <returns>A byte array representing the file allocation table that can be written to an archive file.</returns>
            <exception cref="T:System.InvalidOperationException">Thrown if the file allocation table is invalid.</exception>
            <remarks>
            This method constructs the binary representation of the file allocation table, including metadata and flags.
            It ensures the validity of the file allocation table before generating the bytes.
            </remarks>    
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.SetMembersAsReadOnly">
            <summary>
            Requests that member fields be set to readonly.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.CloneMembersAsEditable">
            <summary>
            Request that member fields be cloned and marked as editable.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.IsFileAllocationTableValid">
            <summary>
            Checks all of the information in the header file
            to verify if it is valid.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.LoadFromBuffer(System.Byte[])">
            <summary>
            This procedure will attempt to read all of the data out of the file allocation table
            If the file allocation table is corrupt, an error will be generated.
            </summary>
            <param name="buffer">the block that contains the buffer data.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.SearchForBlockSize(System.IO.Stream)">
            <summary>
            Looks in the contents of a file for the block size of the file.
            </summary>
            <param name="stream">the stream to look</param>
            <returns>the number of bytes in a block. Always a power of 2.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.CreateNew(System.Int32,System.Guid[])">
            <summary>
            Creates a new file header.
            </summary>
            <param name="blockSize">The block size to make the header.</param>
            <param name="flags">Flags to write to the file.</param>
            <returns>The newly created <see cref="T:SnapDB.IO.FileStructure.SubFileHeader"/> instance.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.CreateNewSimplified(System.Int32,System.Guid[])">
            <summary>
            Creates a new simplified <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/> with the specified <paramref name="blockSize"/> and optional <paramref name="flags"/>.
            </summary>
            <param name="blockSize">The block size of the header.</param>
            <param name="flags">Optional flags to set in the header.</param>
            <returns>The newly created simplified <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/> instance.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.FileHeaderBlock.Open(System.Byte[])">
            <summary>
            Opens an existing <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/> from the provided binary <paramref name="data"/>.
            </summary>
            <param name="data">The binary data representing the file header.</param>
            <returns>The opened <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/> instance.</returns>
        </member>
        <member name="T:SnapDB.IO.FileStructure.FileStructureConstants">
            <summary>
            Maintains some global constants for the archive file.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.FileStructureConstants.BlockFooterLength">
            <summary>
            The number of bytes in the footer of a block.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.IndexMapper">
            <summary>
            This class is used to convert the position of a file into a set of directions
            that <see cref="T:SnapDB.IO.FileStructure.IndexParser"/> can use to lookup the data cluster.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.IndexMapper.FirstIndirectBaseIndex">
            <summary>
            Gets the index of the first cluster that can be accessed by this indirect block. This value is useful because
            the footer of the indirect page will have this address.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IndexMapper.#ctor(System.Int32)">
            <summary>
            Creates a <see cref="T:SnapDB.IO.FileStructure.IndexMapper"/> that is based on a given <paramref name="blockSize"/>.
            </summary>
            <param name="blockSize">the number of bytes per block. Cannot be less than 64, greater than 1048576</param>
        </member>
        <member name="P:SnapDB.IO.FileStructure.IndexMapper.BaseVirtualAddressIndexValue">
            <summary>
            Determines the block index value that will be stored in the footer of the data block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.IndexMapper.FirstIndirectOffset">
            <summary>
            Gets the offset position for the address that must be read within the indirect block
            at the first indirect block.
            </summary>
            <remarks>Returns a -1 of invalid. -1 was chosen since it will likely generate an error if not handled properly.</remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.IndexMapper.SecondIndirectOffset">
            <summary>
            Gets the offset position for the address that must be read within the indirect block
            at the second indirect block.
            </summary>
            <remarks>Returns a -1 of invalid. -1 was chosen since it will likely generate an error if not handled properly.</remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.IndexMapper.ThirdIndirectOffset">
            <summary>
            Gets the offset position for the address that must be read within the indirect block
            at the third indirect block.
            </summary>
            <remarks>Returns a -1 of invalid. -1 was chosen since it will likely generate an error if not handled properly.</remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.IndexMapper.FourthIndirectBaseIndex">
            <summary>
            Gets the index of the third cluster that can be accessed by this indirect block. This value is useful because
            the footer of the indirect page will have this address.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.IndexMapper.FourthIndirectOffset">
            <summary>
            Gets the offset position for the address that must be read within the indirect block
            at the forth indirect block.
            </summary>
            <remarks>Returns a -1 of invalid. -1 was chosen since it will likely generate an error if not handled properly.</remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.IndexMapper.SecondIndirectBaseIndex">
            <summary>
            Gets the index of the second cluster that can be accessed by this indirect block. This value is useful because
            the footer of the indirect page will have this address.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.IndexMapper.ThirdIndirectBaseIndex">
            <summary>
            Gets the index of the third cluster that can be accessed by this indirect block. This value is useful because
            the footer of the indirect page will have this address.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IndexMapper.MapPosition(System.UInt32)">
            <summary>
            Updates this class to reflect the path that must be taken to reach the cluster that contains this virtual point
            </summary>
            <param name="positionIndex">The address that is being translated.</param>
            <returns>
            This determines what has changed in the most recent update request.
            The calling classes can use this to determine what lookup information needs to be
            scrapped, and what can be kept.
            0=Immediate, 1=Single, 2=Double, 3=Triple, 4=NoChange
            </returns>
        </member>
        <member name="T:SnapDB.IO.FileStructure.IndexParser">
            <summary>
            This class provides passthrough properties for the <see cref="T:SnapDB.IO.FileStructure.IndexMapper"/> class as well follows the directions
            of the Index Mapper to find the data cluster that contains the point in question.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.IndexParser.DataClusterAddress">
            <summary>
            The address of the first block of the data cluster.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.IndexParser.FirstIndirectBlockAddress">
            <summary>
            The address of the first indirect block.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.IndexParser.FourthIndirectBlockAddress">
            <summary>
            The address of the fourth indirect block.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.IndexParser.SecondIndirectBlockAddress">
            <summary>
            The address of the second indirect block.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.IndexParser.ThirdIndirectBlockAddress">
            <summary>
            The address of the third indirect block.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IndexParser.#ctor(SnapDB.IO.FileStructure.SubFileDiskIoSessionPool)">
            <summary>
            Creates a new instance of this class.
            </summary>
            <param name="ioSessions">IoSessions to use to read from this disk</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IndexParser.VirtualToPhysical(System.UInt32)">
            <summary>
            This function will also call <see cref="M:SnapDB.IO.FileStructure.IndexMapper.MapPosition(System.UInt32)"/> so after it returns, the current block data will be updated.
            </summary>
            <param name="positionIndex">The virtual index address.</param>
            <returns>The physical position index for the provided virtual position.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IndexParser.SetPositionAndLookup(System.UInt32)">
            <summary>
            Determines if the current sector contains the position passed. If not, it updates the current sector to the one that contains the passed position.
            </summary>
            <param name="positionIndex">The position to navigate to indexed to the block data block size.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IndexParser.ClearIndexCache(SnapDB.IO.FileStructure.IndexParser)">
            <summary>
            Resets the index cache with the information from the supplied <paramref name="mostRecentParser"/>.
            </summary>
            <param name="mostRecentParser"></param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IndexParser.UpdateBlockInformation">
            <summary>
            Looks up the physical/virtual block positions for the address given.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IndexParser.GetBlockIndexValue(System.UInt32,System.Int32,SnapDB.IO.FileStructure.BlockType,System.UInt32)">
            <summary>
            This uses the (blockIndex, offset) values to determine what the next block index is.
            This also has consistency checks to determine if the file is inconsistent (potentially corruption).
            </summary>
            <param name="blockIndex">The index of the block to read.</param>
            <param name="offset">The offset inside the block to use to determine the next index block.</param>
            <param name="blockType">The value 1-4 which tell what indirect block this is.</param>
            <param name="blockBaseIndex">The lowest virtual address that can be referenced from this indirect block.</param>
            <returns>The value at the specified offset within the specified block.</returns>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.BufferedFile">
            <summary>
            A buffered file stream utilizes the <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/> to intellectually cache
            the contents of files.
            </summary>
            <remarks>
            This class is a special purpose class that can only be used for the <see cref="T:SnapDB.IO.FileStructure.TransactionalFileStructure"/>
            and can not buffer general purpose file.
            The cache algorithm is a least recently used algorithm.
            This is accomplished by incrementing a counter every time a page is accessed
            and dividing by 2 every time a collection occurs from the <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/>.
            </remarks>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_diskBlockSize">
            <summary>
            All I/O to the disk is done at this maximum block size. Usually 64KB
            This value is equal to the MemoryPool's Page Size.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_fileStructureBlockSize">
            <summary>
            The size of an individual block of the FileStructure. Usually 4KB.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_lengthOfCommittedData">
            <summary>
            The number of bytes contained in the committed area of the file.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_lengthOfHeader">
            <summary>
            The length of the 10 header pages.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_pageReplacementAlgorithm">
            <summary>
            Location to store cached memory pages.
            This class is thread-safe.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_pool">
            <summary>
            The <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/> where the memory pages come from.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_queue">
            <summary>
            Manages all I/O done to the physical file.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_syncRoot">
            <summary>
            Synchronize all calls to this class.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_writeBuffer">
            <summary>
            Any uncommitted data resides in this location.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.m_disposed">
            <summary>
            Gets if the class has been disposed.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.#ctor(SnapDB.IO.FileStructure.Media.CustomFileStream,SnapDB.IO.Unmanaged.MemoryPool,SnapDB.IO.FileStructure.FileHeaderBlock,System.Boolean)">
            <summary>
            Creates a file backed memory stream.
            </summary>
            <param name="stream">The <see cref="T:SnapDB.IO.FileStructure.Media.CustomFileStream"/> to buffer.</param>
            <param name="pool">The <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/> to allocate memory from.</param>
            <param name="header">The <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/> to be managed when modifications occur.</param>
            <param name="isNewFile">
            Tells if this is a newly created file. This will make sure that the
            first 10 pages have the header data copied to it.
            </param>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.BufferedFile.FileName">
            <summary>
            Gets the file name associated with the medium. Returns an empty string if a memory file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.BufferedFile.Length">
            <summary>
            Gets the current number of bytes used by the file system.
            This is only intended to be an approximate figure.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.GetBlock(SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock,SnapDB.IO.Unmanaged.BlockArguments)">
            <summary>
            Populates the pointer data inside <paramref name="args"/> for the desired block as specified in <paramref name="args"/>.
            This function will block if needing to retrieve data from the disk.
            </summary>
            <param name="pageLock">The reusable lock information about what this block is currently using.</param>
            <param name="args">
            Contains what block needs to be read and when this function returns,
            it will contain the proper pointer information for this block.
            </param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.GetBlockFromCommittedSpace(SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock,System.Int64,System.IntPtr@)">
            <summary>
            Processes the GetBlock from the committed area.
            </summary>
            <param name="pageLock">The page lock used for page management.</param>
            <param name="position">The position of the block.</param>
            <param name="pointer">an output parameter that contains the pointer for the provided position.</param>
            <remarks>The valid length is at least the size of the buffer pools page size.</remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.m_pool_RequestCollection(System.Object,SnapDB.IO.Unmanaged.CollectionEventArgs)">
            <summary>
            Handles the <see cref="E:SnapDB.IO.Unmanaged.MemoryPool.RequestCollection"/> event.
            </summary>
            <param name="sender">The sender of the event.</param>
            <param name="e">The collection event arguments.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.ReleaseWriteBufferSpace">
            <summary>
            Releases the buffered data contained in the buffer pool.
            This is accomplished by disposing of the writer and recreating it.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.CommitChanges(SnapDB.IO.FileStructure.FileHeaderBlock)">
            <summary>
            Executes a commit of data. This will flush the data to the disk use the provided header data to properly
            execute this function.
            </summary>
            <param name="header">File header block.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.CreateIoSession">
            <summary>
            Creates a <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> that can be used to read from this disk medium.
            </summary>
            <returns>A new BinaryStreamIoSessionBase instance.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.RollbackChanges">
            <summary>
            Rolls back all edits to the DiskMedium
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.ChangeExtension(System.String,System.Boolean,System.Boolean)">
            <summary>
            Changes the extension of the current file.
            </summary>
            <param name="extension">The new extension.</param>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.ChangeShareMode(System.Boolean,System.Boolean)">
            <summary>
            Reopens the file with different permissions.
            </summary>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.BufferedFile.IoSession">
            <summary>
            The <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> utilized by the <see cref="T:SnapDB.IO.FileStructure.Media.BufferedFile"/>.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.BufferedFile.IoSession.m_stream">
            <summary>
            The base stream
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.IoSession.#ctor(SnapDB.IO.FileStructure.Media.BufferedFile,SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm)">
            <summary>
            Creates a new <see cref="T:SnapDB.IO.FileStructure.Media.BufferedFile.IoSession"/>
            </summary>
            <param name="stream">The base class.</param>
            <param name="pageReplacement">The page replacement algorithm</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.IoSession.Finalize">
            <summary>
            Releases the unmanaged resources before the <see cref="T:SnapDB.IO.FileStructure.Media.BufferedFile.IoSession"/> object is reclaimed by <see cref="T:System.GC"/>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.BufferedFile.IoSession.GetBlock(SnapDB.IO.Unmanaged.BlockArguments)">
            <summary>
            Gets a block for the following I/O session.
            </summary>
            <param name="args">The <see cref="T:SnapDB.IO.Unmanaged.BlockArguments"/> to use to read and write to a block.</param>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.CustomFileStream">
            <summary>
            A functional wrapper around a <see cref="T:System.IO.FileStream"/>
            specific to how the <see cref="T:SnapDB.IO.FileStructure.TransactionalFileStructure"/> uses the <see cref="T:System.IO.FileStream"/>.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.CustomFileStream.m_isUsingStream">
            <summary>
            Lock this first. Allows the <see cref="F:SnapDB.IO.FileStructure.Media.CustomFileStream.m_stream"/> item to be replaced in
            a synchronized fashion.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.CustomFileStream.m_syncRoot">
            <summary>
            Needed to properly synchronize read and write operations.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.#ctor(System.Int32,System.Int32,System.String,System.Boolean,System.Boolean)">
            <summary>
            Creates a new CustomFileStream
            </summary>
            <param name="ioSize">The size of a buffer pool entry.</param>
            <param name="fileStructureBlockSize">The size of an individual block.</param>
            <param name="fileName">The filename.</param>
            <param name="isReadOnly">If the file is read-only.</param>
            <param name="isSharingEnabled">If the file is exclusively opened.</param>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.CustomFileStream.FileName">
            <summary>
            Gets the name of the file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.CustomFileStream.FileStructureBlockSize">
            <summary>
            Gets the number of bytes in a file structure block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.CustomFileStream.IoSize">
            <summary>
            Gets the number of bytes in each I/O operation.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.CustomFileStream.IsReadOnly">
            <summary>
            Gets if the file was opened read-only.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.CustomFileStream.IsSharingEnabled">
            <summary>
            Gets if the file was opened allowing shared read access.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.CustomFileStream.Length">
            <summary>
            Gets the length of the stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.FileStructure.Media.CustomFileStream"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.Open">
            <summary>
            Opens the underlying file stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.Close">
            <summary>
            Closes the underlying file stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.ReadRaw(System.Int64,System.Byte[],System.Int32)">
            <summary>
            Reads data from the disk.
            </summary>
            <param name="position">The starting position.</param>
            <param name="buffer">The byte buffer of data to read.</param>
            <param name="length">The number of bytes to read.</param>
            <returns>The number of bytes read.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.WriteRaw(System.Int64,System.Byte[],System.Int32)">
            <summary>
            Writes data to the disk.
            </summary>
            <param name="position">The starting position.</param>
            <param name="buffer">The byte buffer of data to write.</param>
            <param name="length">The number of bytes to write.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.Read(System.Int64,System.IntPtr)">
            <summary>
            Reads an entire page at the provided location. Also computes the checksum information.
            </summary>
            <param name="position">The stream position. May be any position inside the desired block.</param>
            <param name="locationToCopyData">The place where to write the data to.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.Write(System.Int64,SnapDB.IO.Unmanaged.MemoryPoolStreamCore,System.Int64,System.Boolean)">
            <summary>
            Writes all of the dirty blocks passed onto the disk subsystem. Also computes the checksum for the data.
            </summary>
            <param name="currentEndOfCommitPosition">The last valid byte of the file system where this data will be appended to.</param>
            <param name="stream">The source of the data to dump to the disk.</param>
            <param name="length">The number by bytes to write to the file system.</param>
            <param name="waitForWriteToDisk">True to wait for a complete commit to disk before returning from this function.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.FlushFileBuffers">
            <summary>
            Flushes any temporary data to the disk.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.ChangeExtension(System.String,System.Boolean,System.Boolean)">
            <summary>
            Changes the extension of the current file.
            </summary>
            <param name="extension">The new extension.</param>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.ChangeShareMode(System.Boolean,System.Boolean)">
            <summary>
            Reopens the file with different permissions.
            </summary>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.CustomFileStream.s_resourceList">
            <summary>
            Queues byte[] blocks.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.#cctor">
            <summary>
            Creates a resource list that everyone shares.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.CreateFile(System.String,System.Int32,System.Int32)">
            <summary>
            Creates a file with the supplied name.
            </summary>
            <param name="fileName">The name of the file.</param>
            <param name="ioBlockSize">The number of bytes to do all io with.</param>
            <param name="fileStructureBlockSize">The number of bytes in the file structure so check-sums can be properly computed.</param>
            <returns>A new <see cref="T:SnapDB.IO.FileStructure.Media.CustomFileStream"/> instance representing the specified file.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.CustomFileStream.OpenFile(System.String,System.Int32,System.Int32@,System.Boolean,System.Boolean)">
            <summary>
            Opens a file.
            </summary>
            <param name="fileName">The name of the file to open or create.</param>
            <param name="ioBlockSize">The I/O block size to use for the file.</param>
            <param name="fileStructureBlockSize">The file structure block size found in the file header.</param>
            <param name="isReadOnly">A boolean indicating whether the file is opened in read-only mode.</param>
            <param name="isSharingEnabled">A boolean indicating whether file sharing is enabled.</param>
            <returns>A new or existing <see cref="T:SnapDB.IO.FileStructure.Media.CustomFileStream"/> instance representing the specified file.</returns>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.DiskIo">
            <summary>
            The IO system that the entire file structure uses to accomplish it's IO operations.
            This class hands data one block at a time to requesting classes
            and is responsible for checking the footer data of the file for corruption.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIo.BlockSize">
            <summary>
            Gets the number of bytes in a single block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIo.FileSize">
            <summary>
            Gets the current size of the file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIo.IsDisposed">
            <summary>
            Gets if the class has been disposed.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIo.IsReadOnly">
            <summary>
            Gets if the disk supports writing.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIo.LastCommittedHeader">
            <summary>
            Gets the file header that was the last header to be committed to the disk.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIo.LastReadonlyBlock">
            <summary>
            Returns the last block that is read-only.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIo.Dispose">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.IO.FileStructure.Media.DiskIo"/> object and optionally releases the managed resources.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIo.RollbackChanges">
            <summary>
            Occurs when rolling back a transaction. This will free up
            any temporary space allocated for the change.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIo.CommitChanges(SnapDB.IO.FileStructure.FileHeaderBlock)">
            <summary>
            Commits changes made to the file represented by this object with the specified file header block.
            </summary>
            <param name="header">The file header block containing changes to be committed.</param>
            <exception cref="T:System.ObjectDisposedException">Thrown if the object has been disposed.</exception>
            <exception cref="T:System.Data.ReadOnlyException">Thrown if the object is in read-only mode.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIo.CreateDiskIoSession(SnapDB.IO.FileStructure.FileHeaderBlock,SnapDB.IO.FileStructure.SubFileHeader)">
            <summary>
            Creates a new <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> for performing disk I/O operations.
            </summary>
            <param name="header">The file header block associated with the session.</param>
            <param name="file">The optional subfile header associated with the session, or <c>null</c> if not applicable.</param>
            <returns>A <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> instance for performing disk I/O operations.</returns>
            <exception cref="T:System.ObjectDisposedException">Thrown if the <see cref="T:SnapDB.IO.FileStructure.Media.DiskIo"/> instance is disposed.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIo.ChangeExtension(System.String,System.Boolean,System.Boolean)">
            <summary>
            Changes the extension of the current file.
            </summary>
            <param name="extension">The new extension.</param>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIo.ChangeShareMode(System.Boolean,System.Boolean)">
            <summary>
            Reopens the file with different permissions.
            </summary>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.DiskIoSession">
            <summary>
            Provides a data IO session with the disk subsystem to perform basic read and write operations.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIoSession.#ctor(SnapDB.IO.FileStructure.Media.DiskIo,SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase,SnapDB.IO.FileStructure.FileHeaderBlock,SnapDB.IO.FileStructure.SubFileHeader)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> class for disk I/O operations.
            </summary>
            <param name="diskIo">The parent <see cref="T:SnapDB.IO.FileStructure.Media.DiskIo"/> instance associated with this session.</param>
            <param name="ioSession">The underlying binary stream I/O session used for reading and writing data.</param>
            <param name="header">The file header block associated with this session.</param>
            <param name="file">The subfile header associated with this session.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="diskIo"/>, <paramref name="ioSession"/>, or <paramref name="file"/> is <c>null</c>.</exception>
            <exception cref="T:System.ObjectDisposedException">Thrown if the <paramref name="diskIo"/> instance is disposed.</exception>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIoSession.BlockIndex">
            <summary>
            Gets the indexed page of this block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIoSession.IsDisposed">
            <summary>
            Returns <c>true</c> if this class is disposed.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIoSession.IsValid">
            <summary>
            Gets if the block in this I/O Session is valid.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIoSession.Length">
            <summary>
            Gets the number of bytes valid in this block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskIoSession.Pointer">
            <summary>
            Gets a pointer to the block.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIoSession.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIoSession.WriteToNewBlock(System.UInt32,SnapDB.IO.FileStructure.BlockType,System.UInt32)">
            <summary>
            Navigates to a block that will be written to.
            This class does not check if overwriting an existing block. So be careful not to corrupt the file.
            </summary>
            <param name="blockIndex">The index value of this block.</param>
            <param name="blockType">The type of this block.</param>
            <param name="indexValue">A value put in the footer of the block designating the index of this block.</param>
            <remarks>This function will increase the size of the file if the block exceeds the current size of the file.</remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIoSession.WriteToExistingBlock(System.UInt32,SnapDB.IO.FileStructure.BlockType,System.UInt32)">
            <summary>
            Writes data to an existing block with the specified block index, block type, and index value.
            </summary>
            <param name="blockIndex">The index of the block to write data to.</param>
            <param name="blockType">The type of the block to write.</param>
            <param name="indexValue">The index value associated with the block.</param>
            <exception cref="T:System.ObjectDisposedException">Thrown if this <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> instance or its parent <see cref="T:SnapDB.IO.FileStructure.Media.DiskIo"/> instance is disposed.</exception>
            <exception cref="T:System.Data.ReadOnlyException">Thrown if the subfile used for this I/O session is read-only.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown if <paramref name="blockIndex"/> is greater than 10 and less than or equal to the last committed block.</exception>
            <exception cref="T:System.Exception">Thrown if there is a read error or the read state is not valid.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIoSession.Read(System.UInt32,SnapDB.IO.FileStructure.BlockType,System.UInt32)">
            <summary>
            Reads data from a block with the specified block index, block type, and index value.
            </summary>
            <param name="blockIndex">The index of the block to read data from.</param>
            <param name="blockType">The type of the block to read.</param>
            <param name="indexValue">The index value associated with the block.</param>
            <exception cref="T:System.ObjectDisposedException">Thrown if this <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> instance or its parent <see cref="T:SnapDB.IO.FileStructure.Media.DiskIo"/> instance is disposed.</exception>
            <exception cref="T:System.Exception">Thrown if there is a read error or the read state is not valid.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIoSession.ReadOld(System.UInt32,SnapDB.IO.FileStructure.BlockType,System.UInt32)">
            <summary>
            Reads data from an old block with the specified block index, block type, and index value.
            </summary>
            <param name="blockIndex">The index of the old block to read data from.</param>
            <param name="blockType">The type of the old block to read.</param>
            <param name="indexValue">The index value associated with the old block.</param>
            <exception cref="T:System.ObjectDisposedException">Thrown if this <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> instance or its parent <see cref="T:SnapDB.IO.FileStructure.Media.DiskIo"/> instance is disposed.</exception>
            <exception cref="T:System.Exception">Thrown if there is a read error or the read state is not valid.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIoSession.Clear">
            <summary>
            Clears the data in the current <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> instance.
            </summary>
            <exception cref="T:System.ObjectDisposedException">Thrown if this <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> instance, its parent <see cref="T:SnapDB.IO.FileStructure.Media.DiskIo"/> instance, or the underlying I/O session instance is disposed.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskIoSession.ReadBlock(System.Boolean)">
            <summary>
            Tries to read data from the following file.
            </summary>
            <param name="requestWriteAccess"><c>true</c> if reading data from this block for the purpose of writing to it later.</param>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.DiskMedium">
            <summary>
            Provides read and write access to all of the different types of disk types
            to use to store the file structure.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.#ctor(SnapDB.IO.FileStructure.Media.IDiskMediumCoreFunctions,SnapDB.IO.FileStructure.FileHeaderBlock)">
            <summary>
            Class is created through static methods of this class.
            </summary>
            <param name="disk">The underlying disk medium.</param>
            <param name="header">The header data to use.</param>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskMedium.BlockSize">
            <summary>
            Gets the number of bytes in the file structure block size.
            </summary>
            <remarks>
            Typically 4KB in size.
            </remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskMedium.Header">
            <summary>
            Gets the most recent committed header from the archive file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.DiskMedium.Length">
            <summary>
            Gets the current number of bytes used by the file system.
            This is only intended to be an approximate figure.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.RollbackChanges">
            <summary>
            Occurs when rolling back a transaction. This will free up
            any temporary space allocated for the change.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.CommitChanges(SnapDB.IO.FileStructure.FileHeaderBlock)">
            <summary>
            Occurs when committing the following data to the disk.
            This will copy any pending data to the disk in a manner that
            will protect against corruption.
            </summary>
            <param name="header">The <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/> containing the file header information.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.CreateIoSession">
            <summary>
            Creates a <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> that can be used to read from this disk medium.
            </summary>
            <returns>A <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> representing the I/O session.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.ChangeExtension(System.String,System.Boolean,System.Boolean)">
            <summary>
            Changes the extension of the current file.
            </summary>
            <param name="extension">The new extension.</param>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.ChangeShareMode(System.Boolean,System.Boolean)">
            <summary>
            Reopens the file with different permissions.
            </summary>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.CreateMemoryFile(SnapDB.IO.Unmanaged.MemoryPool,System.Int32,System.Guid[])">
            <summary>
            Creates a new in-memory disk medium with the specified settings.
            </summary>
            <param name="pool">The memory pool to use for storage.</param>
            <param name="fileStructureBlockSize">The block size for the file's structure.</param>
            <param name="flags">An optional array of GUIDs representing flags to apply to the file header.</param>
            <returns>A <see cref="T:SnapDB.IO.FileStructure.Media.DiskMedium"/> instance representing the newly created in-memory disk medium.</returns>
            <remarks>
            This method creates a new in-memory disk medium using the provided <paramref name="pool"/> for storage.
            The <paramref name="fileStructureBlockSize"/> parameter specifies the block size for the file's structure.
            Additionally, optional flags can be passed as an array of <paramref name="flags"/> to apply to the file header.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.CreateFile(SnapDB.IO.FileStructure.Media.CustomFileStream,SnapDB.IO.Unmanaged.MemoryPool,System.Int32,System.Guid[])">
            <summary>
            Creates a new disk medium backed by a custom file stream with the specified settings.
            </summary>
            <param name="stream">The custom file stream to use as the underlying storage.</param>
            <param name="pool">The memory pool to use for caching.</param>
            <param name="fileStructureBlockSize">The block size for the file's structure.</param>
            <param name="flags">An optional array of GUIDs representing flags to apply to the file header.</param>
            <returns>A <see cref="T:SnapDB.IO.FileStructure.Media.DiskMedium"/> instance representing the newly created disk medium.</returns>
            <remarks>
            This method creates a new disk medium that uses a custom file stream <paramref name="stream"/>
            as the underlying storage. The <paramref name="pool"/> parameter specifies the memory pool to use for caching.
            The <paramref name="fileStructureBlockSize"/> parameter specifies the block size for the file's structure.
            Additionally, optional flags can be passed as an array of <paramref name="flags"/> to apply to the file header.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.DiskMedium.OpenFile(SnapDB.IO.FileStructure.Media.CustomFileStream,SnapDB.IO.Unmanaged.MemoryPool,System.Int32)">
            <summary>
            Opens an existing disk medium using a custom file stream and specified settings.
            </summary>
            <param name="stream">The custom file stream representing the existing disk storage.</param>
            <param name="pool">The memory pool to use for caching.</param>
            <param name="fileStructureBlockSize">The block size for the file's structure.</param>
            <returns>A <see cref="T:SnapDB.IO.FileStructure.Media.DiskMedium"/> instance representing the opened disk medium.</returns>
            <remarks>
            This method opens an existing disk medium by reading the file header from the provided
            custom file stream <paramref name="stream"/> and using it to initialize the disk medium.
            The <paramref name="pool"/> parameter specifies the memory pool to use for caching, and
            <paramref name="fileStructureBlockSize"/> specifies the block size for the file's structure.
            </remarks>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.IoReadState">
            <summary>
            Since exceptions are very expensive, this enum will be returned for basic
            I/O operations to let the reader know what to do with the data.
            </summary>
            <remarks>
            There two overarching conditions.  Valid or not Valid.
            If not valid, the reason why the page failed will be given.
            If a page is returned as valid, this does not mean that the
            page being referenced is the correct page, it is up to the class
            to check the footer of the page to verify that the page being read
            is the correct page.
            </remarks>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.IoReadState.Valid">
            <summary>
            Indicates that the read completed successfully.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.IoReadState.ChecksumInvalid">
            <summary>
            The checksum failed to compute.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.IoReadState.PageNewerThanSnapshotSequenceNumber">
            <summary>
            The page that was requested came from a newer version of the file.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.IoReadState.FileIdNumberDidNotMatch">
            <summary>
            The page came from a different file.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.IoReadState.IndexNumberMismatch">
            <summary>
            The index value did not match that of the file.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.IoReadState.BlockTypeMismatch">
            <summary>
            The page type requested did not match what was received.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.Footer.ComputeChecksum(System.IntPtr,System.Int64@,System.Int32@,System.Int32)">
            <summary>
            Computes checksum values for the specified data stored in an unmanaged memory block.
            </summary>
            <param name="data">A pointer to the start of the data to compute checksum for.</param>
            <param name="checksum1">Output: A long checksum value (64 bits).</param>
            <param name="checksum2">Output: An integer checksum value (32 bits).</param>
            <param name="length">The length of the data to be used for checksum computation, in bytes.</param>
            <remarks>
            This method computes checksum values for the data stored in an unmanaged memory block
            specified by the <paramref name="data"/> pointer. It uses the Murmur3 hashing algorithm
            to calculate the check-sums. The computed check-sums are returned as <paramref name="checksum1"/>
            (64 bits) and <paramref name="checksum2"/> (32 bits).
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.Footer.WriteChecksumResultsToFooter(System.IntPtr,System.Int32,System.Int32)">
            <summary>
            Writes checksum results to the footer of data blocks.
            </summary>
            <param name="data">A pointer to the start of the data blocks.</param>
            <param name="blockSize">The size of each data block, in bytes (must be a power of two).</param>
            <param name="length">The total length of the data, including all blocks.</param>
            <remarks>
            This method is used to write checksum results to the footer of data blocks. It ensures that
            the <paramref name="blockSize"/> is a power of two and that it evenly divides the specified
            <paramref name="length"/>. Then, it iterates through the data blocks and writes checksum
            results to their respective footers.
            </remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown when the <paramref name="blockSize"/> is not a power of two.
            </exception>
            <exception cref="T:System.ArgumentException">
            Thrown when the <paramref name="blockSize"/> is greater than the <paramref name="length"/>
            or when the <paramref name="length"/> is not a multiple of the <paramref name="blockSize"/>.
            </exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.Footer.WriteChecksumResultsToFooter(System.IntPtr,System.Int32)">
            <summary>
            Writes computed checksum results to the footer of a data block.
            </summary>
            <param name="data">A pointer to the data block.</param>
            <param name="blockSize">The size of the data block, in bytes.</param>
            <remarks>
            This method computes the checksum for the data block pointed to by <paramref name="data"/> and compares it
            to the checksum stored in the data block's footer. If the computed checksum matches the stored checksum,
            it marks the checksum as valid in the footer. Otherwise, it marks the checksum as not valid in the footer.
            The method also ensures that all other fields in the footer are set to zeroes.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.Footer.ComputeChecksumAndClearFooter(System.IntPtr,System.Int32)">
            <summary>
            Computes the checksum for data, updates the footer, and clears the checksum status.
            </summary>
            <param name="data">A pointer to the data block.</param>
            <param name="blockSize">The size of the data block, in bytes.</param>
            <remarks>
            This method computes the checksum for the data block pointed to by <paramref name="data"/>.
            It first checks if the checksum needs to be recomputed based on the checksum status in the footer.
            If a recomputation is required, it calculates the checksum and updates it in the footer.
            Finally, it clears the checksum status in the footer.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.Footer.ComputeChecksumAndClearFooter(System.IntPtr,System.Int32,System.Int32)">
            <summary>
            Computes the checksum for a data block and clears the footer.
            </summary>
            <param name="data">A pointer to the data block.</param>
            <param name="blockSize">The size of the data block, in bytes.</param>
            <param name="length">The total length of data to process, in bytes.</param>
            <remarks>
            This method computes the checksum for the data block pointed to by <paramref name="data"/> and clears
            the footer of the data block. It is designed to work with blocks of data within a larger data structure.
            The method iterates over the specified data blocks, computes check-sums for each, and clears their footers.
            </remarks>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.IDiskMediumCoreFunctions">
            <summary>
            The interface that is required construct a <see cref="T:SnapDB.IO.FileStructure.Media.DiskMedium"/> class.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.IDiskMediumCoreFunctions.FileName">
            <summary>
            Gets the file name associated with the medium. Returns an empty string if a memory file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.IDiskMediumCoreFunctions.Length">
            <summary>
            Gets the current number of bytes used by the file system.
            This is only intended to be an approximate figure.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.IDiskMediumCoreFunctions.CreateIoSession">
            <summary>
            Creates a <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> that can be used to read from this disk medium.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.IDiskMediumCoreFunctions.CommitChanges(SnapDB.IO.FileStructure.FileHeaderBlock)">
            <summary>
            Executes a commit of data. This will flush the data to the disk use the provided header data to properly
            execute this function.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.IDiskMediumCoreFunctions.RollbackChanges">
            <summary>
            Rolls back all edits to the DiskMedium.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.IDiskMediumCoreFunctions.ChangeExtension(System.String,System.Boolean,System.Boolean)">
            <summary>
            Changes the extension of the current file.
            </summary>
            <param name="extension">The new extension.</param>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.IDiskMediumCoreFunctions.ChangeShareMode(System.Boolean,System.Boolean)">
            <summary>
            Reopens the file with different permissions.
            </summary>
            <param name="isReadOnly">If the file should be reopened as read-only</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.MemoryPoolFile">
            <summary>
            Provides a in memory stream that uses pages that are pooled in the unmanaged buffer pool.
            </summary>
            <summary>
            Provides a in memory stream that uses pages that are pooled in the unmanaged buffer pool.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.MemoryPoolFile.IoSession">
            <summary>
            An I/O session for the <see cref="T:SnapDB.IO.FileStructure.Media.MemoryPoolFile"/>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.MemoryPoolFile.IoSession.#ctor(SnapDB.IO.FileStructure.Media.MemoryPoolFile)">
            <summary>
            Creates a new <see cref="T:SnapDB.IO.FileStructure.Media.MemoryPoolFile.IoSession"/>.
            </summary>
            <param name="file">The base file.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.MemoryPoolFile.IoSession.GetBlock(SnapDB.IO.Unmanaged.BlockArguments)">
            <summary>
            Retrieves a data block based on the provided <see cref="T:SnapDB.IO.Unmanaged.BlockArguments"/>.
            </summary>
            <param name="args">The <see cref="T:SnapDB.IO.Unmanaged.BlockArguments"/> that specify the block to retrieve.</param>
            <exception cref="T:System.Data.ReadOnlyException">Thrown if an attempt to write to a read-only file system is made.</exception>
            <remarks>
            This method retrieves a data block specified by the <paramref name="args"/> parameter. It checks whether the file system is
            read-only and whether the requested operation involves writing. If the file system is read-only and a write operation is
            requested, a <see cref="T:System.Data.ReadOnlyException"/> is thrown. Otherwise, it delegates the block retrieval operation to the underlying file.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.MemoryPoolFile.IoSession.Clear">
            <summary>
            Sets the current usage of the <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> to <c>null</c>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.MemoryPoolFile.#ctor(SnapDB.IO.Unmanaged.MemoryPool)">
            <summary>
            Create a new <see cref="T:SnapDB.IO.FileStructure.Media.MemoryPoolFile"/>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.MemoryPoolFile.CreateIoSession">
            <summary>
            Creates an <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> for the current <see cref="T:System.IO.MemoryStream"/>.
            </summary>
            <returns>
            A new instance of <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> for the current <see cref="T:System.IO.MemoryStream"/>.
            </returns>
            <exception cref="T:System.ObjectDisposedException">Thrown if the <see cref="T:System.IO.MemoryStream"/> has been disposed and cannot create a new session.</exception>
            <remarks>
            This method creates and returns a new <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> instance associated with the current
            <see cref="T:System.IO.MemoryStream"/>. If the <see cref="T:System.IO.MemoryStream"/> has been disposed (IsDisposed is <c>true</c>), it throws an
            <see cref="T:System.ObjectDisposedException"/> indicating that the stream has been disposed and cannot create a new session.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.MemoryPoolFile.CommitChanges(SnapDB.IO.FileStructure.FileHeaderBlock)">
            <summary>
            Commits changes made to the <see cref="T:System.IO.MemoryStream"/> to a <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/>.
            </summary>
            <param name="headerBlock">The <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/> to which the changes are committed.</param>
            <exception cref="T:System.ObjectDisposedException">
            Thrown if the <see cref="T:System.IO.MemoryStream"/> has been disposed and cannot commit changes.
            </exception>
            <remarks>
            This method commits any changes made to the current <see cref="T:System.IO.MemoryStream"/> to the specified
            <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/>. If the <see cref="T:System.IO.MemoryStream"/> has been disposed (IsDisposed is true),
            it throws an <see cref="T:System.ObjectDisposedException"/> indicating that the stream has been disposed and cannot commit changes.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.MemoryPoolFile.RollbackChanges">
            <summary>
            Rolls back any changes made to the <see cref="T:System.IO.MemoryStream"/>.
            </summary>
            <exception cref="T:System.ObjectDisposedException">
            Thrown if the <see cref="T:System.IO.MemoryStream"/> has been disposed and cannot perform a rollback.
            </exception>
            <remarks>
            This method rolls back any changes made to the current <see cref="T:System.IO.MemoryStream"/>. If the <see cref="T:System.IO.MemoryStream"/>
            has been disposed (IsDisposed is <c>true</c>), it throws an <see cref="T:System.ObjectDisposedException"/> indicating that the
            stream has been disposed and cannot perform a rollback.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.MemoryPoolFile.ChangeExtension(System.String,System.Boolean,System.Boolean)">
            <summary>
            Changes the extension of the current file or resource.
            </summary>
            <param name="extension">The new file extension to set.</param>
            <param name="isReadOnly">Specifies whether the file/resource should be treated as read-only.</param>
            <param name="isSharingEnabled">Specifies whether sharing of the file or resource should be enabled.</param>
            <remarks>
            This method changes the extension of the current file or resource to the specified <paramref name="extension"/>.
            It allows you to modify read-only and sharing settings by providing the <paramref name="isReadOnly"/> and
            <paramref name="isSharingEnabled"/> parameters. However, the actual implementation of this method should be added.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.MemoryPoolFile.ChangeShareMode(System.Boolean,System.Boolean)">
            <summary>
            Changes the sharing mode of the current file or resource.
            </summary>
            <param name="isReadOnly">Specifies whether the file or resource should be treated as read-only.</param>
            <param name="isSharingEnabled">Specifies whether sharing of the file or resource should be enabled.</param>
            <remarks>
            This method allows you to modify read-only and sharing settings for the current file or resource.
            By providing the <paramref name="isReadOnly"/> and <paramref name="isSharingEnabled"/> parameters,
            you can control how the file or resource is accessed and shared. However, the actual implementation
            of this method should be added.
            </remarks>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.IO.FileStructure.Media"/> namespace organizes all common SnapDB library functionality related to ,
            e.g., the <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.PageList">
            <summary>
            Contains a list of page meta data. Provides a simplified way to interact with this list.
            This class is not thread safe.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.PageList.InternalPageMetaData.LocationOfPage">
            <summary>
            The pointer to the page.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.PageList.InternalPageMetaData.MemoryPoolIndex">
            <summary>
            The index assigned by the <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/>.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.PageList.InternalPageMetaData.ReferencedCount">
            <summary>
            The number of times this page has been referenced.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageList.#ctor(SnapDB.IO.Unmanaged.MemoryPool)">
            <summary>
            Creates a new PageMetaDataList.
            </summary>
            <param name="memoryPool">The buffer pool to utilize if any unmanaged memory needs to be created.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageList.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.FileStructure.Media.PageList"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageList.TryGetPageIndex(System.Int32,System.Int32@)">
            <summary>
            Converts a number from its position index into a page index.
            </summary>
            <param name="positionIndex">the position divided by the page size.</param>
            <param name="pageIndex">the page index</param>
            <returns><c>true</c> if found, <c>false</c> if not found.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageList.AddNewPage(System.Int32,System.IntPtr,System.Int32)">
            <summary>
            Adds a new page to the cache and associates it with the specified position index.
            </summary>
            <param name="positionIndex">The position index to associate with the new page.</param>
            <param name="locationOfPage">A pointer to the location of the new page in memory.</param>
            <param name="memoryPoolIndex">The memory pool index to which the page belongs.</param>
            <returns>The index of the newly added page in the cache.</returns>
            <exception cref="T:System.ObjectDisposedException">Thrown if the cache is disposed.</exception>
            <remarks>
            This method adds a new page to the cache and associates it with the specified
            <paramref name="positionIndex"/>. It also tracks the memory pool index and the
            location of the page in memory. The method returns the index of the newly added
            page in the cache.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageList.GetPointerToPage(System.Int32,System.Int32)">
            <summary>
            Gets a pointer to the memory location of a cached page and optionally increments its reference count.
            </summary>
            <param name="pageIndex">The index of the cached page.</param>
            <param name="incrementReferencedCount">
            The value by which to increment the reference count of the cached page. Use 0 to retrieve the pointer without incrementing.
            </param>
            <returns>
            A pointer to the memory location of the cached page.
            </returns>
            <exception cref="T:System.ObjectDisposedException">Thrown if the cache is disposed.</exception>
            <remarks>
            This method retrieves a pointer to the memory location of a cached page identified by its <paramref name="pageIndex"/>.
            Optionally, you can specify <paramref name="incrementReferencedCount"/> to increment the reference count of the page.
            If the reference count exceeds <see cref="F:System.Int32.MaxValue"/> or goes below 0, it's clamped to the respective boundary.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageList.DoCollection(System.Int32,System.Collections.Generic.HashSet{System.Int32},SnapDB.IO.Unmanaged.CollectionEventArgs)">
            <summary>
            Performs memory pool collection, releasing unused pages based on the specified collection parameters.
            </summary>
            <param name="shiftLevel">The number of bits to shift the reference count right before evaluating for collection.</param>
            <param name="excludedList">
            A set of page indices to exclude from collection. Pages in this set will not be released, even if their reference count is zero.
            </param>
            <param name="e">The collection event arguments containing collection mode and desired release count.</param>
            <returns>The number of pages actually collected and released.</returns>
            <exception cref="T:System.ObjectDisposedException">Thrown if the cache is disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown if <paramref name="shiftLevel"/> is negative.</exception>
            <remarks>
            This method performs memory pool collection by iterating through cached pages, shifting their reference counts right by <paramref name="shiftLevel"/> bits,
            and releasing pages whose reference count becomes zero, excluding those in <paramref name="excludedList"/>.
            The number of pages collected is limited by <paramref name="e"/>.DesiredPageReleaseCount if the collection mode is Emergency or Critical.
            </remarks>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm">
            <summary>
            A page replacement algorithm that utilizes a quasi LRU algorithm. This class is thread safe.
            </summary>
            <remarks>
            This class is used by <see cref="T:SnapDB.IO.FileStructure.Media.BufferedFile"/> to decide which pages should be replaced.
            </remarks>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.m_arrayIndexLocks">
            <summary>
            Contains the currently active I/O sessions.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.m_pageList">
            <summary>
            Contains a list of all the memory pages.
            </summary>
            <remarks>These items in the list are not in any particular order.</remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.#ctor(SnapDB.IO.Unmanaged.MemoryPool)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm"/> class with the specified memory pool.
            </summary>
            <param name="pool">The memory pool to be used for page replacement.</param>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when the specified memory pool has a page size less than 4096.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the page size of the specified memory pool is not a power of 2.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.TryAddPage(System.Int64,System.IntPtr,System.Int32)">
            <summary>
            Attempts to add the page to this <see cref="T:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm"/>.
            Fails if the page already exists.
            </summary>
            <param name="position">The absolute position that the page references</param>
            <param name="locationOfPage">The pointer to the page</param>
            <param name="memoryPoolIndex">The index value of the memory pool page so it can be released back to the memory pool.</param>
            <returns><c>true</c> if the page was added to the class; <c>false</c> if the page already exists and the data was not replaced.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.DoCollection(SnapDB.IO.Unmanaged.CollectionEventArgs)">
            <summary>
            Performs memory pool collection, releasing unused pages based on the specified collection parameters.
            </summary>
            <param name="e">The collection event arguments specifying the collection operation details.</param>
            <returns>The number of pages collected and released.</returns>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock">
            <summary>
            Used to hold a lock on a page to prevent it from being collected by the collection engine.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock.#ctor(SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm)">
            <summary>
            Creates an unallocated block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock.CurrentPageIndex">
            <summary>
            Gets the page index associated with the page
            that is cached.
            Returns a -1 if no page is currently being used.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock.Clear">
            <summary>
            Releases a lock.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock.TryGetSubPage(System.Int64,System.IntPtr@)">
            <summary>
            Attempts to get a sub page.
            </summary>
            <param name="position">The absolute position in the stream to get the page for.</param>
            <param name="location">A pointer for the page.</param>
            <returns><c>false</c> if the page does not exists and needs to be added.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock.GetOrAddPage(System.Int64,System.IntPtr,System.Int32,System.Boolean@)">
            <summary>
            Gets or adds a page at the specified position within the memory pool, based on the provided parameters.
            </summary>
            <param name="position">The position within the memory pool to retrieve or add a page.</param>
            <param name="startOfMemoryPoolPage">The starting address of the memory pool page.</param>
            <param name="memoryPoolIndex">The index of the memory pool.</param>
            <param name="wasPageAdded">A boolean indicating whether a new page was added during the operation.</param>
            <returns>The address of the page within the memory pool.</returns>
            <exception cref="T:System.ObjectDisposedException">Thrown if the parent object has been disposed.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown if the position is negative, exceeds the maximum valid position, or does not lie on a page boundary.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
            </summary>
            <returns>
            <c>true</c> if the specified object  is equal to the current object; otherwise, <c>false</c>.
            </returns>
            <param name="obj">The object to compare with the current object.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock.GetHashCode">
            <summary>
            Serves as a hash function for a particular type.
            </summary>
            <returns>
            A hash code for the current <see cref="T:System.Object"/>.
            </returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock.Equals(SnapDB.IO.FileStructure.Media.PageReplacementAlgorithm.PageLock)">
            <summary>
            Indicates whether the current object is equal to another object of the same type.
            </summary>
            <returns>
            <c>true</c> if the current object is equal to the <paramref name="other"/> parameter; otherwise, <c>false</c>.
            </returns>
            <param name="other">An object to compare with this object.</param>
        </member>
        <member name="T:SnapDB.IO.FileStructure.Murmur3">
            <summary>
            A specialized implementation of Murmur3 that requires the data be aligned
            to 16-byte boundaries.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.Murmur3.ComputeHash(System.Byte*,System.Int32,System.UInt64@,System.UInt64@)">
            <summary>
            Computes the MurmurHash3 checksum for the given byte data.
            </summary>
            <param name="bb">A pointer to the byte data.</param>
            <param name="length">The length of the byte data (must be a multiple of 16).</param>
            <param name="checksum1">The first computed checksum.</param>
            <param name="checksum2">The second computed checksum.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IntHelpers.RotateLeft(System.UInt64,System.Int32)">
            <summary>
            Rotates the bits of a 64-bit integer left by the specified number of bits.
            </summary>
            <param name="original">The original 64-bit integer.</param>
            <param name="bits">The number of bits to rotate left.</param>
            <returns>The result of the left rotation operation.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IntHelpers.RotateRight(System.UInt64,System.Int32)">
            <summary>
            Rotates the bits of a 64-bit integer right by the specified number of bits.
            </summary>
            <param name="original">The original 64-bit integer.</param>
            <param name="bits">The number of bits to rotate right.</param>
            <returns>The result of the right rotation operation.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.IntHelpers.GetUInt64(System.Byte[],System.Int32)">
            <summary>
            Reads an unsigned 64-bit integer (ulong) from a byte array at the specified position.
            </summary>
            <param name="bb">The byte array containing the data.</param>
            <param name="pos">The position in the byte array from which to read.</param>
            <returns>The extracted 64-bit integer.</returns>
        </member>
        <member name="P:SnapDB.IO.FileStructure.Murmur3Orig.Hash">
            <summary>
            Gets the computed hash value as a byte array.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.IO.FileStructure"/> namespace organizes all common SnapDB library functionality related to file and subfile structuring,
            e.g., the <see cref="T:SnapDB.IO.FileStructure.FileHeaderBlock"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.ReadSnapshot">
            <summary>
            Acquires a snapshot of the file system to browse in an isolated manner.
            This is read only and will also block the main file from being deleted.
            Therefore it is important to release this lock so the file can be deleted after a rollover.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ReadSnapshot.#ctor(SnapDB.IO.FileStructure.Media.DiskIo)">
            <summary>
            Creates a readonly copy of a transaction.
            </summary>
            <param name="dataReader"><see cref="T:SnapDB.IO.FileStructure.Media.DiskIo"/> data reader.</param>
        </member>
        <member name="P:SnapDB.IO.FileStructure.ReadSnapshot.Header">
            <summary>
            Gets the header of the file structure.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ReadSnapshot.OpenFile(System.Int32)">
            <summary>
            Opens an ArchiveFileStream that can be used to read the fspecified file.
            </summary>
            <param name="fileIndex">The index of the file to open.</param>
            <returns>An ArchiveFileStream for reading the specified file.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown if <paramref name="fileIndex"/> is out of range.</exception>
            <remarks>
            This method allows you to open an ArchiveFileStream for reading a file identified by its index.
            The provided <paramref name="fileIndex"/> is used to locate and open the corresponding file.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ReadSnapshot.OpenFile(SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Opens an ArchiveFileStream that can be used to read or write to the specified file.
            </summary>
            <param name="fileName">The name of the file to open.</param>
            <returns>An ArchiveFileStream for reading the specified file.</returns>
            <exception cref="T:System.Exception">Thrown if the specified file does not exist.</exception>
            <remarks>
            This method allows you to open an ArchiveFileStream for reading a file identified by its name.
            The provided <paramref name="fileName"/> is used to locate and open the corresponding file.
            </remarks>
        </member>
        <member name="T:SnapDB.IO.FileStructure.ShadowCopyAllocator">
            <summary>
            This class will make shadow copies of blocks or, if the block has never been written to, prepare the block to be written to.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ShadowCopyAllocator.#ctor(SnapDB.IO.FileStructure.SubFileDiskIoSessionPool)">
            <summary>
            Creates a <see cref="T:SnapDB.IO.FileStructure.ShadowCopyAllocator"/> that is used make shadow copies of blocks.
            </summary>
            <param name="ioSessions"></param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ShadowCopyAllocator.VirtualToShadowPagePhysical(System.UInt32,System.Boolean@)">
            <summary>
            This will make a shadow copy of the block that contains the position provided.
            If the block does not exist, space is allocated and the indexes are
            set up to allow the block to be written to.
            </summary>
            <param name="positionIndex">The position the application intents to write to.</param>
            <param name="wasShadowed"></param>
            <remarks>Calling this function automatically updates the underlying parser.</remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ShadowCopyAllocator.ShadowCopyIndexIndirect(System.UInt32@,System.UInt32,SnapDB.IO.FileStructure.BlockType,System.Int32,System.UInt32)">
            <summary>
            Makes a shadow copy of the indirect index passed to this function. If the block does not exists, it creates it.
            </summary>
            <param name="sourceBlockAddress">The block to be copied</param>
            <param name="indexValue">the index value that goes in the footer of the file.</param>
            <param name="blockType">Gets the expected block type</param>
            <param name="remoteAddressOffset">the offset of the remote address that needs to be updated.</param>
            <param name="remoteBlockAddress">the value of the remote address.</param>
            <returns>Returns true if the block had to be shadowed, false if it did not change</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ShadowCopyAllocator.ReadThenWriteIndexIndirectBlock(System.UInt32,System.UInt32,System.UInt32,SnapDB.IO.FileStructure.BlockType,System.Int32,System.UInt32)">
            <summary>
            Makes a shadow copy of an index indirect block and updates a remote address.
            </summary>
            <param name="sourceBlockAddress">the address of the source.</param>
            <param name="destinationBlockAddress">the address of the destination. This can be the same as the source.</param>
            <param name="indexValue">the index value that goes in the footer of the file.</param>
            <param name="blockType">Gets the expected block type</param>
            <param name="remoteAddressOffset">the offset of the remote address that needs to be updated.</param>
            <param name="remoteBlockAddress">the value of the remote address.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ShadowCopyAllocator.WriteIndexIndirectBlock(System.Byte*,System.Int32,System.UInt32)">
            <summary>
            Writes an Indirect Block to the drive. This sets the indexIndirectNumber and updates one of the addresses within this index.
            </summary>
            <param name="pointer"> </param>
            <param name="remoteAddressOffset">the offset of the remote address that needs to be updated</param>
            <param name="remoteBlockAddress">the value of the remote address</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ShadowCopyAllocator.TryShadowCopyDataBlock">
            <summary>
            Makes a copy of the data block. Returns <c>true</c> if a copy was made, otherwise <c>false</c> if no copy was made.
            </summary>
            <returns>True if the block's address was changed.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.ShadowCopyAllocator.ShadowCopyDataCluster(System.UInt32,System.UInt32,System.UInt32)">
            <summary>
            Makes a shadow copy of a data cluster.
            </summary>
            <param name="sourceClusterAddress">
            the address of the first block in the cluster.
            If address is zero, it simply creates an empty cluster.
            </param>
            <param name="indexValue">the index value of this first block.</param>
            <param name="destinationClusterAddress">the first block of the destination cluster.</param>
        </member>
        <member name="T:SnapDB.IO.FileStructure.SimplifiedFileWriter">
            <summary>
            Assists in the writing of a simplified file. This file can only be appended to
            and it must be sequentially written.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.SimplifiedFileWriter.Stream">
            <summary>
            Defines the file stream for this <see cref="T:SnapDB.IO.FileStructure.SimplifiedFileWriter"/>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedFileWriter.#ctor(System.String,System.String,System.Int32,System.Guid[])">
            <summary>
            Creates a simplified file writer.
            </summary>
            <param name="pendingFileName">The name of the pending file.</param>
            <param name="completeFileName">The name of the complete file.</param>
            <param name="blockSize">The size of data blocks within the file.</param>
            <param name="flags">Optional flags associated with the file.</param>>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedFileWriter.Finalize">
            <summary>
            Finalizes an instance of the <see cref="T:SnapDB.IO.FileStructure.SimplifiedFileWriter"/> class.
            </summary>
            <remarks>
            This finalizer is automatically called by the garbage collector during object cleanup.
            It publishes an informational log message indicating that the finalizer has been called.
            </remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SimplifiedFileWriter.ArchiveId">
            <summary>
            Gets the GUID number for this <see cref="T:SnapDB.IO.FileStructure.SimplifiedFileWriter"/>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedFileWriter.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.FileStructure.SimplifiedFileWriter"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedFileWriter.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.IO.FileStructure.SimplifiedFileWriter"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedFileWriter.CreateFile(SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Creates a new file with the specified file name and returns a stream for writing data into the file.
            </summary>
            <param name="fileName">The name of the file to create.</param>
            <returns>The <see cref="T:SnapDB.IO.Unmanaged.ISupportsBinaryStream"/> representing the newly created file.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedFileWriter.Commit">
            <summary>
            Commits the changes to the disk.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.SimplifiedSubFileStream">
            <summary>
            Provides a file stream that can be used to open a file and does all of the background work
            required to translate virtual position data into physical ones.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedSubFileStream.#ctor(System.IO.FileStream,SnapDB.IO.FileStructure.SubFileHeader,SnapDB.IO.FileStructure.FileHeaderBlock)">
            <summary>
            Creates an SimplifiedSubFileStream
            </summary>
            <param name="stream">The location to read from.</param>
            <param name="subFile">The file to read.</param>
            <param name="fileHeaderBlock">The FileAllocationTable.</param>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SimplifiedSubFileStream.IsDisposed">
            <summary>
            Determines if the file system has been disposed yet.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SimplifiedSubFileStream.IsReadOnly">
            <summary>
            Gets if this file was opened in "read only" mode.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SimplifiedSubFileStream.RemainingSupportedIoSessions">
            <summary>
            Gets the number of available simultaneous read or write sessions.
            </summary>
            <remarks>
            This value is used to determine if a binary stream can be cloned
            to improve read, write, or copy performance.
            </remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SimplifiedSubFileStream.SubFile">
            <summary>
            Gets the file used by the stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedSubFileStream.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.SimplifiedSubFileStreamIoSession">
            <summary>
            An IoSession for a Simplified Sub File Stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedSubFileStreamIoSession.#ctor(System.IO.FileStream,SnapDB.IO.FileStructure.SubFileHeader,SnapDB.IO.FileStructure.FileHeaderBlock)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.IO.FileStructure.SimplifiedSubFileStreamIoSession"/> class.
            </summary>
            <param name="stream">The underlying <see cref="T:System.IO.FileStream"/> for I/O operations.</param>
            <param name="subFile">The sub-file header associated with this I/O session.</param>
            <param name="header">The file header block for the overall file.</param>
            <exception cref="T:System.ArgumentNullException">
            Thrown if <paramref name="stream"/>, <paramref name="subFile"/>, or <paramref name="header"/> is null.
            </exception>
            <exception cref="T:System.Exception">
            Thrown if the <paramref name="subFile"/> does not have a valid direct block assignment.
            </exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedSubFileStreamIoSession.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.IO.FileStructure.SimplifiedSubFileStreamIoSession"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SimplifiedSubFileStreamIoSession.Clear">
            <summary>
            Sets the current usage of the <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> to null.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.SubFileDiskIoSessionPool">
            <summary>
            Contains a set of <see cref="T:SnapDB.IO.FileStructure.Media.DiskIoSession"/>s that speed up the I/O operations associated with
            reading and writing to an archive disk. This class contains two I/O Sessions if the file
            supports modification to speed up the copy operation when doing shadow copies.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileDiskIoSessionPool.#ctor(SnapDB.IO.FileStructure.Media.DiskIo,SnapDB.IO.FileStructure.FileHeaderBlock,SnapDB.IO.FileStructure.SubFileHeader,System.Boolean)">
            <summary>
            Creates this file with the following data.
            </summary>
            <param name="diskIo">The DiskIo instance to use for I/O operations.</param>
            <param name="header">The FileHeaderBlock for the file.</param>
            <param name="file">The SubFileHeader for the file, if available; otherwise, <c>null</c>.</param>
            <param name="isReadOnly">A boolean indicating whether the file is opened in read-only mode.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileDiskIoSessionPool.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileDiskIoSessionPool.SwapIndex">
            <summary>
            Swaps the source and destination index I/O Sessions.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileDiskIoSessionPool.SwapData">
            <summary>
            Swaps the source and destination Data I/O Sessions.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileDiskIoSessionPool.Clear">
            <summary>
            Releases all of the data associated with the I/O Sessions.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.SubFileHeader">
            <summary>
            This contains the meta data of the file along with index information to map all of the blocks of the file.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileHeader.#ctor(System.IO.BinaryReader,System.Boolean,System.Boolean)">
            <summary>
            Creates a <see cref="T:SnapDB.IO.FileStructure.SubFileHeader"/> from the data stream.
            </summary>
            <param name="dataReader"></param>
            <param name="isImmutable">Determines if this class will be immutable upon creation.</param>
            <param name="isSimplified">gets if the file structure is the simplified type.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileHeader.#ctor(System.UInt16,SnapDB.IO.FileStructure.SubFileName,System.Boolean,System.Boolean)">
            <summary>
            Creates a new <see cref="T:SnapDB.IO.FileStructure.SubFileHeader"/>.
            </summary>
            <param name="fileId"></param>
            <param name="fileName"></param>
            <param name="isImmutable">Determines if this class will be immutable upon creation.</param>
            <param name="isSimplified">if this header is a simplified header.</param>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileHeader.DataBlockCount">
            <summary>
            Gets the number of blocks the data portion of this file contains.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileHeader.DirectBlock">
            <summary>
            Gets the block address for the first direct block of this file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileHeader.DoubleIndirectBlock">
            <summary>
            Gets the block address for the double indirect block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileHeader.FileIdNumber">
            <summary>
            Gets the unique file identifier for this file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileHeader.FileName">
            <summary>
            Gets the <see cref="T:SnapDB.IO.FileStructure.SubFileName"/> that represents what type of data is contained in this file.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileHeader.QuadrupleIndirectBlock">
            <summary>
            Gets the block address for the quadruple indirect block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileHeader.SingleIndirectBlock">
            <summary>
            Gets the block address for the single indirect block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileHeader.TotalBlockCount">
            <summary>
            Gets the total number of blocks that has been used by this file.
            This includes meta data blocks and previous version blocks.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileHeader.TripleIndirectBlock">
            <summary>
            Gets the block address for the triple indirect block.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileHeader.Save(System.IO.BinaryWriter)">
            <summary>
            Writes the data contained in <see cref="T:SnapDB.IO.FileStructure.SubFileHeader"/> to the data stream.
            </summary>
            <param name="dataWriter">The stream to write to.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileHeader.TestSimplifiedFile">
            <summary>
            Test if the class has been marked as readonly. Throws an exception if editing cannot occur.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.SubFileName">
            <summary>
            This is used to generate the file name that will be used for the subfile.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileName.RawValue1">
            <summary>
            The first 8 bytes of the <see cref="T:SnapDB.IO.FileStructure.SubFileName"/>.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileName.RawValue2">
            <summary>
            The next 8 bytes of the <see cref="T:SnapDB.IO.FileStructure.SubFileName"/>.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileName.RawValue3">
            <summary>
            The final 4 bytes of the <see cref="T:SnapDB.IO.FileStructure.SubFileName"/>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.Save(System.IO.BinaryWriter)">
            <summary>
            Writes the <see cref="T:SnapDB.IO.FileStructure.SubFileName"/> to the <paramref name="writer"/>.
            </summary>
            <param name="writer"></param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
            </summary>
            <returns>
            <c>true</c> if the specified object  is equal to the current object; otherwise, <c>false</c>.
            </returns>
            <param name="obj">The object to compare with the current object.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.GetHashCode">
            <summary>
            Serves as a hash function for a particular type.
            </summary>
            <returns>
            A hash code for the current <see cref="T:System.Object"/>.
            </returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.CompareTo(SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Compares the current object with another object of the same type.
            </summary>
            <returns>
            A value that indicates the relative order of the objects being compared.
            The return value has the following meanings: Value Meaning Less than zero This object is less than the <paramref name="other"/> parameter.Zero
            This object is equal to <paramref name="other"/>. Greater than zero This object is greater than <paramref name="other"/>.
            </returns>
            <param name="other">An object to compare with this object.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.Equals(SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Indicates whether the current object is equal to another object of the same type.
            </summary>
            <returns>
            <c>true</c> if the current object is equal to the <paramref name="other"/> parameter; otherwise, <c>false</c>.
            </returns>
            <param name="other">An object to compare with this object.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.op_Equality(SnapDB.IO.FileStructure.SubFileName,SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Compares the equality of the two file names.
            </summary>
            <param name="a">The first file name to compare.</param>
            <param name="b">The second file name to compare.</param>
            <returns><c>true</c>if they are equal, <c>false</c> if they are not.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.op_Inequality(SnapDB.IO.FileStructure.SubFileName,SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Compares the two files if they are not equal.
            </summary>
            <param name="a">The first file to compare.</param>
            <param name="b">The second file to compare.</param>
            <returns>The two files.</returns>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileName.Empty">
            <summary>
            An empty subfile name. Should not generally be used as a single file system.
            Must have unique file names.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.CreateRandom">
            <summary>
            Creates a random <see cref="T:SnapDB.IO.FileStructure.SubFileName"/>.
            </summary>
            <returns>
            The newly created random <see cref="T:SnapDB.IO.FileStructure.SubFileName"/>.
            </returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.Create(System.Guid,System.Guid,System.Guid)">
            <summary>
            Creates a <see cref="T:SnapDB.IO.FileStructure.SubFileName"/> from the supplied data.
            </summary>
            <param name="fileType">The type identifier of the file.</param>
            <param name="keyType">The GUID identifier of the type of the SortedTreeStore.</param>
            <param name="valueType">The GUID identifier of the value type of the SortedTreeStore.</param>
            <returns>
            The created file from the data.
            </returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.Create(System.String,System.Guid,System.Guid)">
            <summary>
            Creates a <see cref="T:SnapDB.IO.FileStructure.SubFileName"/> from the supplied data.
            </summary>
            <param name="fileName">A name associated with the data.</param>
            <param name="keyType">The GUID identifier of the type of the sorted tree store.</param>
            <param name="valueType">The GUID identifier of the value type of the sorted tree store.</param>
            <returns>A <see cref="T:SnapDB.IO.FileStructure.SubFileName"/> instance based on the provided parameters.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.Create(System.Byte[])">
            <summary>
            Creates a <see cref="T:SnapDB.IO.FileStructure.SubFileName"/> from the supplied data.
            </summary>
            <param name="data"></param>
            <returns>A new SubFileName instance generated from the provided data.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileName.Load(System.IO.BinaryReader)">
            <summary>
            Loads the <see cref="T:SnapDB.IO.FileStructure.SubFileName"/> from the supplied <paramref name="reader"/>.
            </summary>
            <param name="reader">The reader to read from.</param>
            <returns>The subFile's corresponding values.</returns>
        </member>
        <member name="T:SnapDB.IO.FileStructure.SubFileStream">
            <summary>
            Provides a file stream that can be used to open a file and does all of the background work
            required to translate virtual position data into physical ones.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileStream.#ctor(SnapDB.IO.FileStructure.Media.DiskIo,SnapDB.IO.FileStructure.SubFileHeader,SnapDB.IO.FileStructure.FileHeaderBlock,System.Boolean)">
            <summary>
            Creates an SubFileStream.
            </summary>
            <param name="dataReader">The location to read from.</param>
            <param name="subFile">The file to read.</param>
            <param name="fileHeaderBlock">The FileAllocationTable.</param>
            <param name="isReadOnly">Determines if the stream allows editing.</param>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileStream.IsDisposed">
            <summary>
            Determines if the file system has been disposed yet.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileStream.IsReadOnly">
            <summary>
            Gets if this file was opened in readonly mode.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileStream.RemainingSupportedIoSessions">
            <summary>
            Gets the number of available simultaneous read/write sessions.
            </summary>
            <remarks>
            This value is used to determine if a binary stream can be cloned to improve read, write, and copy performance.
            </remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.SubFileStream.SubFile">
            <summary>
            The file used by the stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileStream.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileStream.SnapDB#IO#Unmanaged#ISupportsBinaryStream#CreateIoSession">
            <summary>
            Acquire an IO Session.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.SubFileStream.IoSession">
            <summary>
            An IoSession for the sub file stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileStream.IoSession.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.IO.FileStructure.SubFileStream.IoSession"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileStream.IoSession.Clear">
            <summary>
            Sets the current usage of the <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> to <c>null</c>.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.SubFileStream.SimplifiedIoSession">
            <summary>
            An IO Session for the sub file stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileStream.SimplifiedIoSession.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.IO.FileStructure.SubFileStream.IoSession"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.SubFileStream.SimplifiedIoSession.Clear">
            <summary>
            Sets the current usage of the <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> to <c>null</c>.
            </summary>
        </member>
        <member name="T:SnapDB.IO.FileStructure.TransactionalEdit">
            <summary>
            Provides the state information for a transaction on the file system.
            </summary>
            <remarks>Failing to call Commit or Rollback will inhibit additional transactions to be acquired.</remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalEdit.#ctor(SnapDB.IO.FileStructure.Media.DiskIo,System.Action,System.Action)">
            <summary>
            Creates an editable copy of the transaction.
            </summary>
            <param name="dataReader">The DiskIo instance to read data from.</param>
            <param name="delHasBeenRolledBack">The delegate to call when this transaction has been rolled back.</param>
            <param name="delHasBeenCommitted">The delegate to call when this transaction has been committed.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalEdit.Finalize">
            <summary>
            Finalizes an instance of the <see cref="T:SnapDB.IO.FileStructure.TransactionalEdit"/> class.
            </summary>
            <remarks>
            This finalizer is automatically called by the garbage collector during object cleanup.
            It publishes an informational log message indicating that the finalizer has been called.
            </remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.TransactionalEdit.ArchiveType">
            <summary>
            The GUID for this archive type.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.TransactionalEdit.Files">
            <summary>
            A list of all of the files in this collection.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalEdit.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.FileStructure.ReadSnapshot"/> object.
            </summary>
            <returns>null</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalEdit.CreateFile(SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Creates and opens a new file on the current file system.
            </summary>
            <param name="fileName">The specified name of the file.</param>
            <returns>
            The newly opened file.
            </returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalEdit.OpenFile(System.Int32)">
            <summary>
            Opens a ArchiveFileStream that can be used to read/write to the file passed to this function.
            </summary>
            <param name="fileIndex">The index of the file to open.</param>
            <returns>A SubFileStream representing the opened file.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalEdit.OpenFile(SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Opens a ArchiveFileStream that can be used to read and write to the file passed to this function.
            </summary>
            <param name="fileName">The name of the specified file to be passed to the function.</param>
            <returns>Exception if file does not exist, otherwise, the file passed to the function.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalEdit.CommitAndDispose">
            <summary>
            This will cause the transaction to be written to the database.
            Also calls Dispose().
            </summary>
            <remarks>
            Duplicate calls to this function, or subsequent calls to RollbackTransaction will throw an exception.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalEdit.RollbackAndDispose">
            <summary>
            This will rollback the transaction by not writing the table of contents to the file.
            </summary>
            <remarks>Duplicate calls to this function, or subsequent calls to CommitTransaction will throw an exception.</remarks>
        </member>
        <member name="T:SnapDB.IO.FileStructure.TransactionalFileStructure">
            <summary>
            This class is responsible for managing the transactions that occur on the file system.
            Therefore, it keeps up with the latest snapshot of the file allocation table,
            permits only a single concurrent edit of the archive system, and determines when a file
            can be deleted when there are no read or write transactions. It also containst the IO system.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.TransactionalFileStructure.m_currentReadTransaction">
            <summary>
            Contains the current read transaction.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.TransactionalFileStructure.m_currentTransaction">
            <summary>
            Contains the current active transaction. If this <c>null</c>, there is no active transaction.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.TransactionalFileStructure.m_diskIo">
            <summary>
            Contains the disk IO subsystem for accessing the file.
            </summary>
        </member>
        <member name="F:SnapDB.IO.FileStructure.TransactionalFileStructure.m_disposed">
            <summary>
            Determines if this object has been disposed.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalFileStructure.Finalize">
            <summary>
            Finalizes an instance of the <see cref="T:SnapDB.IO.FileStructure.TransactionalFileStructure"/> class.
            </summary>
            <remarks>
            This finalizer is automatically called by the garbage collector during object cleanup.
            It publishes an informational log message indicating that the finalizer has been called.
            </remarks>
        </member>
        <member name="P:SnapDB.IO.FileStructure.TransactionalFileStructure.ArchiveSize">
            <summary>
            Gets the current size of the archive.
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.TransactionalFileStructure.FileName">
            <summary>
            Gets the file name for the <see cref="T:SnapDB.IO.FileStructure.TransactionalFileStructure"/>
            </summary>
        </member>
        <member name="P:SnapDB.IO.FileStructure.TransactionalFileStructure.Snapshot">
            <summary>
            Gets the last committed read snapshot on the file system.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalFileStructure.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.FileStructure.TransactionalFileStructure"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalFileStructure.BeginEdit">
            <summary>
            Starts a transactional edit on the specified file.
            </summary>
            <returns>The file being transactionally edited.</returns>
            <exception cref="T:System.Exception">Thrown if there already exists one edit transaction, or it has been opened in read-only mode.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalFileStructure.ChangeExtension(System.String,System.Boolean,System.Boolean)">
            <summary>
            Changes the extension of the current file.
            </summary>
            <param name="extension">The new extension.</param>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalFileStructure.ChangeShareMode(System.Boolean,System.Boolean)">
            <summary>
            Reopens the file with different permissions.
            </summary>
            <param name="isReadOnly">If the file should be reopened as read-only.</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalFileStructure.CreateInMemory(System.Int32,System.Guid[])">
            <summary>
            Creates a new archive file that is completely in memory.
            </summary>
            <param name="blockSize">The size of the data block.</param>
            <param name="flags">Flags associated with the specified disk.</param>
            <returns>The new disk created in memory.</returns>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalFileStructure.CreateFile(System.String,System.Int32,System.Guid[])">
            <summary>
            Creates a new archive editable file using the provided file.
            </summary>
            <param name="fileName">The name of the new file.</param>
            <param name="blockSize">The size of the data block.</param>
            <param name="flags">The flags associated with the specified new file.</param>
            <returns>The new archive editable file.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown if the file name is null.</exception>
            <exception cref="T:System.Exception">Thrown if the name of the new file already exists.</exception>
        </member>
        <member name="M:SnapDB.IO.FileStructure.TransactionalFileStructure.OpenFile(System.String,System.Boolean)">
            <summary>
            Opens an existing file.
            </summary>
            <param name="fileName">The name of the existing file to open.</param>
            <param name="isReadOnly">A boolean that tells us whether or not the file is read-only.</param>
            <returns><c>true</c> if the file is read-only; otherwise, <c>false</c> if not.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown if the file name is null.</exception>
            <exception cref="T:System.Exception">Thrown if the file name does not exist.</exception>
        </member>
        <member name="T:SnapDB.IO.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.IO"/> namespace organizes all common SnapDB library functionality related to I/O implementation,
            e.g., the <see cref="T:SnapDB.IO.BinaryStreamBase"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.IO.NetworkStreamSimulator">
            <summary>
            Provides a stream that functions like a network stream
            except it cuts out the socket layer.
            </summary>
        </member>
        <member name="F:SnapDB.IO.NetworkStreamSimulator.ClientStream">
            <summary>
            The client's stream.
            </summary>
        </member>
        <member name="F:SnapDB.IO.NetworkStreamSimulator.ServerStream">
            <summary>
            The server's stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.NetworkStreamSimulator.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.IO.NetworkStreamSimulator"/>.
            </summary>
        </member>
        <member name="T:SnapDB.IO.PathHelpers">
            <summary>
            Helper methods for path strings.
            </summary>
        </member>
        <member name="M:SnapDB.IO.PathHelpers.FormatExtension(System.String)">
            <summary>
            Ensures that the provided extension is in the provided format:  .exe
            </summary>
            <param name="extension">the extension to format. Can be *.exe, or .exe, or exe</param>
            <returns>
            A valid extension.
            </returns>
            <remarks>
            Throws a series of exceptions if the <paramref name="extension"/> is invalid.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.PathHelpers.ValidateFileName(System.String)">
            <summary>
            Ensures the supplied file name is valid.
            </summary>
            <param name="fileName">any file name.</param>
            <remarks>
            Throws a series of exceptions if the <paramref name="fileName"/> is invalid.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.PathHelpers.ValidatePathName(System.String)">
            <summary>
            Ensures the supplied path name is valid.
            </summary>
            <param name="pathName">Any path.</param>
            <remarks>
            Throws a series of exceptions if the <paramref name="pathName"/> is invalid.
            </remarks>
        </member>
        <member name="T:SnapDB.IO.RemoteBinaryStream">
            <summary>
            Represents a remote binary stream for reading and writing data over a network connection.
            </summary>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.#ctor(System.IO.Stream,SnapDB.Threading.WorkerThreadSynchronization)">
            <summary>
            Initializes a new instance of the RemoteBinaryStream class with the specified stream for communication.
            </summary>
            <param name="stream">The underlying stream used for communication.</param>
            <param name="workerThreadSynchronization">
            An optional instance of WorkerThreadSynchronization for synchronization. If not provided, a new instance will be created.
            </param>
            <exception cref="T:System.Exception">Thrown if the processor is not little-endian (not supported).</exception>
        </member>
        <member name="P:SnapDB.IO.RemoteBinaryStream.CanRead">
            <summary>
            Gets a value indicating whether the stream supports reading.
            </summary>
        </member>
        <member name="P:SnapDB.IO.RemoteBinaryStream.CanSeek">
            <summary>
            Gets a value indicating whether the stream supports seeking (positioning).
            </summary>
        </member>
        <member name="P:SnapDB.IO.RemoteBinaryStream.CanWrite">
            <summary>
            Gets a value indicating whether the stream allows writing.
            </summary>
        </member>
        <member name="P:SnapDB.IO.RemoteBinaryStream.Length">
            <summary>
            Throws a <see cref="T:System.NotSupportedException"/> since getting the length of this stream is not supported.
            </summary>
        </member>
        <member name="P:SnapDB.IO.RemoteBinaryStream.Position">
            <summary>
            Throws a <see cref="T:System.NotSupportedException"/> since setting or getting the position of this stream is not supported.
            </summary>
        </member>
        <member name="P:SnapDB.IO.RemoteBinaryStream.WorkerThreadSynchronization">
            <summary>
            Gets the WorkerThreadSynchronization instance used for synchronization in this stream.
            </summary>
        </member>
        <member name="P:SnapDB.IO.RemoteBinaryStream.ReceiveBufferAvailable">
            <summary>
            Gets the number of bytes available in the receive buffer for reading.
            </summary>
        </member>
        <member name="P:SnapDB.IO.RemoteBinaryStream.SendBufferFreeSpace">
            <summary>
            Gets the amount of free space available in the send buffer.
            </summary>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.Dispose(System.Boolean)">
            <summary>
            Disposes of the RemoteBinaryStream, releasing any resources associated with it.
            </summary>
            <param name="disposing">
            A flag indicating whether the method is called from the finalizer or directly by user code.
            </param>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.Flush">
            <summary>
            Flushes any buffered data in the send buffer to the underlying stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.SetLength(System.Int64)">
            <summary>
            Throws a <see cref="T:System.NotSupportedException"/> since setting the length of this stream is not supported.
            </summary>
            <param name="value">The new length of the stream, which is not supported.</param>
            <exception cref="T:System.NotSupportedException">Thrown to indicate that setting the stream length is not supported.</exception>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Reads a specified number of bytes from the stream into a byte array, starting at the specified offset.
            </summary>
            <param name="buffer">The byte array where the read data will be stored.</param>
            <param name="offset">The offset in the byte array where reading will start.</param>
            <param name="count">The maximum number of bytes to read.</param>
            <returns>The total number of bytes read into the buffer.</returns>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.Write(System.Byte)">
            <summary>
            Writes a single byte to the stream.
            </summary>
            <param name="value">The byte value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.Write(System.Int64)">
            <summary>
            Writes an 8-byte (64-bit) signed integer to the stream.
            </summary>
            <param name="value">The long value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.Write(System.Int32)">
            <summary>
            Writes a 4-byte (32-bit) signed integer to the stream.
            </summary>
            <param name="value">The integer value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.Write7Bit(System.UInt64)">
            <summary>
            Writes a 7-bit encoded unsigned 64-bit integer (UInt64) to the stream.
            </summary>
            <param name="value">The 7-bit encoded unsigned 64-bit integer (UInt64) value to write to the stream.</param>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.ReadUInt8">
            <summary>
            Reads a single unsigned byte (UInt8) from the stream.
            </summary>
            <returns>The unsigned byte (UInt8) read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.ReadInt32">
            <summary>
            Reads a 4-byte (32-bit) signed integer from the stream.
            </summary>
            <returns>The 4-byte (32-bit) signed integer read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.ReadInt64">
            <summary>
            Reads an 8-byte (64-bit) signed integer from the stream.
            </summary>
            <returns>The 8-byte (64-bit) signed integer read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.Read7BitUInt64">
            <summary>
            Reads a 7-bit encoded unsigned 64-bit integer (UInt64) from the stream.
            </summary>
            <returns>The 7-bit encoded unsigned 64-bit integer (UInt64) read from the stream.</returns>
        </member>
        <member name="M:SnapDB.IO.RemoteBinaryStream.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Writes a specified number of bytes from a byte array to the stream.
            </summary>
            <param name="buffer">The byte array containing the data to be written to the stream.</param>
            <param name="offset">The offset in the byte array where writing will start.</param>
            <param name="count">The number of bytes to write from the byte array.</param>
        </member>
        <member name="T:SnapDB.IO.UltraStreamWriter">
            <summary>
            Represents an ultra high speed way to write data to a stream.
            StreamWriter's methods can be slow at times.
            </summary>
        </member>
        <member name="M:SnapDB.IO.UltraStreamWriter.#ctor(System.IO.StreamWriter)">
            <summary>
            Creates a <see cref="T:SnapDB.IO.UltraStreamWriter"/> around <see cref="T:System.IO.Stream"/>.
            </summary>
            <param name="stream">The stream to wrap.</param>
        </member>
        <member name="M:SnapDB.IO.UltraStreamWriter.Write(System.Char)">
            <summary>
            Writes the provided character to the stream.
            </summary>
            <param name="value">The character to write.</param>
        </member>
        <member name="M:SnapDB.IO.UltraStreamWriter.Write(System.Single)">
            <summary>
            Writes the provided float to the stream.
            </summary>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.IO.UltraStreamWriter.WriteLine">
            <summary>
            Writes a new line to the stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.UltraStreamWriter.Flush">
            <summary>
            Flushes to the underlying stream.
            </summary>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.BinaryStream">
            <summary>
            Provides a binary stream for reading and writing data.
            </summary>
            <remarks>
            This class allows reading and writing binary data and is designed for use with little-endian processors.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStream.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.IO.Unmanaged.BinaryStream"/> that is only in memory.
            </summary>
            <exception cref="T:System.Exception">Thrown if not run on a little-endian processor.</exception>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStream.#ctor(SnapDB.IO.Unmanaged.MemoryPool)">
             <summary>
            Initializes a new instance of the <see cref="T:SnapDB.IO.Unmanaged.BinaryStream"/> class using a specified memory pool.
             </summary>
             <param name="pool">The memory pool to be used for stream operations.</param>
             <exception cref="T:System.Exception">Thrown if not run on a little-endian processor.</exception>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStream.#ctor(System.Boolean)">
            <summary>
            Creates a <see cref="T:SnapDB.IO.Unmanaged.BinaryStream"/> that is in memory only.
            </summary>
            <param name="allocatesOwnMemory"><c>true</c> to allocate its own memory rather than using the <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/>.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStream.#ctor(SnapDB.IO.Unmanaged.ISupportsBinaryStream,System.Boolean)">
            <summary>
            Creates a <see cref="T:SnapDB.IO.Unmanaged.BinaryStream"/> that is at position 0 of the provided stream.
            </summary>
            <param name="stream">The base stream to use.</param>
            <param name="leaveOpen">
            Determines if the underlying stream will automatically be disposed of when this class has its dispose method called.
            </param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStream.Finalize">
            <summary>
            Finalizes an instance of the BinaryStream class.
            </summary>
            <remarks>
            The destructor is responsible for cleaning up resources associated with the BinaryStream instance
            when the instance is garbage-collected. It calls the Dispose method to release resources and
            suppresses the finalization of this object to prevent it from being finalized again.
            </remarks>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.BinaryStream.BaseStream">
            <summary>
            Gets the underlying stream associated with the BinaryStream instance.
            </summary>
            <remarks>
            The BaseStream property provides access to the stream that this BinaryStream instance operates on.
            It can be used for reading data from and writing data to the underlying stream.
            </remarks>
            <value>The underlying stream.</value>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStream.Dispose(System.Boolean)">
            <summary>
            Releases and cleans up resources associated with the object.
            </summary>
            <param name="disposing">Indicates whether the method is called from an explicit disposal or during finalization.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStream.ClearLocks">
            <summary>
            When accessing the underlying stream, a lock is placed on the data. Calling this method clears that lock.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStream.UpdateLocalBuffer(System.Boolean)">
            <summary>
            Updates the local buffer data.
            </summary>
            <param name="isWriting">hints to the stream if write access is desired.</param>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase">
            <summary>
            Implementing this interface allows a binary stream to be attached to a buffer.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase.IsDisposed">
            <summary>
            Gets if the object has been disposed.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> releases both managed and unmanaged resources; <c>false</c> releases only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase.GetBlock(SnapDB.IO.Unmanaged.BlockArguments)">
            <summary>
            Gets a block for the following I/O session.
            </summary>
            <param name="args">The block request that needs to be fulfilled by this IOSession.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase.Clear">
            <summary>
            Sets the current usage of the <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> to <c>null</c>.
            </summary>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.BinaryStreamPointerWrapper">
            <summary>
            Creates a <see cref="T:SnapDB.IO.BinaryStreamBase"/> that wraps a single pointer.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStreamPointerWrapper.#ctor(System.Byte*,System.Int32)">
            <summary>
            Creates a <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamPointerWrapper"/>.
            </summary>
            <param name="stream">The byte pointer that starts the stream.</param>
            <param name="length">The valid length of the pointer.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.BinaryStreamPointerWrapper.UpdateLocalBuffer(System.Boolean)">
            <summary>
            Updates the local buffer data.
            </summary>
            <param name="isWriting">hints to the stream if write access is desired.</param>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.BlockArguments">
            <summary>
            A set of fields that are passed to a <see cref="M:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase.GetBlock(SnapDB.IO.Unmanaged.BlockArguments)"/> method to get results.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.BlockArguments.FirstPointer">
            <summary>
            The pointer for the first byte of the block.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.BlockArguments.FirstPosition">
            <summary>
            The position that corresponds to <see cref="F:SnapDB.IO.Unmanaged.BlockArguments.FirstPointer"/>.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.BlockArguments.IsWriting">
            <summary>
            Indicates if the stream plans to write to this block.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.BlockArguments.Length">
            <summary>
            The length of the block.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.BlockArguments.Position">
            <summary>
            The block returned must contain this position.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.BlockArguments.SupportsWriting">
            <summary>
            Notifies the calling class if this block supports
            writing without requiring this function to be called again if <see cref="F:SnapDB.IO.Unmanaged.BlockArguments.IsWriting"/> was set to <c>false</c>.
            </summary>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.MemoryPoolCollectionMode">
            <summary>
            Specifies how critical the collection of memory blocks is.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPoolCollectionMode.None">
            <summary>
            This means no collection has to occur.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPoolCollectionMode.Normal">
            <summary>
            This is the routine mode.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPoolCollectionMode.Emergency">
            <summary>
            This means the engine is using more memory than desired.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPoolCollectionMode.Critical">
            <summary>
            This means any memory that can be released should be released.
            If no memory is released after this pass, an out of memory exception will occur.
            </summary>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.CollectionEventArgs">
            <summary>
            Represents a collection of event arguments.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.CollectionEventArgs.#ctor(System.Action{System.Int32},SnapDB.IO.Unmanaged.MemoryPoolCollectionMode,System.Int32)">
            <summary>
            Creates a new <see cref="T:SnapDB.IO.Unmanaged.CollectionEventArgs"/>.
            </summary>
            <param name="releasePage"></param>
            <param name="collectionMode"></param>
            <param name="desiredPageReleaseCount"></param>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.CollectionEventArgs.CollectionMode">
            <summary>
            The mode for the collection.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.CollectionEventArgs.DesiredPageReleaseCount">
            <summary>
            When <see cref="P:SnapDB.IO.Unmanaged.CollectionEventArgs.CollectionMode"/> is <see cref="F:SnapDB.IO.Unmanaged.MemoryPoolCollectionMode.Emergency"/> or
            <see cref="F:SnapDB.IO.Unmanaged.MemoryPoolCollectionMode.Critical"/> this field contains the number of pages
            that need to be released by all of the objects. This value will automatically decrement
            every time a page has been released.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.CollectionEventArgs.ReleasePage(System.Int32)">
            <summary>
            Releases an unused page.
            </summary>
            <param name="index">The index of the page.</param>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.ISupportsBinaryStream">
            <summary>
            Implementing this interface allows a binary stream to be attached to a buffer.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.ISupportsBinaryStream.IsDisposed">
            <summary>
            Gets if the stream has been disposed.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.ISupportsBinaryStream.IsReadOnly">
            <summary>
            Gets if the stream can be written to.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.ISupportsBinaryStream.RemainingSupportedIoSessions">
            <summary>
            Gets the number of available simultaneous read and write sessions.
            </summary>
            <remarks>
            This value is used to determine if a binary stream can be cloned
            to improve read, write, and copy performance.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.ISupportsBinaryStream.CreateIoSession">
            <summary>
            Acquire an IO session.
            </summary>
            <returns>The IO session to be created.</returns>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.Memory">
            <summary>
            This class is used to allocate and free unmanaged memory.
            To release memory allocated through this class, call the Dispose() method of the return value.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.Memory.#ctor(System.Int32)">
            <summary>
            Allocates unmanaged memory. The block is uninitialized.
            </summary>
            <param name="requestedSize">
            The desired number of bytes to allocate.
            Be sure to check the actual size in the return class.
            </param>
            <returns>The allocated memory.</returns>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.Memory.Finalize">
            <summary>
            Releases the unmanaged resources before the <see cref="T:SnapDB.IO.Unmanaged.Memory"/> object is reclaimed by <see cref="T:System.GC"/>.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.Memory.Address">
            <summary>
            The pointer to the first byte of this unmanaged memory.
            Equals <see cref="F:System.IntPtr.Zero"/> if memory has been released.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.Memory.Size">
            <summary>
            The number of bytes in this allocation.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.Memory.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.Unmanaged.Memory"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.Memory.Release">
            <summary>
            Releases the allocated memory back to the OS.
            Same thing as calling Dispose().
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.Memory.Copy(System.Byte*,System.Byte*,System.Int32)">
            <summary>
            Does a safe copy of data from one location to another.
            A safe copy allows for the source and destination to overlap.
            </summary>
            <param name="src">A pointer to the source location from which data will be copied.</param>
            <param name="dest">A pointer to the destination location where data will be copied to.</param>
            <param name="count">The number of bytes to copy from the source to the destination.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.Memory.Copy(System.IntPtr,System.IntPtr,System.Int32)">
            <summary>
            Does a safe copy of data from one location to another.
            A safe copy allows for the source and destination to overlap.
            </summary>
            <param name="src">A pointer to the source location from which data will be copied.</param>
            <param name="dest">A pointer to the destination location where data will be copied to.</param>
            <param name="count">The number of bytes to copy from the source to the destination.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.Memory.Clear(System.Byte*,System.Int32)">
            <summary>
            Sets the data in this buffer to all zeroes.
            </summary>
            <param name="pointer">The starting position.</param>
            <param name="length">The number of bytes to clear.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.Memory.Clear(System.IntPtr,System.Int32)">
            <summary>
            Sets the data in this buffer to all zeroes.
            </summary>
            <param name="pointer">The starting position.</param>
            <param name="length">The number of bytes to clear.</param>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.TargetUtilizationLevels">
            <summary>
            Determines the desired buffer pool utilization level.
            Setting to Low will cause collection cycles to occur more often to keep the
            utilization level to low.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.TargetUtilizationLevels.Low">
            <summary>
            Collections won't occur until over 25% of the memory is consumed.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.TargetUtilizationLevels.Medium">
            <summary>
            Collections won't occur until over 50% of the memory is consumed.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.TargetUtilizationLevels.High">
            <summary>
            Collections won't occur until over 75% of the memory is consumed.
            </summary>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.MemoryPool">
            <summary>
            This class allocates and pools unmanaged memory.
            Designed to be internally thread safe.
            </summary>
            <remarks>
            Be careful how this class is referenced. Deadlocks can occur
            when registering to event <see cref="E:SnapDB.IO.Unmanaged.MemoryPool.RequestCollection"/> and
            when calling <see cref="M:SnapDB.IO.Unmanaged.MemoryPool.AllocatePage(System.Int32@,System.IntPtr@)"/>.
            </remarks>
        </member>
        <member name="E:SnapDB.IO.Unmanaged.MemoryPool.RequestCollection">
            <summary>
            Requests that classes using this <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/> release any unused buffers.
            Failing to do so may result in an <see cref="T:System.OutOfMemoryException"/> to occur.
            </summary>
            <remarks>
            IMPORTANT NOTICE: Do not call <see cref="M:SnapDB.IO.Unmanaged.MemoryPool.AllocatePage(System.Int32@,System.IntPtr@)"/> via the thread
            that raises this event. Also, be careful about entering a lock via this thread
            because a potential deadlock might occur.
            Also, Do not remove a handler from within a lock context as the remove
            blocks until all events have been called. A potential for another deadlock.
            </remarks>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPool.MaximumTestedSupportedMemoryCeiling">
            <summary>
            Represents the ceiling for the amount of memory the buffer pool can use (124GB).
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPool.MinimumTestedSupportedMemoryFloor">
            <summary>
            Represents the minimum amount of memory that the buffer pool needs to work properly (10MB).
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPool.PageMask">
            <summary>
            Provides a mask that the user can apply that can be used to get the offset position of a page.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPool.PageShiftBits">
            <summary>
            Gets the number of bits that must be shifted to calculate an index of a position.
            This is not the same as a page index that is returned by the allocate functions.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPool.PageSize">
            <summary>
            Each page will be exactly this size (based on RAM).
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPool.m_requestCollectionEvent">
            <summary>
            Delegates are placed in a List because
            in a later version, some sort of concurrent garbage collection may be implemented
            which means more control will need to be with the Event.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.#ctor(System.Int32,System.Int64,SnapDB.IO.Unmanaged.TargetUtilizationLevels)">
            <summary>
            Creates a new <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/>.
            </summary>
            <param name="pageSize">The desired page size. Must be between 4KB and 256KB.</param>
            <param name="maximumBufferSize">The desired maximum size of the allocation. Note: could be less if there is not enough system memory.</param>
            <param name="utilizationLevel">Specifies the desired utilization level of the allocated space.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.Finalize">
            <summary>
            Finalizes an instance of the <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/> class.
            This finalizer logs an informational message when called.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPool.AllocatedBytes">
            <summary>
            Returns the number of bytes currently allocated by the buffer pool to other objects.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPool.CurrentAllocatedSize">
            <summary>
            Returns the number of bytes allocated by all buffer pools.
            This does not include any pages that have been allocated but are not in use.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPool.CurrentCapacity">
            <summary>
            Gets the number of bytes that have been allocated to this buffer pool
            by the OS.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPool.IsDisposed">
            <summary>
            Gets if this pool has been disposed.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPool.MaximumPoolSize">
            <summary>
            The maximum amount of RAM that this memory pool is configured to support.
            Attempting to allocate more than this will cause an out of memory exception.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPool.TargetUtilizationLevel">
            <summary>
            Gets the current <see cref="T:SnapDB.IO.Unmanaged.TargetUtilizationLevels"/>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.AllocatePage(System.Int32@,System.IntPtr@)">
            <summary>
            Requests a page from the buffered pool.
            If there is not a free one available, method will block
            and request a collection of unused pages by raising
            <see cref="E:SnapDB.IO.Unmanaged.MemoryPool.RequestCollection"/> event.
            </summary>
            <param name="index">the index id of the page that was allocated</param>
            <param name="addressPointer">
            outputs a address that can be used
            to access this memory address.  You cannot call release with this parameter.
            Use the returned index to release pages.
            </param>
            <remarks>
            IMPORTANT NOTICE: Be careful when calling this method as the calling thread
            will block if no memory is available to have a background collection to occur.
            There is a possibility for a deadlock if calling this method from within a lock.
            The page allocated will not be initialized,
            so assume that the data is garbage.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.ReleasePage(System.Int32)">
            <summary>
            Releases the page back to the buffer pool for reallocation.
            </summary>
            <param name="pageIndex">A value of zero or less will return silently.</param>
            <remarks>
            The page released will not be initialized.
            Releasing a page is on the honor system.
            Re-referencing a released page will most certainly cause
            unexpected crashing or data corruption or any other unexplained behavior.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.ReleasePages(System.Collections.Generic.IEnumerable{System.Int32})">
            <summary>
            Releases all of the supplied pages.
            </summary>
            <param name="pageIndexes">A collection of pages.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.SetMaximumBufferSize(System.Int64)">
            <summary>
            Changes the allowable maximum buffer size.
            </summary>
            <param name="value">The new maximum buffer size in bytes.</param>
            <returns>The previous maximum buffer size before the change.</returns>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.SetTargetUtilizationLevel(SnapDB.IO.Unmanaged.TargetUtilizationLevels)">
            <summary>
            Changes the utilization level.
            </summary>
            <param name="utilizationLevel">The new target utilization level to set.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.RequestMoreFreeBlocks">
            <summary>
            Determines whether to allocate more memory or to do a collection cycle on the existing pool.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.RemoveDeadEvents">
            <summary>
            Searches the collection events and removes any events that have been collected by
            the garbage collector.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.GetCollectionLevelBasedOnSize(System.Int64)">
            <summary>
            Gets the number of collection rounds base on the size.
            </summary>
            <param name="size"></param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPool.CalculateStopShrinkingLimit(System.Int64)">
            <summary>
            Calculates the limit at which memory pool shrinking should stop.
            </summary>
            <param name="size">The current size of the memory pool.</param>
            <returns>
            The limit at which memory pool shrinking should stop, ensuring it's at least 5% of the maximum pool size
            or 15% less than the current size, whichever is greater.
            </returns>
            <remarks>
            This method calculates the limit at which memory pool shrinking should stop based on the current size.
            The stop limit is set to be at least 5% of the maximum pool size or 15% less than the current size,
            whichever is greater.
            </remarks>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.MemoryPoolPageList">
            <summary>
            Maintains a list of all of the memory allocations for the buffer pool.
            </summary>
            <remarks>
            This class is not thread-safe.
            </remarks>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPoolPageList.MemoryPoolCeiling">
            <summary>
            Defines the maximum supported number of bytes that can be allocated based
            on the amount of RAM in the system. This is not user-configurable.
            </summary>
        </member>
        <member name="F:SnapDB.IO.Unmanaged.MemoryPoolPageList.PageSize">
            <summary>
            Defines number of bytes in RAM that a page will exactly occupy.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolPageList.#ctor(System.Int32,System.Int64)">
            <summary>
            Create a thread safe list of MemoryPool pages.
            </summary>
            <param name="pageSize">The desired page size. Must be between 4KB and 256KB.</param>
            <param name="maximumBufferSize">
            The desired maximum size of the allocation. Note: could be less if there is not enough system memory.
            A value of -1 will default based on available system memory.
            </param>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolPageList.CurrentAllocatedSize">
            <summary>
            Returns the number of bytes allocated by all buffer pools.
            This does not include any pages that have been allocated but are not in use.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolPageList.CurrentCapacity">
            <summary>
            Gets the number of bytes that have been allocated to this buffer pool
            by the OS.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolPageList.FreeSpaceBytes">
            <summary>
            Gets if there is any free space.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolPageList.IsFull">
            <summary>
            Gets if the pool is currently full.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolPageList.MaximumPoolSize">
            <summary>
            The maximum amount of RAM that this memory pool is configured to support.
            Attempting to allocate more than this will cause an out of memory exception
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolPageList.Dispose">
            <summary>
            Disposes of all of the memory on the list.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolPageList.TryGetNextPage(System.Int32@,System.IntPtr@)">
            <summary>
            Requests a new block from the buffer pool.
            </summary>
            <param name="index">The index identifier of the block.</param>
            <param name="addressPointer">The address to the start of the block.</param>
            <exception cref="T:System.OutOfMemoryException">Thrown if the list is full.</exception>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolPageList.ReleasePage(System.Int32)">
            <summary>
            Releases a block back to the pool so it can be re-allocated.
            </summary>
            <param name="index">The index identifier of the block.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolPageList.ShrinkMemoryPool(System.Int64)">
            <summary>
            Tries to shrink the buffer pool to the provided size.
            </summary>
            <param name="size">The size of the buffer pool.</param>
            <returns>The final size of the buffer pool.</returns>
            <remarks>The buffer pool shrinks to a size less than or equal to <paramref name="size"/>.</remarks>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolPageList.SetMaximumPoolSize(System.Int64)">
            <summary>
            Changes the allowable buffer size.
            </summary>
            <param name="value">The number of bytes to set.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolPageList.GrowMemoryPool(System.Int64)">
            <summary>
            Grows the buffer pool to have the desired size.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolPageList.CalculateMemoryPoolCeiling(System.Int32,System.Int64)">
            <summary>
            Calculates the memory pool ceiling based on the memory block size and the total physical system memory.
            </summary>
            <param name="memoryBlockSize">The size of memory blocks used by the memory pool.</param>
            <param name="systemTotalPhysicalMemory">The total physical memory available in the system, in bytes.</param>
            <returns>The calculated memory pool ceiling, rounded down to the nearest allocation size.</returns>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolPageList.CalculateMemoryBlockSize(System.Int32,System.Int64)">
            <summary>
            Calculates the desired allocation block size to request from the OS.
            </summary>
            <param name="pageSize">The size of each page.</param>
            <param name="totalSystemMemory">The total amount of system memory.</param>
            <returns>The recommended block size.</returns>
            <remarks>
            The recommended block size is the <paramref name="totalSystemMemory"/> divided by 1000
            but must be a multiple of the system allocation size and the page size and cannot be larger than 1GB
            </remarks>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.MemoryPoolStream">
            <summary>
            Provides a in memory stream that uses pages that are pooled in the unmanaged buffer pool.
            </summary>
            <summary>
            Provides a in memory stream that uses pages that are pooled in the unmanaged buffer pool.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStream.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.IO.Unmanaged.MemoryPoolStream"/> using the default <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStream.#ctor(SnapDB.IO.Unmanaged.MemoryPool)">
            <summary>
            Create a new <see cref="T:SnapDB.IO.Unmanaged.MemoryPoolStream"/>
            </summary>
            <param name="pool">The memory pool to associate with the stream.</param>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolStream.BlockSize">
            <summary>
            Gets the unit size of an individual block.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolStream.IsReadOnly">
            <summary>
            Gets if the stream can be written to.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolStream.SnapDB#IO#Unmanaged#ISupportsBinaryStream#RemainingSupportedIoSessions">
            <summary>
            Gets the number of available simultaneous read and write sessions.
            </summary>
            <remarks>
            This value is used to determine if a binary stream can be cloned
            to improve read, write, and copy performance.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStream.CreateBinaryStream">
            <summary>
            Creates a new binary from an IO session.
            </summary>
            <returns>The newly created binary stream.</returns>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStream.CreateIoSession">
            <summary>
            Acquire an IO Session.
            </summary>
            <returns>The newly created IO session.</returns>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.MemoryPoolStreamCore">
            <summary>
            Provides a dynamically sizing sequence of unmanaged data.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.Settings.AddNewPage(System.IntPtr,System.Int32)">
            <summary>
            Adds a new page to the collection of pages.
            </summary>
            <param name="pagePointer">A pointer to the new page to be added.</param>
            <param name="pageIndex">The index of the new page.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.Settings.GetAllPageIndexes">
            <summary>
            Returns all of the buffer pool page indexes used by this class.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.IO.Unmanaged.MemoryPoolStreamCore"/> using the default <see cref="T:SnapDB.IO.Unmanaged.MemoryPool"/>.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.#ctor(SnapDB.IO.Unmanaged.MemoryPool)">
            <summary>
            Create a new <see cref="T:SnapDB.IO.Unmanaged.MemoryPoolStreamCore"/>.
            </summary>
            <param name="pool">The memory pool to associate with the stream.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.Finalize">
            <summary>
            Releases the unmanaged resources before the <see cref="T:SnapDB.IO.Unmanaged.MemoryPoolStreamCore"/> object is reclaimed by <see cref="T:System.GC"/>.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.IsDisposed">
            <summary>
            Gets if the stream has been disposed.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.Length">
            <summary>
            Gets the length of the current stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the memory file object and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.ReadBlock(System.Int64,System.IntPtr@,System.Int32@)">
            <summary>
            Reads from the underlying stream the requested set of data.
            This function is more user friendly than calling GetBlock().
            </summary>
            <param name="position">The starting position of the read.</param>
            <param name="pointer">Ann output pointer to <paramref name="position"/>.</param>
            <param name="validLength">The number of bytes that are valid after this position.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.CopyTo(System.Int64,System.IntPtr,System.Int32)">
            <summary>
            Copies data from the current position of the BinaryStream to a specified memory location.
            </summary>
            <param name="position">The position in the BinaryStream from which to start copying.</param>
            <param name="dest">The destination memory location where data will be copied.</param>
            <param name="length">The number of bytes to copy.</param>
            <remarks>
            This method reads data from the BinaryStream starting at the specified position and copies it
            to the destination memory location pointed to by the <paramref name="dest"/> parameter. If the
            requested length exceeds the valid data available, it copies as much data as possible.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.ConfigureAlignment(System.Int64)">
            <summary>
            Configure the natural alignment of the data.
            </summary>
            <param name="startPosition">The first addressable position.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.ConfigureAlignment(System.Int64,System.Int32)">
            <summary>
            Configure the natural alignment of the data.
            </summary>
            <param name="startPosition">The first addressable position.</param>
            <param name="alignment">
            Forces alignment on this boundary.
            Alignment must be a factor of the BufferPool's page boundary.
            </param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.GetBlock(SnapDB.IO.Unmanaged.BlockArguments)">
            <summary>
            Gets a block for the following IO session.
            </summary>
            <param name="args">The BlockArguments specifying the block's position and length.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.GetPage(System.Int64)">
            <summary>
            Returns the page that corresponds to the absolute position.
            This function will also auto-grow the stream.
            </summary>
            <param name="position">The position to use to calculate the page to retrieve</param>
            <returns>The memory page as a native pointer (nint).</returns>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.MemoryPoolStreamCore.IncreasePageCount(System.Int32)">
            <summary>
            Increases the size of the Memory Stream and updated the settings if needed
            </summary>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.IO.Unmanaged"/> namespace organizes all common SnapDB library functionality related to stream tools,
            e.g., the <see cref="T:SnapDB.IO.Unmanaged.MemoryPoolStream"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.UnmanagedMemoryStream">
            <summary>
            Provides a in memory stream that allocates its own unmanaged memory.
            </summary>
            <summary>
            Provides an in-memory stream that allocates its own unmanaged memory.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStream.#ctor(System.Int32)">
            <summary>
            Create a new <see cref="T:SnapDB.IO.Unmanaged.UnmanagedMemoryStream"/> that allocates its own unmanaged memory.
            </summary>
            <param name="allocationSize">The set definition for the size capacity of memory allocations.</param>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.UnmanagedMemoryStream.IsReadOnly">
            <summary>
            Gets if the stream can be written to.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.UnmanagedMemoryStream.SnapDB#IO#Unmanaged#ISupportsBinaryStream#RemainingSupportedIoSessions">
            <summary>
            Gets the number of available simultaneous read and write sessions.
            </summary>
            <remarks>
            This value is used to determine if a binary stream can be cloned
            to improve read, write, and copy performance.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStream.CreateBinaryStream">
            <summary>
            Creates a new binary from an IO session.
            </summary>
            <returns>A new <see cref="T:SnapDB.IO.BinaryStreamBase"/> instance of type <see cref="T:SnapDB.IO.Unmanaged.BinaryStream"/>.</returns>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStream.CreateIoSession">
            <summary>
            Acquire an IO Session.
            </summary>
            <returns>A new <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/> instance of type <see cref="T:SnapDB.IO.Unmanaged.BinaryStreamIoSessionBase"/>.</returns>
        </member>
        <member name="T:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore">
            <summary>
            Represents settings and storage for managing IntPtr arrays used for memory management.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings"/> class.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings.AddingRequiresClone">
            <summary>
            Determines if adding a new page requires cloning the array to increase capacity.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings.PageCount">
            <summary>
            Gets the total number of pages stored in the memory manager.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings.GetPointer(System.Int32)">
            <summary>
            Gets the IntPtr pointer at the specified page index.
            </summary>
            <param name="page">The index of the page.</param>
            <returns>The IntPtr pointer at the specified page index.</returns>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings.AddNewPage(System.IntPtr)">
            <summary>
            Adds a new page represented by an IntPtr pointer to the memory manager.
            </summary>
            <param name="pagePointer">The IntPtr pointer of the new page.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings.Clone">
            <summary>
            Creates a shallow clone of the <see cref="T:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings"/> instance.
            </summary>
            <returns>A shallow clone of the <see cref="T:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings"/> instance.</returns>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Settings.EnsureCapacity">
            <summary>
            Ensures the array capacity is sufficient to add a new page.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.#ctor(System.Int32)">
            <summary>
            Create a new <see cref="T:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore"/> that allocates its own unmanaged memory.
            </summary>
            <param name="allocationSize">The set definition for the allocation memory capacity.</param>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.IsDisposed">
            <summary>
            Gets if the stream has been disposed.
            </summary>
        </member>
        <member name="P:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Length">
            <summary>
            Gets the length of the current stream.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the memory file object and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.ReadBlock(System.Int64,System.IntPtr@,System.Int32@)">
            <summary>
            Reads from the underlying stream the requested set of data.
            This function is more user friendly than calling GetBlock().
            </summary>
            <param name="position">The starting position of the read.</param>
            <param name="pointer">An output pointer to <paramref name="position"/>.</param>
            <param name="validLength">The number of bytes that are valid after this position.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.ConfigureAlignment(System.Int64)">
            <summary>
            Configure the natural alignment of the data.
            </summary>
            <param name="startPosition">The first addressable position.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.ConfigureAlignment(System.Int64,System.Int32)">
            <summary>
            Configure the natural alignment of the data.
            </summary>
            <param name="startPosition">The first addressable position.</param>
            <param name="alignment">
            Forces alignment on this boundary.
            Alignment must be a factor of the BufferPool's page boundary.
            </param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.GetBlock(SnapDB.IO.Unmanaged.BlockArguments)">
            <summary>
            Gets a block for the following IO session.
            </summary>
            <param name="args">The BlockArguments specifying the block's position and length.</param>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.GetPage(System.Int64)">
            <summary>
            Retrieves the memory page associated with the specified position.
            </summary>
            <param name="position">The position for which to retrieve the memory page.</param>
            <returns>
            A pointer to the memory page that corresponds to the given position.
            </returns>
            <remarks>
            This method retrieves the memory page from the memory pool associated with the specified position.
            If the requested page does not exist, it may increase the page count to accommodate the position.
            </remarks>
        </member>
        <member name="M:SnapDB.IO.Unmanaged.UnmanagedMemoryStreamCore.IncreasePageCount(System.Int32)">
            <summary>
            Increases the page count of the memory pool to accommodate the specified number of pages.
            </summary>
            <param name="pageCount">The desired number of pages to be accommodated.</param>
            <remarks>
            This method increases the page count of the memory pool to ensure it can accommodate the specified number of pages.
            If the current settings require cloning, a clone of the settings is made before adding new pages.
            Each new page is allocated in memory and initialized with zeroes.
            </remarks>
        </member>
        <member name="T:SnapDB.IsolatedQueue`1">
            <summary>
            Provides a buffer of point data where reads are isolated from writes.
            However, reads must be synchronized with other reads and writes must be synchronized with other writes.
            </summary>
            <typeparam name="T">The type of elements stored in the queue.</typeparam>
        </member>
        <member name="T:SnapDB.IsolatedQueue`1.IsolatedNode">
            <summary>
            Represents an individual node that allows for items to be added and removed from the
            queue independently and without locks.
            </summary>
        </member>
        <member name="M:SnapDB.IsolatedQueue`1.IsolatedNode.#ctor(System.Int32)">
            <summary>
            Creates a <see cref="T:SnapDB.IsolatedQueue`1.IsolatedNode"/>
            </summary>
            <param name="count">The number of items in each node.</param>
        </member>
        <member name="P:SnapDB.IsolatedQueue`1.IsolatedNode.CanDequeue">
            <summary>
            Gets if there are items that can be dequeued.
            </summary>
        </member>
        <member name="P:SnapDB.IsolatedQueue`1.IsolatedNode.CanEnqueue">
            <summary>
            Gets if this list can be enqueued.
            </summary>
        </member>
        <member name="P:SnapDB.IsolatedQueue`1.IsolatedNode.DequeueMustMoveToNextNode">
            <summary>
            Gets if the current node is out of entries.
            </summary>
        </member>
        <member name="M:SnapDB.IsolatedQueue`1.IsolatedNode.Enqueue(`0)">
            <summary>
            Adds the following item to the queue. Be sure to check if it is full first.
            </summary>
            <param name="item">The item to be added to the queue.</param>
        </member>
        <member name="M:SnapDB.IsolatedQueue`1.#ctor">
            <summary>
            Creates an <see cref="T:SnapDB.IsolatedQueue`1"/>
            </summary>
        </member>
        <member name="P:SnapDB.IsolatedQueue`1.Count">
            <summary>
            The number of elements in the queue.
            </summary>
            <returns>
            Note: Due to the nature of simultaneous access. This is a representative number.
            and does not mean the exact number of items in the queue unless both Enqueue and Dequeue
            are not currently processing.
            </returns>
        </member>
        <member name="M:SnapDB.IsolatedQueue`1.Enqueue(`0)">
            <summary>
            Addes the provided item to the <see cref="T:SnapDB.IsolatedQueue`1"/>.
            </summary>
            <param name="item"></param>
        </member>
        <member name="M:SnapDB.IsolatedQueue`1.TryDequeue(`0@)">
            <summary>
            Attempts to dequeue an item from the queue.
            </summary>
            <param name="item">When this method returns, contains the dequeued item, if successful; otherwise, the default value for the type.</param>
            <returns>
              <c>true</c> if an item was successfully dequeued; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.IsolatedQueue`1.Enqueue(`0[],System.Int32,System.Int32)">
            <summary>
            Adds the provided items to the <see cref="T:SnapDB.IsolatedQueue`1"/>.
            </summary>
            <param name="items">The items to add.</param>
            <param name="offset">The offset position.</param>
            <param name="length">The length.</param>
        </member>
        <member name="M:SnapDB.IsolatedQueue`1.Dequeue(`0[],System.Int32,System.Int32)">
            <summary>
            Dequeues all of the items into the provided array.
            </summary>
            <param name="items">Where to put the items.</param>
            <param name="startingIndex">The starting index.</param>
            <param name="length">The maximum number of times to store.</param>
            <returns>The number of items dequeued.</returns>
        </member>
        <member name="T:SnapDB.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB"/> namespace organizes all common general SnapDB library functionality,
            e.g., the <see cref="T:SnapDB.BitConvert"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Net.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Net"/> namespace contains the <see cref="T:SnapDB.Net.NetworkBinaryStream"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Net.NetworkBinaryStream">
            <summary>
            Represents a binary stream over a network connection.
            </summary>
        </member>
        <member name="M:SnapDB.Net.NetworkBinaryStream.#ctor(System.Net.Sockets.Socket,System.Int32,SnapDB.Threading.WorkerThreadSynchronization)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Net.NetworkBinaryStream"/> class.
            </summary>
            <param name="socket">The underlying socket to use for communication.</param>
            <param name="timeout">The socket timeout in milliseconds.</param>
            <param name="workerThreadSynchronization">Optional worker thread synchronization object.</param>
            <exception cref="T:System.Exception"></exception>
        </member>
        <member name="P:SnapDB.Net.NetworkBinaryStream.AvailableReadBytes">
            <summary>
            Gets the number of available bytes to read from the stream.
            </summary>
        </member>
        <member name="P:SnapDB.Net.NetworkBinaryStream.Connected">
            <summary>
            Gets a value indicating whether or not the socket is connected.
            </summary>
        </member>
        <member name="P:SnapDB.Net.NetworkBinaryStream.Socket">
            <summary>
            Gets the underlying socket used for communication.
            </summary>
        </member>
        <member name="P:SnapDB.Net.NetworkBinaryStream.Timeout">
            <summary>
            Gets or sets the socket timeout in milliseconds.
            </summary>
        </member>
        <member name="M:SnapDB.Net.NetworkBinaryStream.Dispose(System.Boolean)">
            <summary>
            Disposes of the <see cref="T:SnapDB.Net.NetworkBinaryStream"/> instance, disconnecting the socket if necessary.
            </summary>
            <param name="disposing"><c>true</c> if called from <see cref="M:SnapDB.Net.NetworkBinaryStream.Dispose(System.Boolean)"/>, <c>false</c> if called from the finalizer.</param>
        </member>
        <member name="M:SnapDB.Net.NetworkBinaryStream.Disconnect">
            <summary>
            Disconnects the socket.
            </summary>
        </member>
        <member name="T:SnapDB.Number">
            <summary>
            Provides utility methods for working with numbers.
            </summary>
        </member>
        <member name="M:SnapDB.Number.WriteToChars(System.Single,System.Char[],System.Int32)">
            <summary>
            Writes a floating-point value to a character array.
            </summary>
            <param name="value">The float value to be written.</param>
            <param name="str">The character array where the value will be written.</param>
            <param name="position">The starting position in the character array.</param>
            <returns>The number of characters written to the array.</returns>
        </member>
        <member name="M:SnapDB.Number.WriteToChars2(System.UInt32,System.Char[],System.Int32)">
            <summary>
            Writes an unsigned integer value to a character array.
            </summary>
            <param name="value">The uint value to be written.</param>
            <param name="destination">The character array where the value will be written.</param>
            <param name="position">The starting position in the character array.</param>
            <returns>The number of characters written to the array.</returns>
        </member>
        <member name="M:SnapDB.Number.WriteToChars(System.UInt32,System.Char[],System.Int32)">
            <summary>
            Writes an unsigned integer value to a character array using optimized digit extraction.
            </summary>
            <param name="value">The uint value to be written.</param>
            <param name="destination">The character array where the value will be written.</param>
            <param name="position">The starting position in the character array.</param>
            <returns>The number of characters written to the array.</returns>
        </member>
        <member name="M:SnapDB.Number.BinToReverseBcd(System.UInt32)">
            <summary>
            Converts a uint binary value into a BCD value that is encoded in reverse order.
            This means what was the Most Significant Digit is now the lease significant digit.
            </summary>
            <param name="value"></param>
        </member>
        <member name="T:SnapDB.Security.Authentication.IntegratedSecurityClient">
            <summary>
            Uses windows integrated security to authentication.
            This uses NTLM in non-domain environments
            and Kerberos in domain environments.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityClient.#ctor">
            <summary>
            Uses the default credentials of the user to authenticate
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityClient.#ctor(System.String,System.String,System.String)">
            <summary>
            Uses the specified username and password to authenticate.
            </summary>
            <param name="username">The username to use</param>
            <param name="password">the password to use</param>
            <param name="domain">the domain to long in as.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityClient.TryAuthenticateAsClient(System.IO.Stream,System.Byte[])">
            <summary>
            Authenticates the client using the supplied stream.
            </summary>
            <param name="stream">the stream to use to authenticate the connection.</param>
            <param name="additionalChallenge">
            Additional data that much match between the client and server
            for the connection to succeed.
            </param>
            <returns>
            <c>true</c> if authentication succeeded; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="T:SnapDB.Security.Authentication.IntegratedSecurityServer">
            <summary>
            Uses windows integrated security to authentication.
            This uses NTLM in non-domain environments
            and Kerberos in domain environments.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.IntegratedSecurityServer.Users">
            <summary>
            The location for all of the supported identities
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityServer.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.Security.Authentication.IntegratedSecurityServer"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityServer.TryAuthenticateAsServer(System.IO.Stream,System.Guid@,System.Byte[])">
            <summary>
            Authenticates the client stream
            </summary>
            <param name="stream">The stream to authenticate</param>
            <param name="userToken">the user token associated with the identity match</param>
            <param name="additionalChallenge">
            Additional data that much match between the client and server
            for the connection to succeed.
            </param>
            <returns>true if successful authentication. False otherwise.</returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityServer.Save(System.IO.Stream)">
            <summary>
            Saves to the supplied stream.
            </summary>
            <param name="stream">The binary stream to which the state will be saved.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityServer.Load(System.IO.Stream)">
            <summary>
            Loads from the supplied stream.
            </summary>
            <param name="stream">The binary stream from which the state will be loaded.</param>
        </member>
        <member name="T:SnapDB.Security.Authentication.IntegratedSecurityUserCredential">
            <summary>
            An individual server side user credential
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.IntegratedSecurityUserCredential.UserId">
            <summary>
            The security identifier (SID) for the username.
            </summary>
            <remarks>
            This value is automatically looked by username for the target OS.
            </remarks>
        </member>
        <member name="F:SnapDB.Security.Authentication.IntegratedSecurityUserCredential.Username">
            <summary>
            The username that was passed to the constructor.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.IntegratedSecurityUserCredential.UserToken">
            <summary>
            The token associated with this user and their permissions.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityUserCredential.#ctor(System.String,System.Guid)">
            <summary>
            Creates user credentials.
            </summary>
            <param name="username">The created name for the user.</param>
            <param name="userToken">The generated token to be associated with the user's chosen name.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityUserCredential.#ctor(System.IO.Stream)">
            <summary>
            Loads user credentials from the supplied stream.
            </summary>
            <param name="stream">The binary stream from which the state will be loaded.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityUserCredential.Save(System.IO.Stream)">
            <summary>
            Saves to the supplied stream.
            </summary>
            <param name="stream">The binary stream to which the state will be saved.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityUserCredential.Load(System.IO.Stream)">
            <summary>
            Loads from the supplied stream.
            </summary>
            <param name="stream">The binary stream from which the state will be loaded.</param>
        </member>
        <member name="T:SnapDB.Security.Authentication.IntegratedSecurityUserCredentials">
            <summary>
            Provides simple password based authentication that uses Secure Remote Password.
            </summary>
            <remarks>
            It is safe to store the user's credential on the server. This is a zero knowledge
            password proof, meaning if this database is compromised, a brute force attack
            is the only way to reveal the password.
            </remarks>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityUserCredentials.TryGetToken(System.Security.Principal.IIdentity,System.Guid@)">
            <summary>
            Gets if the user exists in the database.
            </summary>
            <param name="identity">The identity to check.</param>
            <param name="token">The token to extract for the user.</param>
            <returns><c>true</c> if the user exists; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityUserCredentials.AddUser(System.String)">
            <summary>
            Adds the specified user to the credentials database.
            </summary>
            <param name="username">The username of the new user to add.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityUserCredentials.AddUser(System.String,System.Guid)">
            <summary>
            Adds the specified user to the credentials database.
            </summary>
            <param name="username">The username of the new user to add.</param>
            <param name="userToken">The token to be associated with the username.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityUserCredentials.Save(System.IO.Stream)">
            <summary>
            Saves to the supplied stream.
            </summary>
            <param name="stream">The binary stream to which the users will be saved.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.IntegratedSecurityUserCredentials.Load(System.IO.Stream)">
            <summary>
            Loads from the supplied stream.
            </summary>
            <param name="stream">The binary stream from which the users will be loaded.</param>
        </member>
        <member name="T:SnapDB.Security.Authentication.IUserToken">
            <summary>
            An interface for token data that is associated with a user.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.IUserToken.Save(System.IO.Stream)">
            <summary>
            Saves the token to a stream
            </summary>
            <param name="stream">the stream to save to</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.IUserToken.Load(System.IO.Stream)">
            <summary>
            Loads the token from a stream
            </summary>
            <param name="stream">the stream to load from</param>
        </member>
        <member name="T:SnapDB.Security.Authentication.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Security.Authentication"/> namespace organizes all common SnapDB library functionality related to user credential authentication, 
            e.g., the <see cref="T:SnapDB.Security.Authentication.IntegratedSecurityUserCredential"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Security.Authentication.NullUserToken">
            <summary>
            An empty token that does not contain any data.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.NullUserToken.Save(System.IO.Stream)">
            <summary>
            Saves the specified stream when called.
            </summary>
            <param name="stream">The specified stream to save.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.NullUserToken.Load(System.IO.Stream)">
            <summary>
            Loads the stream specified when called.
            </summary>
            <param name="stream">The specified stream to load.</param>
        </member>
        <member name="T:SnapDB.Security.Authentication.ScramClient">
            <summary>
            Provides simple password based authentication that uses Secure Remote Password.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramClient.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the SCRAM (Salted Challenge Response Authentication Mechanism) client with the provided username and password.
            </summary>
            <param name="username">The username to be used for authentication.</param>
            <param name="password">The password associated with the username.</param>
            <remarks>
            This constructor initializes a new instance of the SCRAM client with the provided <paramref name="username"/> and <paramref name="password"/>.
            It converts the username and password to UTF-8 bytes and normalizes them using FormKC normalization.
            </remarks>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramClient.AuthenticateAsClient(System.IO.Stream,System.Byte[])">
            <summary>
            Authenticates the client to the server using SCRAM-SHA-256 or SCRAM-SHA-1 mechanism.
            </summary>
            <param name="stream">The stream used for communication with the server.</param>
            <param name="additionalChallenge">Optional additional challenge data to include in the authentication process.</param>
            <returns>True if authentication is successful, otherwise false.</returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramClient.SetServerValues(SnapDB.Security.HashMethod,System.Byte[],System.Int32)">
            <summary>
            Sets the server parameters and regenerates the salted password if
            the salt values have changed.
            </summary>
            <param name="hashMethod">The hashing method.</param>
            <param name="salt">The salt for the user credentials.</param>
            <param name="iterations">The number of iterations.</param>
        </member>
        <member name="T:SnapDB.Security.Authentication.ScramServer">
            <summary>
            Provides simple password based authentication that uses Secure Remote Password.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.ScramServer.Users">
            <summary>
            Contains the user credentials database
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramServer.#ctor">
            <summary>
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramServer.AuthenticateAsServer(System.IO.Stream,System.Byte[])">
            <summary>
            Requests that the provided stream be authenticated.
            </summary>
            <param name="stream">The binary stream to which the users will be saved.</param>
            <param name="additionalChallenge">
            Additional data to include in the challenge. If using SSL certificates,
            adding the thumbprint to the challenge will allow detecting man in the middle attacks.
            </param>
            <returns>The authenticated stream.</returns>
        </member>
        <member name="T:SnapDB.Security.Authentication.ScramServerSession">
            <summary>
            Provides simple password based authentication that uses Secure Remote Password.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.ScramServerSession.Username">
            <summary>
            The username to be used.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramServerSession.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Security.Authentication.ScramServerSession"/> class with the specified username.
            </summary>
            <param name="username">The username associated with the server session.</param>
        </member>
        <member name="T:SnapDB.Security.Authentication.ScramUserCredential">
            <summary>
            An individual server side user credential.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.ScramUserCredential.HashMethod">
            <summary>
            The <see cref="F:SnapDB.Security.Authentication.ScramUserCredential.HashMethod"/> used for authentication protocols.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.ScramUserCredential.Iterations">
            <summary>
            The number of iterations to go through for authentication protocols.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.ScramUserCredential.Salt">
            <summary>
            A random value that is used as part of the authentication process of type byte[].
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.ScramUserCredential.ServerKey">
            <summary>
            Cryptographic key used by the server to verify the integrity of the client's authentication response.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.ScramUserCredential.StoredKey">
            <summary>
            Used on the server side to perform password-based key derivation, allowing the server to independently verify the client's response.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.ScramUserCredential.UserBytes">
            <summary>
            Stored user bytes that are read-only.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.ScramUserCredential.UserName">
            <summary>
            The chosen username, which cannot be more than 100 characters.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramUserCredential.#ctor(System.String,System.String,System.Int32,System.Int32,SnapDB.Security.HashMethod)">
            <summary>
            Adds the following user information to the server's user database
            </summary>
            <param name="username">The username. Cannot be more than 100 characters.</param>
            <param name="password">The password. Cannot be more than 1024 characters.</param>
            <param name="iterations">The number of iterations.</param>
            <param name="saltSize">The size of the salt. Defaults to 32 bytes.</param>
            <param name="hashMethod">The hash method to use for authentication.</param>
            <remarks>
            Setting a large number of iterations will not impact how long it takes to negotiate a client on the server end. This is because
            the server precomputes the hash results. The client can optionally also precompute the results so negotiation can take
            milliseconds.
            </remarks>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramUserCredential.ComputeClientSignature(System.Byte[])">
            <summary>
            Computes the client's signature as part of the SCRAM (Salted Challenge Response Authentication Mechanism) authentication process.
            </summary>
            <param name="authMessage">The authentication message to be used for signature computation.</param>
            <returns>The computed client signature as a byte array.</returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramUserCredential.ComputeServerSignature(System.Byte[])">
            <summary>
            Computes the server's signature as part of the SCRAM (Salted Challenge Response Authentication Mechanism) authentication process.
            </summary>
            <param name="authMessage">The authentication message to be used for signature computation.</param>
            <returns>The computed server signature as a byte array.</returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramUserCredential.ComputeStoredKey(System.Byte[])">
            <summary>
            Computes the stored key as part of the SCRAM (Salted Challenge Response Authentication Mechanism) authentication process.
            </summary>
            <param name="clientKey">The client key to be used for stored key computation.</param>
            <returns>The computed stored key as a byte array.</returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramUserCredential.Save">
            <summary>
            Saves the current state or data of the object to a persistent storage or file.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramUserCredential.Load">
            <summary>
            Loads the object's state or data from a persistent storage or file.
            </summary>
        </member>
        <member name="T:SnapDB.Security.Authentication.ScramUserCredentials">
            <summary>
            Provides simple password based authentication that uses SCRAM.
            </summary>
            <remarks>
            It is safe to store the user's credential on the server. This is a zero knowledge
            password proof, meaning if this database is compromised, a brute force attack
            is the only way to reveal the password.
            </remarks>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramUserCredentials.TryLookup(System.Byte[],SnapDB.Security.Authentication.ScramUserCredential@)">
            <summary>
            Attempts to look up a user credential by their username.
            </summary>
            <param name="username">The username of the user credential to look up.</param>
            <param name="user">When this method returns, contains the user credential if found; otherwise, <c>null</c>.</param>
            <returns><c>true</c> if the user credential was found; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.ScramUserCredentials.AddUser(System.String,System.String,System.Int32,System.Int32,SnapDB.Security.HashMethod)">
            <summary>
            Adds a new user credential with the specified username and password.
            </summary>
            <param name="username">The username of the new user credential.</param>
            <param name="password">The password associated with the new user credential.</param>
            <param name="iterations">The number of iterations for key derivation (optional, default is 4000).</param>
            <param name="saltSize">The size of the salt in bytes for key derivation (optional, default is 32).</param>
            <param name="hashMethod">The hash method used for key derivation (optional, default is SHA-256).</param>
        </member>
        <member name="T:SnapDB.Security.Authentication.SrpClient">
            <summary>
            Provides simple password based authentication that uses Secure Remote Password.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpClient.#ctor(System.String,System.String)">
            <summary>
            Creates a client that will authenticate with the specified
            username and password.
            </summary>
            <param name="username">the username</param>
            <param name="password">the password</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpClient.AuthenticateAsClient(System.IO.Stream,System.Byte[])">
            <summary>
            Authenticates the client session with the server using the provided network stream and optional additional challenge.
            </summary>
            <param name="stream">The network stream used for communication with the server.</param>
            <param name="additionalChallenge">An optional additional challenge to include in the authentication process (default is <c>null</c>).</param>
            <returns><c>true</c> if authentication succeeds; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:SnapDB.Security.Authentication.SrpConstants">
            <summary>
            Supplies the base constants of SRP (Secure Remote Password) as supplied in RFC 5054 Appendix A.
            </summary>
            <remarks>
            This implementation of SRP uses SHA-512 as the performance difference between
            SHA1 and SHA-512 is negligible.
            </remarks>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpConstants.Kb2">
            <summary>
            H(N) xor H(g)
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpConstants.s_groupParameters">
            <summary>
            Contains the standard N, g, k parameters depending on the bit size
            as specified in RFC 5054 Appendix A.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpConstants.Lookup(SnapDB.Security.Authentication.SrpStrength)">
            <summary>
            Looks up the valid precomputed constants for SRP given the specified bit strength.
            </summary>
            <param name="strength">The bit strength to lookup.</param>
            <returns>The SRP constants for the specified strength.</returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpConstants.Xor(System.Byte[],System.Byte[])">
            <summary>
            Computes the XOR of the supplied parameters
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpConstants.ComputeHash(System.Byte[][])">
            <summary>
            Computes the hash of all of the supplied parameters.
            </summary>
            <param name="words">The byte arrays to be hashed.</param>
            <returns>The computed SHA-512 hash as a byte array.</returns>
        </member>
        <member name="T:SnapDB.Security.Authentication.SrpServer">
            <summary>
            Provides simple password based authentication that uses Secure Remote Password.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpServer.Users">
            <summary>
            Contains the user credentials database
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpServer.#ctor">
            <summary>
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpServer.AuthenticateAsServer(System.IO.Stream,System.Byte[])">
            <summary>
            Requests that the provided stream be authenticated.
            </summary>
            <param name="stream">The input stream used for communication.</param>
            <param name="additionalChallenge">
            Additional data to include in the challenge. If using SSL certificates,
            adding the thumbprint to the challenge will allow detecting man in the middle attacks.
            </param>
            <returns>A <see cref="T:SnapDB.Security.Authentication.SrpServerSession"/> representing the authenticated server session, or null if authentication fails.</returns>
        </member>
        <member name="T:SnapDB.Security.Authentication.SrpServerSession">
            <summary>
            Provides simple password based authentication that uses Secure Remote Password.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpServerSession.SessionSecret">
            <summary>
            The session secret that is used to generate keys.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpServerSession.#ctor(SnapDB.Security.Authentication.SrpUserCredential)">
            <summary>
            Creates a new <see cref="T:SnapDB.Security.Authentication.SrpServerSession"/> that will authenticate a stream.
            </summary>
            <param name="user">The user that will be authenticated.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpServerSession.TryAuthenticate(System.IO.Stream,System.Byte[])">
            <summary>
            Attempts to authenticate the provided stream.
            </summary>
            <param name="stream">the stream to authenticate</param>
            <param name="additionalChallenge">Any additional challenge bytes.</param>
            <returns>True if successful, false otherwise</returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpServerSession.TryLoadTicket(System.Byte[],SnapDB.Security.Authentication.SrpUserCredential,System.Byte[]@)">
            <summary>
            Attempts to load the session resume ticket.
            </summary>
            <param name="ticket">The serialized data for the key</param>
            <param name="user">The user's credentials so the proper encryption key can be used</param>
            <param name="sessionSecret">the session secret decoded if successful. null otherwise</param>
            <returns>
            True if the ticket is authentic
            </returns>
        </member>
        <member name="T:SnapDB.Security.Authentication.SrpStrength">
            <summary>
            Specifies the bit strength of the SRP algorithm.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpStrength.Bits1024">
            <summary>
            Bit strength takes 1x (approximately 20ms on a 3.4Ghz PC) to secure the channel.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpStrength.Bits1536">
            <summary>
            Bit strength takes 3x to secure channel.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpStrength.Bits2048">
            <summary>
            Bit strength takes 6.5x to secure channel.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpStrength.Bits3072">
            <summary>
            Bit strength takes 21x to secure channel.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpStrength.Bits4096">
            <summary>
            Bit strength takes 47x to secure channel.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpStrength.Bits6144">
            <summary>
            Bit strength takes 154x to secure channel.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpStrength.Bits8192">
            <summary>
            Bit strength takes 366x to secure channel.
            </summary>
        </member>
        <member name="T:SnapDB.Security.Authentication.SrpUserCredential">
            <summary>
            An individual server side user credential.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.Iterations">
            <summary>
            The number of SHA512 iterations using PBKDF2.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.Salt">
            <summary>
            The salt used to compute the password bytes (x).
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.ServerEncryptionKey">
            <summary>
            Session Resume Encryption Key.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.ServerHmacKey">
            <summary>
            Session Resume HMAC key.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.ServerKeyName">
            <summary>
            Session Resume Key Name.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.SrpStrength">
            <summary>
            The bit strength of the SRP algorithm.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.UserName">
            <summary>
            The normalized name of the user.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.UserNameBytes">
            <summary>
            Username data in bytes.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.Verification">
            <summary>
            The Srp server verification bytes. (Computed as g^x % N)
            </summary>
        </member>
        <member name="F:SnapDB.Security.Authentication.SrpUserCredential.VerificationInteger">
            <summary>
            <see cref="F:SnapDB.Security.Authentication.SrpUserCredential.Verification"/> as a <see cref="T:Org.BouncyCastle.Math.BigInteger"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpUserCredential.#ctor(System.String,System.Byte[],System.Byte[],System.Int32,SnapDB.Security.Authentication.SrpStrength)">
            <summary>
            Creates user credentials.
            </summary>
            <param name="username">The username associated with the user.</param>
            <param name="verification">The user's password verification value.</param>
            <param name="salt">The salt value used for password hashing.</param>
            <param name="iterations">The number of iterations used in the password hashing process.</param>
            <param name="srpStrength">The strength of the SRP protocol.</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpUserCredential.#ctor(System.String,System.String,SnapDB.Security.Authentication.SrpStrength,System.Int32,System.Int32)">
            <summary>
            Creates a user credential from the provided data.
            </summary>
            <param name="username">The username for the user credential.</param>
            <param name="password">The password for the user credential.</param>
            <param name="strength">The strength of the SRP protocol (default is <see cref="F:SnapDB.Security.Authentication.SrpStrength.Bits1024"/>).</param>
            <param name="saltSize">The size of the salt in bytes (default is 32 bytes).</param>
            <param name="iterations">The number of iterations for password hashing (default is 4000).</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpUserCredential.Save">
            <summary>
            Saves the current state or data of the object to a persistent storage or file.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpUserCredential.Load">
            <summary>
            Loads the object's state or data from a persistent storage or file.
            </summary>
        </member>
        <member name="T:SnapDB.Security.Authentication.SrpUserCredentials">
            <summary>
            Provides simple password based authentication that uses Secure Remote Password.
            </summary>
            <remarks>
            It is safe to store the user's credential on the server. This is a zero knowledge
            password proof, meaning if this database is compromised, a brute force attack
            is the only way to reveal the password.
            </remarks>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpUserCredentials.Lookup(System.String)">
            <summary>
            Looks up the username from the database.
            </summary>
            <param name="username">The username to look up.</param>
            <returns>
            The <see cref="T:SnapDB.Security.Authentication.SrpUserCredential"/> object associated with the specified username, or <c>null</c> if not found.
            </returns>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpUserCredentials.AddUser(System.String,System.String,SnapDB.Security.Authentication.SrpStrength,System.Int32,System.Int32)">
            <summary>
            Adds the specified user to the credentials database.
            </summary>
            <param name="username">The user's chosen name to add to the database.</param>
            <param name="password">The user's chosen password to add to the database.</param>
            <param name="strength">The strength rating of the password.</param>
            <param name="saltSize">The size of salt to be used for password hashing (default is 32).</param>
            <param name="iterations">How many iterations used for password hashing (default is 4000).</param>
        </member>
        <member name="M:SnapDB.Security.Authentication.SrpUserCredentials.AddUser(System.String,System.Byte[],System.Byte[],System.Int32,SnapDB.Security.Authentication.SrpStrength)">
            <summary>
            Adds the specified user to the credential database.
            </summary>
            <param name="username">The username of the new user.</param>
            <param name="verifier">The SRP verifier value associated with the user.</param>
            <param name="passwordSalt">The salt value used for password hashing.</param>
            <param name="iterations">The number of iterations used for password hashing.</param>
            <param name="strength">The strength of the SRP protocol.</param>
        </member>
        <member name="T:SnapDB.Security.BouncyCastle.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Security.BouncyCastle"/> namespace organizes all SnapDB library functionality related to SRP protocols.
            </summary>
        </member>
        <member name="T:SnapDB.Security.GenerateCertificate">
            <summary>
            Generates <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/>s.
            </summary>
        </member>
        <member name="M:SnapDB.Security.GenerateCertificate.OpenCertificate(System.String,System.String)">
            <summary>
            Opens a certificate, loading the private key of the PFX file.
            </summary>
            <param name="fileName">The path to the X.509 certificate file.</param>
            <param name="password">The password to decrypt the private key (if encrypted).</param>
            <returns>
            An <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/> object representing the certificate loaded from the file.
            </returns>
        </member>
        <member name="M:SnapDB.Security.GenerateCertificate.CreateSelfSignedCertificate(System.String,System.DateTime,System.DateTime,System.Int32,System.Int32,System.String,System.String)">
            <summary>
            Creates new certificate with the specified attributes and saves it to a file.
            </summary>
            <param name="subjectDirName">The distinguished name for the subject.</param>
            <param name="startDate">The validity start date of the certificate.</param>
            <param name="endDate">The validity end date of the certificate.</param>
            <param name="signatureBits">The number of bits for the signature algorithm.</param>
            <param name="keyStrength">The key strength for generating public/private key pairs.</param>
            <param name="password">The password to protect the private key in the PKCS#12 file.</param>
            <param name="fileName">The name of the PKCS#12 file to save the certificate.</param>
        </member>
        <member name="M:SnapDB.Security.GenerateCertificate.CreateSelfSignedCertificate(System.String,System.Int32,System.Int32)">
            <summary>
            Creates a self signed certificate that can be used in SSL communications.
            </summary>
            <param name="subjectDirName">A valid DirName formatted string. Example: CN=ServerName</param>
            <param name="signatureBits">Bit strength of signature algorithm. Supported Lengths are 160,256, and 384 </param>
            <param name="keyStrength">RSA key strength. Typically a multiple of 1024.</param>
            <returns>
            An <see cref="T:System.Security.Cryptography.X509Certificates.X509Certificate2"/> object representing the self-signed certificate.
            </returns>
        </member>
        <member name="T:SnapDB.Security.Hash">
            <summary>
            Provides utility methods for hashing data using various hash algorithms.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Hash.Compute(Org.BouncyCastle.Crypto.IDigest,System.Byte[])">
            <summary>
            Computes a hash of the specified data using the given hash algorithm.
            </summary>
            <param name="hash">The hash algorithm to use.</param>
            <param name="data">The data to hash.</param>
            <returns>The computed hash as a byte array.</returns>
        </member>
        <member name="T:SnapDB.Security.Hash`1">
            <summary>
            Provides utility methods for hashing data using a specific hash algorithm of type <typeparamref name="T"/>.
            </summary>
            <typeparam name="T">The type of hash algorithm to use, which must implement the IDigest interface and have a default constructor.</typeparam>
        </member>
        <member name="M:SnapDB.Security.Hash`1.Compute(System.Byte[])">
            <summary>
            Computes a hash of the specified data using the specified hash algorithm of type <typeparamref name="T"/>.
            </summary>
            <param name="data">The data to hash.</param>
            <returns>The computed hash as a byte array.</returns>
        </member>
        <member name="T:SnapDB.Security.HashMethod">
            <summary>
            The hash and hmac method that will be used for authentication protocols.
            </summary>
        </member>
        <member name="F:SnapDB.Security.HashMethod.Sha1">
            <summary>
            Uses Hash and HMAC Sha1
            </summary>
        </member>
        <member name="F:SnapDB.Security.HashMethod.Sha256">
            <summary>
            Uses Hash and HMAC Sha2-256
            </summary>
        </member>
        <member name="F:SnapDB.Security.HashMethod.Sha384">
            <summary>
            Uses Hash and HMAC Sha2-384
            </summary>
        </member>
        <member name="F:SnapDB.Security.HashMethod.Sha512">
            <summary>
            Uses Hash and HMAC Sha2-512
            </summary>
        </member>
        <member name="T:SnapDB.Security.Hmac">
            <summary>
            Provides utility methods for computing Hash-based Message Authentication Code (HMAC) values using various hash algorithms.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Hmac.Compute(Org.BouncyCastle.Crypto.IDigest,System.Byte[],System.Byte[])">
            <summary>
            Computes an HMAC using the specified hash algorithm and key for the entire input data.
            </summary>
            <param name="hash">The hash algorithm to use for the HMAC.</param>
            <param name="key">The secret key for the HMAC computation.</param>
            <param name="data">The input data to compute the HMAC over.</param>
            <returns>The computed HMAC as a byte array.</returns>
        </member>
        <member name="M:SnapDB.Security.Hmac.Compute(Org.BouncyCastle.Crypto.IDigest,System.Byte[],System.Byte[],System.Int32,System.Int32)">
            <summary>
            Computes an HMAC using the specified hash algorithm and key for the entire input data.
            </summary>
            <param name="hash">The hash algorithm to use for the HMAC.</param>
            <param name="key">The secret key for the HMAC computation.</param>
            <param name="data">The input data to compute the HMAC over.</param>
            <param name="position">The starting position in the data array.</param>
            <param name="length">The length of data to use for HMAC computation.</param>
            <returns>The computed HMAC as a byte array.</returns>
        </member>
        <member name="T:SnapDB.Security.Hmac`1">
            <summary>
            Provides utility methods for computing Hash-based Message Authentication Code (HMAC) values using a specific hash algorithm of type <typeparamref name="T"/>.
            </summary>
            <typeparam name="T">The type of hash algorithm to use, which must implement the IDigest interface and have a default constructor.</typeparam>
        </member>
        <member name="M:SnapDB.Security.Hmac`1.Compute(System.Byte[],System.Byte[])">
            <summary>
            Computes an HMAC using the specified secret key for the entire input data.
            </summary>
            <param name="key">The secret key for the HMAC computation.</param>
            <param name="data">The input data to compute the HMAC over.</param>
            <returns>The computed HMAC as a byte array.</returns>
        </member>
        <member name="M:SnapDB.Security.Hmac`1.Compute(System.Byte[],System.Byte[],System.Int32,System.Int32)">
            <summary>
            Computes an HMAC using the specified secret key, input data, and a specified range within the input data.
            </summary>
            <param name="key">The secret key for the HMAC computation.</param>
            <param name="data">The input data to compute the HMAC over.</param>
            <param name="position">The starting position in the input data.</param>
            <param name="length">The length of the input data to include in the HMAC computation.</param>
            <returns>The computed HMAC as a byte array.</returns>
        </member>
        <member name="T:SnapDB.Security.DigestExtensions">
            <summary>
            Helper extensions for <see cref="T:Org.BouncyCastle.Crypto.IDigest"/> types.
            </summary>
        </member>
        <member name="M:SnapDB.Security.DigestExtensions.ComputeHash(Org.BouncyCastle.Crypto.IDigest,System.Byte[],System.Byte[],System.Byte[],System.Byte[])">
            <summary>
            Computes the hash of the supplied words.
            </summary>
            <param name="hash">The hash algorithm to use for computing the hash.</param>
            <param name="word1">The first byte array to include in the hash computation.</param>
            <param name="word2">The second byte array to include in the hash computation.</param>
            <param name="word3">The third byte array to include in the hash computation.</param>
            <param name="word4">The fourth byte array to include in the hash computation.</param>
            <returns>
            A byte array containing the computed hash.
            </returns>
        </member>
        <member name="M:SnapDB.Security.DigestExtensions.ComputeHash(Org.BouncyCastle.Crypto.IDigest,System.Byte[],System.Byte[],System.Byte[])">
            <summary>
            Computes the hash of the supplied words.
            </summary>
            <param name="hash">The hash algorithm to use for computing the hash.</param>
            <param name="word1">The first byte array to include in the hash computation.</param>
            <param name="word2">The second byte array to include in the hash computation.</param>
            <param name="word3">The third byte array to include in the hash computation.</param>
            <returns>
            A byte array containing the computed hash.
            </returns>
        </member>
        <member name="M:SnapDB.Security.DigestExtensions.ComputeHash(Org.BouncyCastle.Crypto.IDigest,System.Byte[],System.Byte[])">
            <summary>
            Computes the hash of the supplied words.
            </summary>
            <param name="hash">The hash algorithm to use for computing the hash.</param>
            <param name="word1">The first byte array to include in the hash computation.</param>
            <param name="word2">The second byte array to include in the hash computation.</param>
            <returns>
            A byte array containing the computed hash.
            </returns>
        </member>
        <member name="T:SnapDB.Security.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Security"/> namespace organizes all the common SnapDB library functionality related to security features,
            e.g., the <see cref="T:SnapDB.Security.HashMethod"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Security.NonceGenerator">
            <summary>
            Used to generate Nonce values.
            </summary>
        </member>
        <member name="F:SnapDB.Security.NonceGenerator.m_nonceNumber">
            <summary>
            A sequence number to ensure that duplicates are never created
            </summary>
        </member>
        <member name="F:SnapDB.Security.NonceGenerator.m_startingNonce">
            <summary>
            The secure random number that serves as the basis for this nonce
            </summary>
        </member>
        <member name="M:SnapDB.Security.NonceGenerator.#ctor(System.Int32)">
            <summary>
            Creates a nonce generator of the specified length.
            </summary>
            <param name="length">the size of each nonce. Must be at least 16 bytes.</param>
        </member>
        <member name="M:SnapDB.Security.NonceGenerator.Next">
            <summary>
            Gets the next nonce value.
            </summary>
            <returns>The next nonce value.</returns>
        </member>
        <member name="T:SnapDB.Security.PbdkfCredentials">
            <summary>
            Computes the password credentials.
            Optimized so duplicate calls will not recompute the password unless necessary.
            </summary>
        </member>
        <member name="F:SnapDB.Security.PbdkfCredentials.SaltedPassword">
            <summary>
            The password value
            </summary>
        </member>
        <member name="F:SnapDB.Security.PbdkfCredentials.UsernameBytes">
            <summary>
            The UTF8 encoded normalized username.
            </summary>
        </member>
        <member name="M:SnapDB.Security.PbdkfCredentials.TryUpdate(SnapDB.Security.HashMethod,System.Byte[],System.Int32)">
            <summary>
            Updates the <see cref="F:SnapDB.Security.PbdkfCredentials.SaltedPassword"/>. Returns False if the password value did not change.
            </summary>
            <param name="hashMethod"></param>
            <param name="salt"></param>
            <param name="iterations"></param>
            <returns>Returns <c>false</c> if the password value did not change.</returns>
        </member>
        <member name="T:SnapDB.Security.HmacMethod">
            <summary>
            A series of HMAC implementations supported by .NET.
            </summary>
        </member>
        <member name="F:SnapDB.Security.HmacMethod.Md5">
            <summary>
            Produces a 128-bit hash value.
            </summary>
        </member>
        <member name="F:SnapDB.Security.HmacMethod.TripleDes">
            <summary>
            Symmetric-key block cipher.
            </summary>
        </member>
        <member name="F:SnapDB.Security.HmacMethod.Ripemd160">
            <summary>
            160-bit has represented as a 40-digit hexadecimal.
            </summary>
        </member>
        <member name="F:SnapDB.Security.HmacMethod.Sha1">
            <summary>
            Hash function producing a 160-bit hash value as a 40-digit hexadecimal.
            </summary>
        </member>
        <member name="F:SnapDB.Security.HmacMethod.Sha256">
            <summary>
            Computed with eight 32-bit words.
            </summary>
        </member>
        <member name="F:SnapDB.Security.HmacMethod.Sha384">
            <summary>
            Truncated version of SHA-512.
            </summary>
        </member>
        <member name="F:SnapDB.Security.HmacMethod.Sha512">
            <summary>
            Computed with eight 64-bit words.
            </summary>
        </member>
        <member name="T:SnapDB.Security.Pbkdf2">
            <summary>
            Implements a generic PBKDF2 <see cref="T:System.Security.Cryptography.DeriveBytes"/> that will work from a custom cryptographic transform.
            <see cref="T:System.Security.Cryptography.Rfc2898DeriveBytes"/> only implements a SHA-1 underlying hash function.
            </summary>
            <remarks>
            It is recommended to use one of the HMAC-SHA implementations unless you understand the implications
            of using something differently.
            </remarks>
        </member>
        <member name="F:SnapDB.Security.Pbkdf2.m_blockNumber">
            <summary>
            The block number, which starts at 1, and increases every time that a new block must be computed.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Pbkdf2.m_results">
            <summary>
            A temporary location to store the hashed bytes.
            </summary>
        </member>
        <member name="F:SnapDB.Security.Pbkdf2.m_saltWithBlock">
            <summary>
            Contains the salt, along with an extra 4 bytes at the end to place the block number
            </summary>
        </member>
        <member name="M:SnapDB.Security.Pbkdf2.#ctor(SnapDB.Security.HmacMethod,System.Byte[],System.Byte[],System.Int32)">
            <summary>
            Implements a <see cref="T:SnapDB.Security.Pbkdf2"/> algorthim with a user definded MAC method.
            </summary>
            <param name="method">the HMAC method to use.</param>
            <param name="password">the password to use</param>
            <param name="salt">the salt. recommended to be at least 64-bit</param>
            <param name="iterations">the number of iterations. Recommended to be at least 1000</param>
        </member>
        <member name="M:SnapDB.Security.Pbkdf2.Dispose(System.Boolean)">
            <summary>
            When overridden in a derived class, releases the unmanaged resources used by the <see cref="T:System.Security.Cryptography.DeriveBytes"/> class and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Security.Pbkdf2.Reset">
            <summary>
            When overridden in a derived class, resets the state of the operation.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Pbkdf2.GetBytes(System.Int32)">
            <summary>
            Generates an array of random bytes with the specified length.
            </summary>
            <param name="length">The desired length of the generated byte array.</param>
            <returns>An array of random bytes with the specified length.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when <paramref name="length"/> is not a positive value.</exception>
        </member>
        <member name="M:SnapDB.Security.Pbkdf2.ComputeNextBlock">
            <summary>
            Computes the next block of crypto bytes.
            </summary>
        </member>
        <member name="M:SnapDB.Security.Pbkdf2.ComputeSaltedPassword(SnapDB.Security.HmacMethod,System.Byte[],System.Byte[],System.Int32,System.Int32)">
            <summary>
            Implements a <see cref="T:SnapDB.Security.Pbkdf2"/> algorthim with a user definded MAC method.
            </summary>
            <param name="method">the HMAC method to use.</param>
            <param name="password">the password to use</param>
            <param name="salt">the salt. Must be at least 64-bit</param>
            <param name="iterations">the number of iterations. Must be at least 1000.</param>
            <param name="length">the number of bytes to return</param>
            <returns>
            A salted password based on the specified length.
            </returns>
        </member>
        <member name="T:SnapDB.Security.ReadonlyByteArray">
            <summary>
            Provides a way for byte arrays to be added to sorted lists and dictionaries.
            </summary>
        </member>
        <member name="M:SnapDB.Security.ReadonlyByteArray.#ctor(System.Byte[])">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Security.ReadonlyByteArray"/> struct with the specified byte array.
            </summary>
            <param name="array">The byte array to wrap.</param>
        </member>
        <member name="M:SnapDB.Security.ReadonlyByteArray.GetHashCode">
            <summary>
            Returns the hash code for this <see cref="T:SnapDB.Security.ReadonlyByteArray"/> instance.
            </summary>
            <returns>The hash code.</returns>
        </member>
        <member name="M:SnapDB.Security.ReadonlyByteArray.Equals(System.Object)">
            <summary>
            Determines whether this <see cref="T:SnapDB.Security.ReadonlyByteArray"/> instance is equal to another object.
            </summary>
            <param name="other">The object to compare with this instance.</param>
            <returns><c>true</c> if the objects are equal; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Security.ReadonlyByteArray.CompareTo(SnapDB.Security.ReadonlyByteArray)">
            <summary>
            Compares this <see cref="T:SnapDB.Security.ReadonlyByteArray"/> instance with another instance for ordering.
            </summary>
            <param name="other">The <see cref="T:SnapDB.Security.ReadonlyByteArray"/> to compare with this instance.</param>
            <returns>
            A negative value if this instance is less than <paramref name="other"/>,
            a positive value if this instance is greater than <paramref name="other"/>,
            or zero if they are equal.
            </returns>
        </member>
        <member name="M:SnapDB.Security.ReadonlyByteArray.Equals(SnapDB.Security.ReadonlyByteArray)">
            <summary>
            Determines whether this <see cref="T:SnapDB.Security.ReadonlyByteArray"/> instance is equal to another instance.
            </summary>
            <param name="other">The <see cref="T:SnapDB.Security.ReadonlyByteArray"/> to compare with this instance.</param>
            <returns><c>true</c> if the instances are equal; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:SnapDB.Security.SaltGenerator">
            <summary>
            Generates salt values.
            </summary>
        </member>
        <member name="M:SnapDB.Security.SaltGenerator.Create(System.Int32)">
            <summary>
            Creates a salt of the specified length.
            </summary>
            <param name="length">the number of bytes to make the salt.</param>
            <returns>
            Returns a salt of the supplied length.
            </returns>
        </member>
        <member name="T:SnapDB.Security.SecureStream">
            <summary>
            Provides utility methods for secure communication using SSL/TLS streams.
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStream.ComputeCertificateChallenge(System.Boolean,System.Net.Security.SslStream)">
            <summary>
            Computes a certificate challenge for secure communication.
            </summary>
            <param name="isServer">Indicates whether the calling entity is the server.</param>
            <param name="stream">The SSL stream used for communication.</param>
            <returns>
            A byte array representing the computed certificate challenge.
            If <paramref name="isServer"/> is <c>true</c>, the challenge combines the remote and local certificate hashes.
            If <paramref name="isServer"/> is <c>false</c>, the challenge combines the local and remote certificate hashes.
            </returns>
        </member>
        <member name="T:SnapDB.Security.SecureStreamClientBase">
            <summary>
            Creates a secure stream that connects to a server.
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientBase.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Security.SecureStreamClientBase"/> class.
            This constructor is protected and internally accessible within the component's message class.
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientBase.TryAuthenticate(System.IO.Stream,System.Boolean,System.IO.Stream@)">
            <summary>
            Attempts to authenticate the supplied network stream, optionally using SSL/TLS encryption.
            </summary>
            <param name="stream">The stream to authenticate.</param>
            <param name="useSsl"><c>true</c> if SSL is to be used; otherwise, <c>false</c>.</param>
            <param name="secureStream">
            When successful, contains the authenticated and optionally encrypted stream.</param>
            <returns>
            <c>true</c> if authentication is successful and if SSL/TLS encryption is used and successful; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientBase.TryAuthenticate(System.IO.Stream,System.Boolean)">
            <summary>
            Attempts to authenticate the provided stream, disposing the secure stream upon completion.
            </summary>
            <param name="stream">The stream to authenticate.</param>
            <param name="useSsl">Gets if SSL will be used to authenticate.</param>
            <returns><c>true</c> if successful, <c>false</c> otherwise.</returns>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientBase.Authenticate(System.IO.Stream,System.Boolean)">
            <summary>
            Authenticates the supplied stream. Returns the secure stream.
            </summary>
            <param name="stream">The stream to authenticate.</param>
            <param name="useSsl">
            Indicates whether to use SSL for secure communication. Defaults to true if not specified.
            </param>
            <returns>
            A secure stream if authentication succeeds; otherwise, an exception is thrown.
            </returns>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientBase.InternalTryAuthenticate(System.IO.Stream,System.Byte[])">
            <summary>
            Attempts to authenticate a network stream with the provided certificate signatures.
            </summary>
            <param name="stream">The network stream to authenticate.</param>
            <param name="certSignatures">The certificate signatures used for authentication.</param>
            <returns><c>true</c> if authentication was successful; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:SnapDB.Security.SecureStreamClientDefault">
            <summary>
            Creates a secure stream that connects via the default credential
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientDefault.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.Security.SecureStreamClientIntegratedSecurity"/>
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientDefault.InternalTryAuthenticate(System.IO.Stream,System.Byte[])">
            <summary>
            Authenticates with the remote server.
            </summary>
            <param name="stream">The stream for authentication.</param>
            <param name="certSignatures">The certificate signatures to use for authentication.</param>
            <returns>
            True if authentication succeeds; otherwise, false.
            </returns>
        </member>
        <member name="T:SnapDB.Security.SecureStreamClientIntegratedSecurity">
            <summary>
            Creates a secure stream that connects to a server using windows Integrated Security.
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientIntegratedSecurity.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.Security.SecureStreamClientIntegratedSecurity"/>
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientIntegratedSecurity.#ctor(System.String,System.String,System.String)">
            <summary>
            Creates a new <see cref="T:SnapDB.Security.SecureStreamClientIntegratedSecurity"/>.
            </summary>
            <param name="username">The username for authentication.</param>
            <param name="password">The password for authentication.</param>
            <param name="domain">The domain for authentication (if applicable).</param>
        </member>
        <member name="M:SnapDB.Security.SecureStreamClientIntegratedSecurity.InternalTryAuthenticate(System.IO.Stream,System.Byte[])">
            <summary>
            Authenticates with the remote server.
            </summary>
            <param name="stream">The stream for authentication.</param>
            <param name="certSignatures">The certificate signatures to use for authentication.</param>
            <returns>
            True if authentication succeeds; otherwise, false.
            </returns>
        </member>
        <member name="T:SnapDB.Security.SecureStreamServerCertificate">
            <summary>
            Since SecureStreamServer is a generic type,
            we will store the static key here instead.
            </summary>
        </member>
        <member name="F:SnapDB.Security.SecureStreamServerCertificate.TempCertificate">
            <summary>
            A RSA-1024 SHA-256 certificate. It takes about 250ms to generate this certificate.
            </summary>
        </member>
        <member name="T:SnapDB.Security.SecureStreamServer`1">
            <summary>
            A server host that manages a secure stream connection.
            This class is thread safe and can negotiate streams simultaneous.
            </summary>
            <typeparam name="T">The type of user token used for authentication.</typeparam>
        </member>
        <member name="F:SnapDB.Security.SecureStreamServer`1.TicketExpireTimeMinutes">
            <summary>
            Tickets expire every 10 minutes.
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStreamServer`1.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.Security.SecureStreamServer`1"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Security.SecureStreamServer`1.Users">
            <summary>
            Gets all authenticated users.
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStreamServer`1.InvalidateAllTickets">
            <summary>
            This will change the encryption keys used to create resume tickets, thus
            invalidating all existing tickets.
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecureStreamServer`1.SetDefaultUser(System.Boolean,`0)">
            <summary>
            Adds the default user credential if the user logs in with no credentials specified.
            </summary>
            <param name="enabled">Indicates whether or not the default user credential has been enabled.</param>
            <param name="userToken">The user token type.</param>
        </member>
        <member name="M:SnapDB.Security.SecureStreamServer`1.AddUserIntegratedSecurity(System.String,`0)">
            <summary>
            Adds the specified user
            </summary>
            <param name="username">the username to add</param>
            <param name="userToken">The token data associated with this user</param>
        </member>
        <member name="M:SnapDB.Security.SecureStreamServer`1.TryAuthenticateAsServer(System.IO.Stream,System.Boolean,System.IO.Stream@,`0@)">
            <summary>
            Attempts to authenticate the stream
            </summary>
            <param name="stream">the base stream to authenticate</param>
            <param name="useSsl">gets if ssl should be used</param>
            <param name="secureStream">the secure stream that is valid if the function returns true.</param>
            <param name="token">the user's token associated with what user created the stream</param>
            <returns><c>true</c> if successful, <c>false</c> otherwise</returns>
        </member>
        <member name="T:SnapDB.Security.SecurityExtensions">
            <summary>
            Provides extension methods for enhancing security-related operations.
            </summary>
        </member>
        <member name="M:SnapDB.Security.SecurityExtensions.SecureEquals(System.Byte[],System.Byte[])">
            <summary>
            Compares two byte arrays securely, preventing timing attacks.
            </summary>
            <param name="a">The first byte array to compare.</param>
            <param name="b">The second byte array to compare.</param>
            <returns><c>true</c> if both arrays are equal; otherwise, false.</returns>
            <remarks>
            If a or b is <c>null</c>, function returns immediately with a <c>false</c>.
            Certain cryptographic attacks can occur by comparing the amount of time it
            takes to do certain operations. Comparing two byte arrays is one example.
            Therefore this method should take constant time to do a comparison of two arrays.
            </remarks>
        </member>
        <member name="M:SnapDB.Security.SecurityExtensions.SecureEquals(System.Byte[],System.Byte[],System.Int32,System.Int32)">
            <summary>
            Does a time constant comparison of the two byte arrays.
            </summary>
            <param name="a">The first byte array to compare.</param>
            <param name="b">The second byte array to compare.</param>
            <param name="bPosition">The start position of the <paramref name="b"/> byte array.</param>
            <param name="bLength">The length of the portion to compare in <paramref name="b"/>.</param>
            <returns><c>true</c> if both arrays are equal; otherwise, <c>false</c>.</returns>
            <remarks>
            If a or b is <c>null</c>, function returns immediately with a <c>false</c>.
            Certain cryptographic attacks can occur by comparing the amount of time it
            takes to do certain operations. Comparing two byte arrays is one example.
            Therefore this method should take constant time to do a comparison of two arrays.
            </remarks>
        </member>
        <member name="M:SnapDB.Security.SecurityExtensions.SecureEquals(System.Guid,System.Guid)">
            <summary>
            Does a secure time constant comparison of the two GUIDs.
            </summary>
            <param name="a">The first GUID to compare.</param>
            <param name="b">The second GUID to compare.</param>
            <returns><c>true</c> if both GUIDs are equal; otherwise, false.</returns>
            <remarks>
            Certain cryptographic attacks can occur by comparing the amount of time it
            takes to do certain operations. Comparing two byte arrays is one example.
            Therefore this method should take constant time to do a comparison of two GUIDs.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.UnionTreeStream`2">
            <summary>
            Represents a partial union of multiple tree streams of the same TKey and TValue types.
            </summary>
            <typeparam name="TKey">The key type.</typeparam>
            <typeparam name="TValue">The value type.</typeparam>
        </member>
        <member name="T:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream">
            <summary>
            A wrapper around a <see cref="T:SnapDB.Snap.TreeStream`2"/> that primarily supports peeking
            a value from a stream.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream.#ctor(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Creates a new instance of the <see cref="T:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream"/> class.
            </summary>
            <param name="stream">The underlying tree stream.</param>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream.Dispose">
            <summary>
            Disposes of the <see cref="T:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream"/> and its underlying stream.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream.EnsureCache">
            <summary>
            Ensures that the cache value is valid.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream.ReadToCache">
            <summary>
            Reads the next value of the stream and updates the cache.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream.Read(`0,`1)">
            <summary>
            Reads the next available value into the provided key and value.
            </summary>
            <param name="key">The key to store the read key.</param>
            <param name="value">The value to store the read value.</param>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream.WriteToCache(`0,`1)">
            <summary>
            Writes the provided key and value to the cache.
            </summary>
            <param name="key">The key to write to the cache.</param>
            <param name="value">The value to write to the cache.</param>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.#ctor(System.Collections.Generic.IEnumerable{SnapDB.Snap.TreeStream{`0,`1}},System.Boolean)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.UnionTreeStream`2"/> class.
            </summary>
            <param name="streams">An enumerable collection of tree streams to be partially unioned.</param>
            <param name="ownsStream">A flag indicating whether this instance should own the input streams.</param>
        </member>
        <member name="P:SnapDB.Snap.UnionTreeStream`2.IsAlwaysSequential">
            <summary>
            Gets a value indicating whether this stream is always sequential.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.UnionTreeStream`2.NeverContainsDuplicates">
            <summary>
            Gets a value indicating that this stream never contains duplicate values.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.UnionTreeStream`2"/> and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.ReadNext(`0,`1)">
            <summary>
            Reads the next key-value pair from the stream.
            </summary>
            <param name="key">The key to read.</param>
            <param name="value">The value to read.</param>
            <returns><see langword="true"/> if a key-value pair was successfully read; otherwise, <see langword="false"/>.</returns>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.CompareStreams(SnapDB.Snap.UnionTreeStream{`0,`1}.BufferedTreeStream,SnapDB.Snap.UnionTreeStream{`0,`1}.BufferedTreeStream)">
            <summary>
            Compares two <see cref="T:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream"/> instances based on their cache keys.
            </summary>
            <param name="item1">The first <see cref="T:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream"/> to compare.</param>
            <param name="item2">The second <see cref="T:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream"/> to compare.</param>
            <returns>
            0 if both <paramref name="item1"/> and <paramref name="item2"/> are not valid;
            1 if only <paramref name="item1"/> is valid and <paramref name="item2"/> is not valid;
            -1 if only <paramref name="item2"/> is valid and <paramref name="item1"/> is not valid;
            The result of comparing the cache keys of <paramref name="item1"/> and <paramref name="item2"/> otherwise.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.RemoveDuplicatesIfExists">
            <summary>
            Checks the first 2 Archive Streams for a duplicate entry. If one exists, then removes the duplicate and resorts the list.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.RemoveDuplicatesFromList">
            <summary>
            Call this function when the same point exists in multiple archive files. It will
            read past the duplicate point in all other archive files and then resort the tables.
            Assums that the archiveStream's cached value is current.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.SetReadWhileUpperBoundsValue">
            <summary>
            Sets the read while upper bounds value.
            Which is the lesser of
            The first point in the adjacent table or
            The end of the current seek window.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.UnionTreeStream`2.UnionTreeStreamSortHelper">
            <summary>
            Provides basic sorting methods that assist in UnionKeyValueStream's speed.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.UnionTreeStream`2.UnionTreeStreamSortHelper.Items">
            <summary>
            All of the items in this list.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.UnionTreeStreamSortHelper.#ctor(System.Collections.Generic.IEnumerable{SnapDB.Snap.UnionTreeStream{`0,`1}.BufferedTreeStream})">
            <summary>
            Creates a new custom sort helper and presorts the list.
            </summary>
            <param name="items">The items to initialize the helper with.</param>
        </member>
        <member name="P:SnapDB.Snap.UnionTreeStream`2.UnionTreeStreamSortHelper.Item(System.Int32)">
            <summary>
            Indexer to get the specified item out of the list
            </summary>
            <param name="index">The index of the item to retrieve.</param>
            <returns>The <see cref="T:SnapDB.Snap.UnionTreeStream`2.BufferedTreeStream"/> at the specified index.</returns>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.UnionTreeStreamSortHelper.Sort">
            <summary>
            Resorts the entire list. Uses an insertion sort routine
            </summary>
        </member>
        <member name="M:SnapDB.Snap.UnionTreeStream`2.UnionTreeStreamSortHelper.SortAssumingIncreased(System.Int32)">
            <summary>
            Resorts only the item at the specified index assuming:
            1) all other items are properly sorted
            2) this item's value increased.
            </summary>
            <param name="index">The index of the item to resort.</param>
        </member>
        <member name="T:SnapDB.Snap.Collection.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Collection"/> namespace contains the <see cref="T:SnapDB.Snap.Collection.SortedPointBuffer`2"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Collection.SortedPointBuffer`2">
            <summary>
            A temporary point buffer that is designed to write unsorted data to it,
            then read the data back out sorted.
            </summary>
            <typeparam name="TKey">The key type to use.</typeparam>
            <typeparam name="TValue">The value type to use.</typeparam>
            <remarks>
            This class is not thread safe.
            </remarks>
        </member>
        <member name="F:SnapDB.Snap.Collection.SortedPointBuffer`2.m_capacity">
            <summary>
            The maximum number of items that can be stored in this buffer.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Collection.SortedPointBuffer`2.m_dequeueIndex">
            <summary>
            The index of the next point to dequeue.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Collection.SortedPointBuffer`2.m_enqueueIndex">
            <summary>
            The index of the next point to write.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Collection.SortedPointBuffer`2.m_isReadingMode">
            <summary>
            Gets if the stream is currently reading.
            The stream was not designed to be read from and written to at the same time. So the mode must be changed.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Collection.SortedPointBuffer`2.m_keyData">
            <summary>
            A block of data for storing the keys.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Collection.SortedPointBuffer`2.m_sortingBlocks1">
            <summary>
            Contains indexes of sorted data.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Collection.SortedPointBuffer`2.m_sortingBlocks2">
            <summary>
            Contains indexes of sorted data.
            </summary>
            <remarks>
            Two blocks are needed to do a merge sort since
            this class uses indexes instead of actually moving
            the raw values.
            </remarks>
        </member>
        <member name="F:SnapDB.Snap.Collection.SortedPointBuffer`2.m_valueData">
            <summary>
            A block of data for storing the values.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Collection.SortedPointBuffer`2.#ctor(System.Int32,System.Boolean)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Collection.SortedPointBuffer`2"/> that can hold only exactly the specified <paramref name="capacity"/>.
            </summary>
            <param name="capacity">The maximum number of items that can be stored in this class.</param>
            <param name="removeDuplicates">specifies if the point buffer should remove duplicate key values upon reading.</param>
        </member>
        <member name="M:SnapDB.Snap.Collection.SortedPointBuffer`2.#ctor(System.Int32,System.Action{`0,`0})">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Collection.SortedPointBuffer`2"/> that can hold only exactly the specified <paramref name="capacity"/>
            using the specified duplicate handler.
            </summary>
            <param name="capacity">The maximum number of items that can be stored in this class.</param>
            <param name="duplicateHandler">Function that will handle encountered duplicates.</param>
        </member>
        <member name="P:SnapDB.Snap.Collection.SortedPointBuffer`2.Count">
            <summary>
            Gets the current number of items in the buffer
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Collection.SortedPointBuffer`2.IsAlwaysSequential">
            <summary>
            Gets if the stream is always in sequential order. Do not return <c>true</c> unless it is guaranteed that
            the data read from this stream is sequential.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Collection.SortedPointBuffer`2.IsEmpty">
            <summary>
            Gets if this buffer is empty
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Collection.SortedPointBuffer`2.IsFull">
            <summary>
            Gets if no more items can be added to this list.
            List must be cleared before any more items can be added.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Collection.SortedPointBuffer`2.IsReadingMode">
            <summary>
            Gets or sets the current mode of the point buffer.
            </summary>
            <remarks>
            This class is not designed to be read from and written to at the same time.
            This is because sorting must occur right before reading from this stream.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Collection.SortedPointBuffer`2.NeverContainsDuplicates">
            <summary>
            Gets if the stream will never return duplicate keys. Do not return <c>true</c> unless it is guaranteed that
            the data read from this stream will never contain duplicates.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Collection.SortedPointBuffer`2.TryEnqueue(`0,`1)">
            <summary>
            Attempts to enqueue the provided item to the list.
            </summary>
            <param name="key">The key to add.</param>
            <param name="value">The value to add.</param>
            <returns><c>true</c> if the item was successfully enqueued; <c>false</c> if the queue is full.</returns>
            <exception cref="T:System.InvalidOperationException">Occurs if <see cref="P:SnapDB.Snap.Collection.SortedPointBuffer`2.IsReadingMode"/> is set to <c>true</c></exception>
        </member>
        <member name="M:SnapDB.Snap.Collection.SortedPointBuffer`2.ReadNext(`0,`1)">
            <summary>
            Advances the stream to the next value.
            </summary>
            <param name="key">An output parameter to receive the key.</param>
            <param name="value">An output parameter to receive the value.</param>
            <returns>
              <c>true</c> if a key-value pair was successfully read; otherwise, <c>false</c> if the list is empty.
            </returns>
            <exception cref="T:System.InvalidOperationException">Thrown if the list is not in ReadMode.</exception>
        </member>
        <member name="M:SnapDB.Snap.Collection.SortedPointBuffer`2.EndOfStreamReached">
            <summary>
            Overrides the default behavior that disposes the stream when the end of the stream has been encountered.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Collection.SortedPointBuffer`2.ReadSorted(System.Int32,`0,`1)">
            <summary>
            Reads the specified item from the sorted list.
            </summary>
            <param name="index">The index of the item to read. Note: Bounds checking is not done.</param>
            <param name="key">The key to write to.</param>
            <param name="value">The value to write to.</param>
        </member>
        <member name="M:SnapDB.Snap.Collection.SortedPointBuffer`2.Clear">
            <summary>
            Clears all of the items in this list.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Collection.SortedPointBuffer`2.Sort">
            <summary>
            Does a sort of the data. using a merge sort like algorithm.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Collection.SortedPointBuffer`2.SortLevel(System.Int32*,System.Int32*,`0[],System.Int32,System.Int32)">
            <summary>
            Does a merge sort on the provided level.
            </summary>
            <param name="srcIndex">Where the current indexes exist.</param>
            <param name="dstIndex">Where the final indexes should go.</param>
            <param name="ptr">The data.</param>
            <param name="count">The number of entries at this level.</param>
            <param name="stride">The number of compares per level.</param>
        </member>
        <member name="T:SnapDB.Snap.CustomSortHelper`1">
            <summary>
            A helper class for custom sorting of items.
            </summary>
            <typeparam name="T">The type of items to be sorted.</typeparam>
        </member>
        <member name="F:SnapDB.Snap.CustomSortHelper`1.Items">
            <summary>
            All of the items in this list.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.CustomSortHelper`1.#ctor(System.Collections.Generic.IEnumerable{`0},System.Func{`0,`0,System.Boolean})">
            <summary>
            Creates a new custom sort helper and presorts the list.
            </summary>
            <param name="items">The collection of items to be sorted.</param>
            <param name="isLessThan">A function that determines if one item is less than another.</param>
        </member>
        <member name="P:SnapDB.Snap.CustomSortHelper`1.Item(System.Int32)">
            <summary>
            Indexer to get or set the specified item in the list.
            </summary>
            <param name="index">The index of the item to access.</param>
            <returns>The item at the specified index.</returns>
        </member>
        <member name="M:SnapDB.Snap.CustomSortHelper`1.Sort">
            <summary>
            Resorts the entire list using an insertion sort routine.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.CustomSortHelper`1.SortAssumingIncreased(System.Int32)">
            <summary>
            Resorts only the item at the specified index assuming:
            1) all other items are properly sorted
            2) this item's value increased.
            </summary>
            <param name="index">The index of the item to resort.</param>
        </member>
        <member name="T:SnapDB.Snap.Definitions.IndividualEncodingDefinitionBase">
            <summary>
            The class that is used to construct an encoding method.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Definitions.IndividualEncodingDefinitionBase.Method">
            <summary>
            The encoding method as specified by a <see cref="T:System.Guid"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Definitions.IndividualEncodingDefinitionBase.TypeIfNotGeneric">
            <summary>
            The type supported by the encoded method. Can be <c>null</c> if the encoding is not type specific.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Definitions.IndividualEncodingDefinitionBase.Create``1">
            <summary>
            Constructs a new class based on this encoding method.
            </summary>
            <typeparam name="T">The type of this base class.</typeparam>
            <returns>
            The encoding method.
            </returns>
        </member>
        <member name="T:SnapDB.Snap.Definitions.MatchFilterDefinitionBase">
            <summary>
            Has the ability to create a filter based on the key and the value.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Definitions.MatchFilterDefinitionBase.FilterType">
            <summary>
            The filter GUID.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Definitions.MatchFilterDefinitionBase.Create``2(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Determines if a key-value pair is contained in the filter.
            </summary>
            <typeparam name="TKey">The key for this match filter base.</typeparam>
            <typeparam name="TValue">The value associated with the key for this match filter base.</typeparam>
            <param name="stream">The value to check.</param>
            <returns>An instance of <see cref="T:SnapDB.Snap.Filters.MatchFilterBase`2"/>.</returns>
        </member>
        <member name="T:SnapDB.Snap.Definitions.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Definitions"/> namespace organizes all common SnapDB library functionality related to definitions,
            e.g., the <see cref="T:SnapDB.Snap.Definitions.IndividualEncodingDefinitionBase"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Definitions.PairEncodingDefinitionBase">
            <summary>
            The class that is used to construct an encoding method.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Definitions.PairEncodingDefinitionBase.KeyTypeIfNotGeneric">
            <summary>
            The key type supported by the encoded method. Can be <c>null</c> if the encoding is not type specific.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Definitions.PairEncodingDefinitionBase.Method">
            <summary>
            The encoding method that defines this class.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Definitions.PairEncodingDefinitionBase.ValueTypeIfNotGeneric">
            <summary>
            The value type supported by the encoded method. Can be <c>null</c> if the encoding is not type specific.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Definitions.PairEncodingDefinitionBase.Create``2">
            <summary>
            Constructs a new class based on this encoding method.
            </summary>
            <typeparam name="TKey">The key for this encoding method.</typeparam>
            <typeparam name="TValue">The value for this encoding method.</typeparam>
            <returns>The encoding method.</returns>
        </member>
        <member name="T:SnapDB.Snap.Definitions.SeekFilterDefinitionBase">
            <summary>
            Has the ability to create a filter based on the key and the value.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Definitions.SeekFilterDefinitionBase.FilterType">
            <summary>
            The filter GUID.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Definitions.SeekFilterDefinitionBase.Create``1(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Determines if a key-value is contained in the filter.
            </summary>
            <typeparam name="TKey">The type of keys in the seek filter.</typeparam>
            <param name="stream">The binary stream to create the seek filter for.</param>
            <returns>An instance of <see cref="T:SnapDB.Snap.Filters.SeekFilterBase`1"/>.</returns>
        </member>
        <member name="T:SnapDB.Snap.DistinctTreeStream`2">
            <summary>
            Represents a stream that filters out duplicate entries from a base <see cref="T:SnapDB.Snap.TreeStream`2"/>.
            </summary>
            <typeparam name="TKey">The type of keys in the stream.</typeparam>
            <typeparam name="TValue">The type of values in the stream.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.DistinctTreeStream`2.#ctor(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.DistinctTreeStream`2"/> class.
            </summary>
            <param name="baseStream">The base stream to filter duplicates from.</param>
            <exception cref="T:System.ArgumentException">Thrown if the <paramref name="baseStream"/> is not sequential.</exception>
        </member>
        <member name="P:SnapDB.Snap.DistinctTreeStream`2.IsAlwaysSequential">
            <summary>
            Gets a value indicating whether this stream is always sequential, which is true for this implementation.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.DistinctTreeStream`2.NeverContainsDuplicates">
            <summary>
            Gets a value indicating that this stream never contains duplicate items, which is true for this implementation.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.DistinctTreeStream`2.Dispose(System.Boolean)">
            <summary>
            Disposes of managed resources used by this stream.
            </summary>
            <param name="disposing">True if disposing of managed resources, false if finalizing.</param>
        </member>
        <member name="M:SnapDB.Snap.DistinctTreeStream`2.EndOfStreamReached">
            <summary>
            Callback method invoked when the end of the stream is reached.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.DistinctTreeStream`2.ReadNext(`0,`1)">
            <summary>
            Reads the next key-value pair from the stream and handles duplicates.
            </summary>
            <param name="key">The key to read into.</param>
            <param name="value">The value to read into.</param>
            <returns><c>true</c> if a key-value pair was successfully read, <c>false</c> if the end of the stream is reached.</returns>
        </member>
        <member name="T:SnapDB.Snap.EncodingDefinition">
            <summary>
            Represents an encoding definition used for compression of data. Provides methods for creating and comparing encoding definitions.
            </summary>
            <remarks>
            Serializes as:
            If Combined KeyValue encoding
            byte type = 1
            Guid KeyValueEncodingMethod
            If Individual Compression
            byte type = 2
            Guid KeyEncodingMethod
            Guid ValueEncodingMethod
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.#ctor(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.EncodingDefinition"/> class from a binary stream.
            </summary>
            <param name="stream">The stream to load the encoding definition from.</param>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.#ctor(System.IO.Stream)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.EncodingDefinition"/> class from a regular stream.
            </summary>
            <param name="stream">The stream to load the encoding definition from.</param>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.#ctor(System.Guid)">
            <summary>
            Specifies a combined key/value encoding method with the provided <see cref="T:System.Guid"/>.
            </summary>
            <param name="keyValueEncoding">A <see cref="T:System.Guid"/> that is the encoding method that is registered with the system.</param>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.#ctor(System.Guid,System.Guid)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.EncodingDefinition"/> class with separate key and value encoding methods.
            </summary>
            <param name="keyEncoding">The encoding method for keys.</param>
            <param name="valueEncoding">The encoding method for values.</param>
        </member>
        <member name="P:SnapDB.Snap.EncodingDefinition.IsFixedSizeEncoding">
            <summary>
            Gets if the encoding method is the special fixed size encoding method.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.EncodingDefinition.IsKeyValueEncoded">
            <summary>
            Gets if the compression method compresses the key and value as a unit.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.EncodingDefinition.KeyEncodingMethod">
            <summary>
            Gets the compression method for keys when <see cref="P:SnapDB.Snap.EncodingDefinition.IsKeyValueEncoded"/> is false.
            Throws an exception otherwise.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.EncodingDefinition.KeyValueEncodingMethod">
            <summary>
            Gets the combined compression method when <see cref="P:SnapDB.Snap.EncodingDefinition.IsKeyValueEncoded"/> is <c>true</c>.
            Throws an exception otherwise.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.EncodingDefinition.ValueEncodingMethod">
            <summary>
            Gets the compression method if <see cref="P:SnapDB.Snap.EncodingDefinition.IsKeyValueEncoded"/> is <c>false</c>.
            Throw an exception otherwise.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Serializes the <see cref="T:SnapDB.Snap.EncodingDefinition"/> to a binary stream.
            </summary>
            <param name="stream">The stream to write the encoding definition to.</param>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.Save(System.IO.Stream)">
            <summary>
            Serializes the <see cref="T:SnapDB.Snap.EncodingDefinition"/> to a regular stream.
            </summary>
            <param name="stream">The stream to write the encoding definition to.</param>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.Equals(System.Object)">
            <summary>
            Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
            </summary>
            <returns>
            <c>true</c> if the specified object is equal to the current object; otherwise, <c>false</c>.
            </returns>
            <param name="obj">The object to compare with the current object.</param>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.GetHashCode">
            <summary>
            Serves as a hash function for a particular type.
            </summary>
            <returns>
            A hash code for the current <see cref="T:System.Object"/>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.CompareTo(System.Object)">
            <summary>
            Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object.
            </summary>
            <returns>
            A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes <paramref name="obj"/> in the sort order. Zero This instance occurs in the same position in the sort order as <paramref name="obj"/>. Greater than zero This instance follows <paramref name="obj"/> in the sort order.
            </returns>
            <param name="obj">An object to compare with this instance. </param>
            <exception cref="T:System.ArgumentException"><paramref name="obj"/> is not the same type as this instance. </exception>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.CompareTo(SnapDB.Snap.EncodingDefinition)">
            <summary>
            Compares the current object with another object of the same type.
            </summary>
            <returns>
            A value that indicates the relative order of the objects being compared. The return value has the following meanings: Value Meaning Less than zero This object is less than the <paramref name="other"/> parameter.Zero This object is equal to <paramref name="other"/>. Greater than zero This object is greater than <paramref name="other"/>.
            </returns>
            <param name="other">An object to compare with this object.</param>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.Equals(SnapDB.Snap.EncodingDefinition)">
            <summary>
            Indicates whether the current object is equal to another object of the same type.
            </summary>
            <returns>
            true if the current object is equal to the <paramref name="other"/> parameter; otherwise, false.
            </returns>
            <param name="other">An object to compare with this object.</param>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.op_Inequality(SnapDB.Snap.EncodingDefinition,SnapDB.Snap.EncodingDefinition)">
            <summary>
            Checks for inequality between two encoding definitions.
            </summary>
            <param name="a">The first encoding definition to compare.</param>
            <param name="b">The second encoding definition to compare against.</param>
            <returns><c>true</c> if inequal; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.EncodingDefinition.op_Equality(SnapDB.Snap.EncodingDefinition,SnapDB.Snap.EncodingDefinition)">
            <summary>
            Checks for equality between two encoding definitions.
            </summary>
            <param name="a">The first encoding definition to compare.</param>
            <param name="b">The second encoding definition to compare against.</param>
            <returns><c>true</c> if equal; otherwise, <c>false</c>.</returns>
        </member>
        <member name="F:SnapDB.Snap.EncodingDefinition.FixedSizeCombinedEncoding">
            <summary>
            Represents a FixedSize combined encoding method.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.EncodingDefinition.FixedSizeIndividualEncoding">
            <summary>
            Represents a FixedSize combined encoding method made up of two individual fixed size IDs.
            Functionally implemented the same as <see cref="F:SnapDB.Snap.EncodingDefinition.FixedSizeCombinedEncoding"/>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.EncodingDefinition.FixedSizeIndividualGuid">
            <summary>
            The Guid associated with the individual encoding method of a FixedSize
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Encoding.EncodingLibrary">
            <summary>
            Contains all of the fundamental encoding methods. Types implementing <see cref="T:SnapDB.Snap.SnapTypeBase`1"/>
            will automatically register when passed to one of the child methods.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.EncodingLibrary.GetEncodingMethod``1(System.Guid)">
            <summary>
            Gets the single encoding method if it exists in the database.
            </summary>
            <typeparam name="T">The type parameter specifying the data type.</typeparam>
            <param name="encodingMethod">The encoding method identifier.</param>
            <returns>
            An instance of the <see cref="T:SnapDB.Snap.Encoding.IndividualEncodingBase`1"/> representing the encoding method.
            </returns>
            <exception cref="T:System.Exception">Thrown if the type is not registered.</exception>
        </member>
        <member name="M:SnapDB.Snap.Encoding.EncodingLibrary.GetEncodingMethod``2(SnapDB.Snap.EncodingDefinition)">
            <summary>
            Gets the Double encoding method
            </summary>
            <typeparam name="TKey">The type parameter specifying the key data type.</typeparam>
            <typeparam name="TValue">The type parameter specifying the value data type.</typeparam>
            <param name="encodingMethod">The encoding method identifier.</param>
            <returns>
            An instance of the <see cref="T:SnapDB.Snap.Encoding.PairEncodingBase`2"/> representing the encoding method.
            </returns>
            <exception cref="T:System.Exception">Thrown if the type is not registered.</exception>
        </member>
        <member name="M:SnapDB.Snap.Encoding.EncodingLibrary.Register(SnapDB.Snap.Definitions.IndividualEncodingDefinitionBase)">
            <summary>
            Registers the provided type in the encoding library.
            </summary>
            <param name="encoding">the encoding to register</param>
        </member>
        <member name="M:SnapDB.Snap.Encoding.EncodingLibrary.Register(SnapDB.Snap.Definitions.PairEncodingDefinitionBase)">
            <summary>
            Registers the provided type in the encoding library.
            </summary>
            <param name="encoding">the encoding to register</param>
        </member>
        <member name="T:SnapDB.Snap.Encoding.IndividualEncodingBase`1">
            <summary>
            Represents the base class for individual value encoding strategies that allow compressing of a single value.
            </summary>
            <typeparam name="T">The type of values to encode.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.ContainsEndOfStreamSymbol">
            <summary>
            Gets a value indicating whether this encoding contains an end-of-stream symbol.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.EndOfStreamSymbol">
            <summary>
            Gets the byte value representing the end-of-stream symbol if applicable.
            May throw NotSupportedException if <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.ContainsEndOfStreamSymbol"/> is <c>false</c>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.MaxCompressionSize">
            <summary>
            Gets the maximum amount of space required by the compression algorithm.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.UsesPreviousValue">
            <summary>
            Gets a value indicating whether this encoding strategy uses the previous value for encoding.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingBase`1.Encode(SnapDB.IO.BinaryStreamBase,`0,`0)">
            <summary>
            Encodes <paramref name="value"/> and writes it to the specified binary <paramref name="stream"/>.
            </summary>
            <param name="stream">The binary stream to write to.</param>
            <param name="prevValue">The previous value for encoding reference, if required by <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.UsesPreviousValue"/>; otherwise, <c>null</c>.</param>
            <param name="value">The value to encode.</param>
            <returns>The number of bytes necessary to encode this key-value pair.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingBase`1.Decode(SnapDB.IO.BinaryStreamBase,`0,`0,System.Boolean@)">
            <summary>
            Decodes <paramref name="value"/> from the specified binary <paramref name="stream"/>.
            </summary>
            <param name="stream">The binary stream to read from.</param>
            <param name="prevValue">The previous value used for decoding reference, if required by <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.UsesPreviousValue"/>; otherwise, <c>null</c>.</param>
            <param name="value">The decoded value.</param>
            <param name="isEndOfStream">Indicates whether the end of the stream has been reached by returning <c>true</c>. If there is no end-of-stream symbol, always returns <c>false</c>.</param>
            <returns>The number of bytes necessary to decode the next key-value pair.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingBase`1.Encode(System.Byte*,`0,`0)">
            <summary>
            Encodes <paramref name="value"/> and writes it to the specified memory <paramref name="stream"/>, returning the encoded data length.
            </summary>
            <param name="stream">A pointer to the memory stream.</param>
            <param name="prevValue">The previous value for encoding reference, if required by <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.UsesPreviousValue"/>; otherwise, <c>null</c>.</param>
            <param name="value">The value to encode.</param>
            <returns>The length required to encode the key-value pair in bytes.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingBase`1.Decode(System.Byte*,`0,`0,System.Boolean@)">
            <summary>
            Decodes <paramref name="value"/> from the specified memory <paramref name="stream"/>, returning the decoded data length.
            </summary>
            <param name="stream">A pointer to the memory stream.</param>
            <param name="prevValue">The previous value used for decoding reference, if required by <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.UsesPreviousValue"/>; otherwise, <c>null</c>.</param>
            <param name="value">The decoded value.</param>
            <param name="isEndOfStream">Indicates whether the end of the stream has been reached by returning <c>true</c>. If there is not end-of-stream symbol, always returns <c>false</c>.</param>
            <returns>The number of bytes necessary to decode the next key-value pair.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingBase`1.Clone">
            <summary>
            Clones this encoding method.
            </summary>
            <returns>A clone.</returns>
        </member>
        <member name="T:SnapDB.Snap.Encoding.IndividualEncodingDictionary">
            <summary>
            A helper class for all of the specific implementations that lookup encoding methods.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingDictionary.#ctor">
            <summary>
            Creates a new EncodingDictionary
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingDictionary.Register(SnapDB.Snap.Definitions.IndividualEncodingDefinitionBase)">
            <summary>
            Registers this type
            </summary>
            <param name="encoding"></param>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingDictionary.TryGetEncodingMethod``1(System.Guid,SnapDB.Snap.Definitions.IndividualEncodingDefinitionBase@)">
            <summary>
            Attempts to get the specified encoding method from the dictionary. Will register the types if never registered before.
            </summary>
            <typeparam name="TTree">The value</typeparam>
            <param name="encodingMethod">the encoding method</param>
            <param name="encoding">an output if the encoding method exists.</param>
            <returns>True if the encoding value was found, false otherwise.</returns>
        </member>
        <member name="T:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1">
            <summary>
            A single encoding method for a fixed size encoding
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.#ctor">
            <summary>
            Creates a fixed size encoding class for a single key.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.ContainsEndOfStreamSymbol">
            <summary>
            Gets if the stream supports a symbol that
            represents that the end of the stream has been encountered.
            </summary>
            <remarks>
            An example of a symbol would be the byte code 0xFF.
            In this case, if the first byte of the
            word is 0xFF, the encoding has specifically
            designated this as the end of the stream. Therefore, calls to
            Decompress will result in an end of stream exception.
            Failing to reserve a code as the end of stream will mean that
            streaming points will include its own symbol to represent the end of the
            stream, taking 1 extra byte per point encoded.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.EndOfStreamSymbol">
            <summary>
            The byte code to use as the end of stream symbol.
            May throw NotSupportedException if <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.ContainsEndOfStreamSymbol"/> is false.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.MaxCompressionSize">
            <summary>
            Gets the maximum amount of space that is required for the compression algorithm. This
            prevents lower levels from having overflows on the underlying streams. It is critical
            that this value be correct. Error on the side of too large of a value as a value
            too small will corrupt data and be next to impossible to track down the point of corruption
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.UsesPreviousValue">
            <summary>
            Gets if the previous value will need to be presented to the encoding algorithms to
            property encode the next sample. Returning false will cause nulls to be passed
            in a parameters to the encoding.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.Encode(SnapDB.IO.BinaryStreamBase,`0,`0)">
            <summary>
            Encodes <paramref name="value"/> to the provided <paramref name="stream"/>.
            </summary>
            <param name="stream">where to write the data</param>
            <param name="prevValue">the previous value if required by <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.UsesPreviousValue"/>. Otherwise null.</param>
            <param name="value">the value to encode</param>
            <returns>the number of bytes necessary to encode this key/value.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.Decode(SnapDB.IO.BinaryStreamBase,`0,`0,System.Boolean@)">
            <summary>
            Decodes <paramref name="value"/> from the provided <paramref name="stream"/>.
            </summary>
            <param name="stream">where to read the data</param>
            <param name="prevValue">the previous value if required by <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.UsesPreviousValue"/>. Otherwise null.</param>
            <param name="value">the place to store the decoded value</param>
            <param name="isEndOfStream">outputs true if the end of the stream symbol is detected. Not all encoding methods have an end of stream symbol and therefore will always return false.</param>
            <returns>the number of bytes necessary to decode the next key/value.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.Decode(System.Byte*,`0,`0,System.Boolean@)">
            <summary>
            Decodes <paramref name="value"/> from the provided <paramref name="stream"/>.
            </summary>
            <param name="stream">where to read the data</param>
            <param name="prevValue">the previous value if required by <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.UsesPreviousValue"/>. Otherwise null.</param>
            <param name="value">the place to store the decoded value</param>
            <param name="isEndOfStream">outputs true if the end of the stream symbol is detected. Not all encoding methods have an end of stream symbol and therefore will always return false.</param>
            <returns>the number of bytes necessary to decode the next key/value.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.Encode(System.Byte*,`0,`0)">
            <summary>
            Encodes <paramref name="value"/> to the provided <paramref name="stream"/>.
            </summary>
            <param name="stream">where to write the data</param>
            <param name="prevValue">the previous value if required by <see cref="P:SnapDB.Snap.Encoding.IndividualEncodingBase`1.UsesPreviousValue"/>. Otherwise null.</param>
            <param name="value">the value to encode</param>
            <returns>the number of bytes necessary to encode this key/value.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.IndividualEncodingFixedSize`1.Clone">
            <summary>
            Clones this encoding method.
            </summary>
            <returns>A clone</returns>
        </member>
        <member name="T:SnapDB.Snap.Encoding.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Encoding"/> namespace organizes all common SnapDB library functionality related to encoding protocol,
            e.g., the <see cref="T:SnapDB.Snap.Encoding.EncodingLibrary"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Encoding.PairEncodingBase`2">
            <summary>
            Represents an encoding method that takes both a key and a value to encode.
            </summary>
            <typeparam name="TKey">The key type.</typeparam>
            <typeparam name="TValue">The value type.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingBase`2.ContainsEndOfStreamSymbol">
            <summary>
            Gets if the stream supports a symbol that
            represents that the end of the stream has been encountered.
            </summary>
            <remarks>
            An example of a symbol would be the byte code 0xFF.
            In this case, if the first byte of the
            word is 0xFF, the encoding has specifically
            designated this as the end of the stream. Therefore, calls to
            Decompress will result in an end of stream exception.
            Failing to reserve a code as the end of stream will mean that
            streaming points will include its own symbol to represent the end of the
            stream, taking 1 extra byte per point encoded.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingBase`2.EncodingMethod">
            <summary>
            Gets the encoding method that this class implements.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingBase`2.EndOfStreamSymbol">
            <summary>
            The byte code to use as the end of stream symbol.
            May throw NotSupportedException if <see cref="P:SnapDB.Snap.Encoding.PairEncodingBase`2.ContainsEndOfStreamSymbol"/> is <c>false</c>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingBase`2.MaxCompressionSize">
            <summary>
            Gets the maximum amount of space that is required for the compression algorithm. This
            prevents lower levels from having overflows on the underlying streams. It is critical
            that this value be correct. Error on the side of too large of a value as a value
            too small will corrupt data and be next to impossible to track down the point of corruption
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingBase`2.UsesPreviousKey">
            <summary>
            Gets if the previous key will need to be presented to the encoding algorithms to
            property encode the next sample. Returning <c>false</c> will cause nulls to be passed
            in a parameters to the encoding.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingBase`2.UsesPreviousValue">
            <summary>
            Gets if the previous value will need to be presented to the encoding algorithms to
            property encode the next sample. Returning <c>false</c> will cause nulls to be passed
            in a parameters to the encoding.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingBase`2.Encode(System.Byte*,`0,`1,`0,`1)">
            <summary>
            Encodes key-value pairs and writes them to a byte pointer.
            </summary>
            <param name="stream">The byte pointer to which to write encoded data.</param>
            <param name="prevKey">The previously encoded key.</param>
            <param name="prevValue">The previously encoded value.</param>
            <param name="key">The key to be encoded and written.</param>
            <param name="value">The value to be encoded and written.</param>
            <returns>The position of the byte pointer after encoding.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingBase`2.Decode(System.Byte*,`0,`1,`0,`1,System.Boolean@)">
            <summary>
            Decodes data from a byte pointer, producing key-value pairs and indicating whether it's the end of the stream.
            </summary>
            <param name="stream">The byte pointer from which to decode data.</param>
            <param name="prevKey">The previously decoded key.</param>
            <param name="prevValue">The previously decoded value.</param>
            <param name="key">The decoded key.</param>
            <param name="value">The decoded value.</param>
            <param name="isEndOfStream">A boolean indicating whether the end of the stream has been reached.</param>
            <returns>The position of the byte pointer after decoding.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingBase`2.Encode(SnapDB.IO.BinaryStreamBase,`0,`1,`0,`1)">
            <summary>
            Encodes key-value pairs and writes them to a binary stream.
            </summary>
            <param name="stream">The binary stream to which to write encoded data.</param>
            <param name="prevKey">The previously encoded key.</param>
            <param name="prevValue">The previously encoded value.</param>
            <param name="key">The key to be encoded and written.</param>
            <param name="value">The value to be encoded and written.</param>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingBase`2.Decode(SnapDB.IO.BinaryStreamBase,`0,`1,`0,`1,System.Boolean@)">
            <summary>
            Decodes data from a binary stream, producing key-value pairs and indicating whether it's the end of the stream.
            </summary>
            <param name="stream">The binary stream from which to decode data.</param>
            <param name="prevKey">The previously decoded key.</param>
            <param name="prevValue">The previously decoded value.</param>
            <param name="key">The decoded key.</param>
            <param name="value">The decoded value.</param>
            <param name="isEndOfStream">A boolean indicating whether the end of the stream has been reached.</param>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingBase`2.Clone">
            <summary>
            Clones this encoding method.
            </summary>
            <returns>A clone.</returns>
        </member>
        <member name="T:SnapDB.Snap.Encoding.PairEncodingDictionary">
            <summary>
            A helper class for all of the specific implementations that lookup encoding methods.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingDictionary.#ctor">
            <summary>
            Creates a new EncodingDictionary
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingDictionary.Register(SnapDB.Snap.Definitions.PairEncodingDefinitionBase)">
            <summary>
            Registers this type
            </summary>
            <param name="encoding"></param>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingDictionary.TryGetEncodingMethod``2(SnapDB.Snap.EncodingDefinition,SnapDB.Snap.Definitions.PairEncodingDefinitionBase@)">
            <summary>
            Attempts to get the specified encoding method from the dictionary. Will register the types if never registered before.
            </summary>
            <typeparam name="TKey">The key</typeparam>
            <typeparam name="TValue">The value</typeparam>
            <param name="encodingMethod">the encoding method</param>
            <param name="encoding">an output if the encoding method exists.</param>
            <returns>True if the encoding value was found, false otherwise.</returns>
        </member>
        <member name="T:SnapDB.Snap.Encoding.PairEncodingFixedSize`2">
            <summary>
            An encoding method that is fixed in size and calls the native read and write functions of the specified type.
            </summary>
            <typeparam name="TKey">The type to use as the key.</typeparam>
            <typeparam name="TValue">The type to use as the value.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.#ctor">
            <summary>
            Creates a new class.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.ContainsEndOfStreamSymbol">
            <summary>
            Gets if the stream supports a symbol that
            represents that the end of the stream has been encountered.
            </summary>
            <remarks>
            An example of a symbol would be the byte code 0xFF.
            In this case, if the first byte of the
            word is 0xFF, the encoding has specifically
            designated this as the end of the stream. Therefore, calls to
            Decompress will result in an end of stream exception.
            Failing to reserve a code as the end of stream will mean that
            streaming points will include its own symbol to represent the end of the
            stream, taking 1 extra byte per point encoded.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.EncodingMethod">
            <summary>
            Gets the encoding method that this class implements.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.EndOfStreamSymbol">
            <summary>
            The byte code to use as the end of stream symbol.
            May throw NotSupportedException if <see cref="P:SnapDB.Snap.Encoding.PairEncodingBase`2.ContainsEndOfStreamSymbol"/> is <c>false</c>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.MaxCompressionSize">
            <summary>
            Gets the maximum amount of space that is required for the compression algorithm. This
            prevents lower levels from having overflows on the underlying streams. It is critical
            that this value be correct. Error on the side of too large of a value as a value
            too small will corrupt data and be next to impossible to track down the point of corruption.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.UsesPreviousKey">
            <summary>
            Gets if the previous key will need to be presented to the encoding algorithms to
            property encode the next sample. Returning <c>false</c> will cause nulls to be passed
            in a parameters to the encoding.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.UsesPreviousValue">
            <summary>
            Gets if the previous value will need to be presented to the encoding algorithms to
            property encode the next sample. Returning <c>false</c> will cause nulls to be passed
            in a parameters to the encoding.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.Encode(SnapDB.IO.BinaryStreamBase,`0,`1,`0,`1)">
            <summary>
            Encodes key and value and writes them to a binary stream.
            </summary>
            <param name="stream">The binary stream to which to write the encoded key and value.</param>
            <param name="prevKey">The previously encoded key (not used in this method).</param>
            <param name="prevValue">The previously encoded value (not used in this method).</param>
            <param name="key">The key to be encoded and written.</param>
            <param name="value">The value to be encoded and written.</param>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.Decode(SnapDB.IO.BinaryStreamBase,`0,`1,`0,`1,System.Boolean@)">
            <summary>
            Decodes key and value from a binary stream and indicates whether it's the end of the stream.
            </summary>
            <param name="stream">The binary stream from which to decode the key and value.</param>
            <param name="prevKey">The previously decoded key (not used in this method).</param>
            <param name="prevValue">The previously decoded value (not used in this method).</param>
            <param name="key">The decoded key.</param>
            <param name="value">The decoded value.</param>
            <param name="isEndOfStream">A boolean indicating whether the end of the stream has been reached.</param>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.Decode(System.Byte*,`0,`1,`0,`1,System.Boolean@)">
            <summary>
            Decodes key and value from a byte pointer and indicates whether it's the end of the stream.
            </summary>
            <param name="stream">The byte pointer from which to decode the key and value.</param>
            <param name="prevKey">The previously decoded key (not used in this method).</param>
            <param name="prevValue">The previously decoded value (not used in this method).</param>
            <param name="key">The decoded key.</param>
            <param name="value">The decoded value.</param>
            <param name="isEndOfStream">A boolean indicating whether the end of the stream has been reached.</param>
            <returns>The number of bytes consumed from the byte pointer during decoding.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.Encode(System.Byte*,`0,`1,`0,`1)">
            <summary>
            Encodes key and value and writes them to a byte pointer.
            </summary>
            <param name="stream">The byte pointer to which to write the encoded key and value.</param>
            <param name="prevKey">The previously encoded key (not used in this method).</param>
            <param name="prevValue">The previously encoded value (not used in this method).</param>
            <param name="key">The key to be encoded and written.</param>
            <param name="value">The value to be encoded and written.</param>
            <returns>The number of bytes written to the byte pointer during encoding.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingFixedSize`2.Clone">
            <summary>
            Clones this encoding method.
            </summary>
            <returns>A clone.</returns>
        </member>
        <member name="T:SnapDB.Snap.Encoding.PairEncodingGeneric`2">
            <summary>
            Internal class for encoding and decoding pairs of generic key-value types.
            </summary>
            <typeparam name="TKey">The generic type of the keys.</typeparam>
            <typeparam name="TValue">The generic type of the values.</typeparam>
            <seealso cref="T:SnapDB.Snap.Encoding.PairEncodingBase`2"/>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingGeneric`2.#ctor(SnapDB.Snap.EncodingDefinition)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Encoding.PairEncodingGeneric`2"/> class with the specified encoding method.
            </summary>
            <param name="encodingMethod">The encoding method definition used for initialization.</param>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingGeneric`2.ContainsEndOfStreamSymbol">
            <summary>
            Gets if the stream supports a symbol that
            represents that the end of the stream has been encountered.
            </summary>
            <remarks>
            An example of a symbol would be the byte code 0xFF.
            In this case, if the first byte of the
            word is 0xFF, the encoding has specifically
            designated this as the end of the stream. Therefore, calls to
            Decompress will result in an end of stream exception.
            Failing to reserve a code as the end of stream will mean that
            streaming points will include its own symbol to represent the end of the
            stream, taking 1 extra byte per point encoded.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingGeneric`2.EndOfStreamSymbol">
            <summary>
            The byte code to use as the end of stream symbol.
            May throw NotSupportedException if <see cref="P:SnapDB.Snap.Encoding.PairEncodingBase`2.ContainsEndOfStreamSymbol"/> is <c>false</c>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingGeneric`2.MaxCompressionSize">
            <summary>
            Gets the maximum amount of space that is required for the compression algorithm. This
            prevents lower levels from having overflows on the underlying streams. It is critical
            that this value be correct. Error on the side of too large of a value as a value
            too small will corrupt data and be next to impossible to track down the point of corruption
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingGeneric`2.UsesPreviousKey">
            <summary>
            Gets if the previous key will need to be presented to the encoding algorithms to
            property encode the next sample. Returning <c>false</c> will cause nulls to be passed
            in a parameters to the encoding.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Encoding.PairEncodingGeneric`2.UsesPreviousValue">
            <summary>
            Gets if the previous value will need to be presented to the encoding algorithms to
            property encode the next sample. Returning <c>false</c> will cause nulls to be passed
            in a parameters to the encoding.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingGeneric`2.Encode(SnapDB.IO.BinaryStreamBase,`0,`1,`0,`1)">
            <summary>
            Encodes key and value and writes them to a binary stream using the specified encoding methods.
            </summary>
            <param name="stream">The binary stream to which to write the encoded key and value.</param>
            <param name="prevKey">The previously encoded key.</param>
            <param name="prevValue">The previously encoded value.</param>
            <param name="key">The key to be encoded and written.</param>
            <param name="value">The value to be encoded and written.</param>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingGeneric`2.Decode(SnapDB.IO.BinaryStreamBase,`0,`1,`0,`1,System.Boolean@)">
            <summary>
            Decodes key and value from a binary stream using the specified encoding methods and indicates whether it's the end of the stream.
            </summary>
            <param name="stream">The binary stream from which to decode the key and value.</param>
            <param name="prevKey">The previously decoded key.</param>
            <param name="prevValue">The previously decoded value.</param>
            <param name="key">The decoded key.</param>
            <param name="value">The decoded value.</param>
            <param name="isEndOfStream">A boolean indicating whether the end of the stream has been reached.</param>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingGeneric`2.Decode(System.Byte*,`0,`1,`0,`1,System.Boolean@)">
            <summary>
            Decodes key and value from a byte pointer using the specified encoding methods and indicates whether it's the end of the stream.
            </summary>
            <param name="stream">The byte pointer from which to decode the key and value.</param>
            <param name="prevKey">The previously decoded key.</param>
            <param name="prevValue">The previously decoded value.</param>
            <param name="key">The decoded key.</param>
            <param name="value">The decoded value.</param>
            <param name="isEndOfStream">A boolean indicating whether the end of the stream has been reached.</param>
            <returns>The number of bytes consumed from the byte pointer during decoding.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingGeneric`2.Encode(System.Byte*,`0,`1,`0,`1)">
            <summary>
            Encodes key and value and writes them to a byte pointer using the specified encoding methods.
            </summary>
            <param name="stream">The byte pointer to which to write the encoded key and value.</param>
            <param name="prevKey">The previously encoded key.</param>
            <param name="prevValue">The previously encoded value.</param>
            <param name="key">The key to be encoded and written.</param>
            <param name="value">The value to be encoded and written.</param>
            <returns>The number of bytes written to the byte pointer during encoding.</returns>
        </member>
        <member name="M:SnapDB.Snap.Encoding.PairEncodingGeneric`2.Clone">
            <summary>
            Clones this encoding method.
            </summary>
            <returns>A clone.</returns>
        </member>
        <member name="T:SnapDB.Snap.Filters.AccessControlSeekPosition">
            <summary>
            Enumeration of seek positions for any access control seek filter.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Filters.AccessControlSeekPosition.Start">
            <summary>
            Access control check is for key at start of seek.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Filters.AccessControlSeekPosition.End">
            <summary>
            Access control check is for key at end of seek.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Filters.FilterLibrary">
            <summary>
            Contains all of the filters for the <see cref="N:SnapDB.Snap"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.FilterLibrary.Register(SnapDB.Snap.Definitions.MatchFilterDefinitionBase)">
            <summary>
            Registers a match filter definition to the collection of filters.
            </summary>
            <param name="encoding">The match filter definition to be registered.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.FilterLibrary.Register(SnapDB.Snap.Definitions.SeekFilterDefinitionBase)">
            <summary>
            Registers a seek filter definition to the collection of seek filters.
            </summary>
            <param name="encoding">The seek filter definition to be registered.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.FilterLibrary.GetMatchFilter``2(System.Guid,SnapDB.IO.BinaryStreamBase)">
            <summary>
            Retrieves a match filter based on the specified filter GUID and binary stream.
            </summary>
            <typeparam name="TKey">The type of keys used in the match filter.</typeparam>
            <typeparam name="TValue">The type of values used in the match filter.</typeparam>
            <param name="filter">The GUID identifying the desired match filter.</param>
            <param name="stream">The binary stream to associate with the match filter.</param>
            <returns>The match filter instance if found; otherwise, an exception is thrown.</returns>
            <exception cref="T:System.Exception">Thrown when the match filter is not found.</exception>
        </member>
        <member name="M:SnapDB.Snap.Filters.FilterLibrary.GetSeekFilter``1(System.Guid,SnapDB.IO.BinaryStreamBase)">
            <summary>
            Retrieves a seek filter based on the specified filter GUID and binary stream.
            </summary>
            <typeparam name="TKey">The type of keys used in the seek filter.</typeparam>
            <param name="filter">The GUID identifying the desired seek filter.</param>
            <param name="stream">The binary stream to associate with the seek filter.</param>
            <returns>The seek filter instance if found; otherwise, an exception is thrown.</returns>
            <exception cref="T:System.Exception">Thrown when the seek filter is not found.</exception>
        </member>
        <member name="T:SnapDB.Snap.Filters.MatchFilterBase`2">
            <summary>
            Represents some kind of filter that does a match based on the key/value.
            </summary>
            <typeparam name="TKey">The key to match.</typeparam>
            <typeparam name="TValue">The value to match.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.Filters.MatchFilterBase`2.FilterType">
            <summary>
            The filter GUID.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.MatchFilterBase`2.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Serializes the filter to a stream.
            </summary>
            <param name="stream">The stream to write to.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.MatchFilterBase`2.Contains(`0,`1)">
            <summary>
            Determines if a key-value is contained in the filter.
            </summary>
            <param name="key">The key to check.</param>
            <param name="value">The value to check.</param>
            <returns><c>true</c> if the key-value is contained in the filter; otherwise, false.</returns>
        </member>
        <member name="T:SnapDB.Snap.Filters.MatchFilterUniverse`2">
            <summary>
            Represents a match filter that matches any key-value pair (universe filter).
            </summary>
            <typeparam name="TKey">The type of keys to be matched.</typeparam>
            <typeparam name="TValue">The type of values to be matched.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.Filters.MatchFilterUniverse`2.FilterType">
            <summary>
            Gets the unique identifier for this match filter, which is always Guid.Empty for the universe filter.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.MatchFilterUniverse`2.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Saves the universe filter to a binary stream (not supported).
            </summary>
            <param name="stream">The binary stream to which the filter should be saved.</param>
            <exception cref="T:System.NotSupportedException">Thrown when saving the universe filter is not supported.</exception>
        </member>
        <member name="M:SnapDB.Snap.Filters.MatchFilterUniverse`2.Contains(`0,`1)">
            <summary>
            Determines whether the universe filter contains any key-value pair.
            </summary>
            <param name="key">The key to be checked.</param>
            <param name="value">The value to be checked.</param>
            <returns>Always returns true, indicating that the universe filter matches any key-value pair.</returns>
        </member>
        <member name="T:SnapDB.Snap.Filters.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Filters"/> namespace organizes all common SnapDB library functionality related to filter features,
            e.g., the <see cref="T:SnapDB.Snap.Filters.FilterLibrary"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Filters.PointIDMatchFilter">
            <summary>
            Partial class for creating and managing match filters based on point IDs.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilter.CreateFromPointID``2(System.UInt64)">
            <summary>
            Creates a filter from the provided <paramref name="pointId"/>.
            </summary>
            <typeparam name="TKey">The key type of the match filter.</typeparam>
            <typeparam name="TValue">The value type of the match filter.</typeparam>
            <param name="pointId">The point ID to create the filter for.</param>
            <returns>A match filter based on the specified point ID.</returns>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilter.CreateFromList``2(System.Collections.Generic.IEnumerable{System.UInt64})">
            <summary>
            Creates a match filter that filters keys based on a list of point IDs.
            </summary>
            <typeparam name="TKey">The type of keys in the match filter.</typeparam>
            <typeparam name="TValue">The type of values in the match filter.</typeparam>
            <param name="listOfPointIDs">An enumerable collection of point IDs to filter by.</param>
            <returns>A <see cref="T:SnapDB.Snap.Filters.MatchFilterBase`2"/> that filters keys based on the specified list of point IDs.</returns>
            <remarks>
            The match filter includes keys whose point IDs match any of the point IDs in the <paramref name="listOfPointIDs"/> collection.
            The appropriate filter type is chosen based on the maximum point ID value in the list.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilter.CreateFromStream``2(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Creates a match filter from a binary stream.
            </summary>
            <typeparam name="TKey">The type of keys in the match filter.</typeparam>
            <typeparam name="TValue">The type of values in the match filter.</typeparam>
            <param name="stream">The binary stream containing match filter data.</param>
            <returns>
            A <see cref="T:SnapDB.Snap.Filters.MatchFilterBase`2"/> created from the data in the specified <paramref name="stream"/>,
            or <c>null</c> if the stream contains no filter data.
            </returns>
            <exception cref="T:System.Data.VersionNotFoundException">Thrown if the binary stream contains data with an unknown version.</exception>
            <remarks>
            The match filter is deserialized from the binary stream based on its version and data format.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilter.UIntHashSet`2.#ctor(SnapDB.IO.BinaryStreamBase,System.Int32,System.UInt64)">
            <summary>
            Creates a new filter.
            </summary>
            <param name="stream">The stream to load from.</param>
            <param name="pointCount">The number of points in the stream.</param>
            <param name="maxValue">The maximum value stored in the bit array. Cannot be larger than <c>int.MaxValue-1</c>.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilter.UIntHashSet`2.#ctor(System.Collections.Generic.IEnumerable{System.UInt64},System.UInt64)">
            <summary>
            Creates a bit array filter from <paramref name="points"/>.
            </summary>
            <param name="points">The points to use.</param>
            <param name="maxValue">The maximum value stored in the bit array. Cannot be larger than <c>int.MaxValue-1</c>.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilter.ULongHashSet`2.#ctor(SnapDB.IO.BinaryStreamBase,System.Int32,System.UInt64)">
            <summary>
            Creates a new filter backed by a bit array.
            </summary>
            <param name="stream">The stream to load from.</param>
            <param name="pointCount">The number of points in the stream.</param>
            <param name="maxValue">The maximum value stored in the bit array. Cannot be larger than <c>int.MaxValue-1</c>.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilter.ULongHashSet`2.#ctor(System.Collections.Generic.IEnumerable{System.UInt64},System.UInt64)">
            <summary>
            Creates a bit array filter from <paramref name="points"/>.
            </summary>
            <param name="points">The points to use.</param>
            <param name="maxValue">The maximum value stored in the bit array. Cannot be larger than <c>int.MaxValue-1</c>.</param>
        </member>
        <member name="T:SnapDB.Snap.Filters.PointIDMatchFilterDefinition">
            <summary>
            Defines a filter for matching data based on point IDs using a bit array to set <c>true</c> and <c>false</c> values.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.PointIDMatchFilterDefinition.FilterType">
            <summary>
            Gets the unique identifier for this match filter type.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilterDefinition.Create``2(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Creates a match filter from a binary stream.
            </summary>
            <typeparam name="TKey">The key type of the match filter.</typeparam>
            <typeparam name="TValue">The value type of the match filter.</typeparam>
            <param name="stream">The binary stream containing match filter data.</param>
            <returns>A match filter created from the binary stream data.</returns>
        </member>
        <member name="F:SnapDB.Snap.Filters.PointIDMatchFilterDefinition.FilterGuid">
            <summary>
            The globally unique identifier (GUID) for the PointIDMatchFilterDefinition.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Filters.PointIDMatchFilterBitArray">
            <summary>
            A class for implementing a match filter using a <see cref="T:SnapDB.Collections.BitArray"/>.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Filters.PointIDMatchFilterBitArray.BitArrayFilter`2">
            <summary>
            A filter that uses a <see cref="T:SnapDB.Collections.BitArray"/> to set <c>true</c> and <c>false</c> values.
            </summary>
            <typeparam name="TKey">The type of keys in the filter.</typeparam>
            <typeparam name="TValue">The type of values in the filter.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilterBitArray.BitArrayFilter`2.#ctor(SnapDB.IO.BinaryStreamBase,System.Int32,System.UInt64)">
            <summary>
            Creates a new filter backed by a <see cref="T:SnapDB.Collections.BitArray"/>.
            </summary>
            <param name="stream">The stream to load from.</param>
            <param name="pointCount">The number of points in the stream.</param>
            <param name="maxValue">The maximum value stored in the bit array. Cannot be larger than <c>int.MaxValue-1</c>.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilterBitArray.BitArrayFilter`2.#ctor(System.Collections.Generic.IEnumerable{System.UInt64},System.UInt64)">
            <summary>
            Creates a bit array filter from <paramref name="points"/>.
            </summary>
            <param name="points">The points to use.</param>
            <param name="maxValue">The maximum value stored in the bit array. Cannot be larger than <c>int.MaxValue-1</c>.</param>
        </member>
        <member name="P:SnapDB.Snap.Filters.PointIDMatchFilterBitArray.BitArrayFilter`2.FilterType">
            <summary>
            Gets the unique identifier for the filter type associated with the <see cref="T:SnapDB.Snap.Filters.PointIDMatchFilterBitArray.BitArrayFilter`2"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.PointIDMatchFilterBitArray.BitArrayFilter`2.MaxValue">
            <summary>
            Gets or sets the maximum value used in the bit array. Cannot be larger than <see cref="F:System.Int32.MaxValue"/> - 1.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.PointIDMatchFilterBitArray.BitArrayFilter`2.MinValue">
            <summary>
            Gets or sets the minimum value used in the bit array.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilterBitArray.BitArrayFilter`2.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Saves the filter data to the specified <see cref="T:SnapDB.IO.BinaryStreamBase"/>.
            </summary>
            <param name="stream">The stream to which the filter data will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.PointIDMatchFilterBitArray.BitArrayFilter`2.Contains(`0,`1)">
            <summary>
            Determines whether the filter contains the specified key and value.
            </summary>
            <param name="key">The key to check.</param>
            <param name="value">The value to check.</param>
            <returns><c>true</c> if the filter contains the specified key and value; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:SnapDB.Snap.Filters.SeekFilterBase`1">
            <summary>
            Represents a filter that is based on a series of ranges of the key value.
            </summary>
            <typeparam name="TKey">The key to seek.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.Filters.SeekFilterBase`1.EndOfFrame">
            <summary>
            Gets the end of the frame to search [Inclusive].
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.SeekFilterBase`1.EndOfRange">
            <summary>
            Gets the end of the entire range to search [Inclusive].
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.SeekFilterBase`1.FilterType">
            <summary>
            Gets the filter type identifier.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.SeekFilterBase`1.StartOfFrame">
            <summary>
            Gets the start of the frame to search [Inclusive].
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.SeekFilterBase`1.StartOfRange">
            <summary>
            Gets the start of the entire range to search [Inclusive].
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.SeekFilterBase`1.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Serializes the filter to a stream.
            </summary>
            <param name="stream">Target stream for writing.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.SeekFilterBase`1.Reset">
            <summary>
            Resets the iterative nature of the filter.
            </summary>
            <remarks>
            Since a time filter is a set of date ranges, this will reset the frame so a
            call to <see cref="M:SnapDB.Snap.Filters.SeekFilterBase`1.NextWindow"/> will return the first window of the sequence.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.SeekFilterBase`1.NextWindow">
            <summary>
            Gets the next search window.
            </summary>
            <returns><c>true</c>if window exists; otherwise, <c>false</c> if finished.</returns>
        </member>
        <member name="T:SnapDB.Snap.Filters.SeekFilterUniverse`1">
            <summary>
            Represents no filter
            </summary>
            <typeparam name="TKey"></typeparam>
        </member>
        <member name="M:SnapDB.Snap.Filters.SeekFilterUniverse`1.#ctor">
            <summary>
            Initializes a new instance of the SeekFilterUniverse class.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.SeekFilterUniverse`1.FilterType">
            <summary>
            Initializes a new instance of the SeekFilterUniverse class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.SeekFilterUniverse`1.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            This method is not supported in this filter.
            </summary>
            <param name="stream">The binary stream to save to.</param>
            <exception cref="T:System.NotSupportedException">Thrown because saving is not supported for this filter.</exception>
        </member>
        <member name="M:SnapDB.Snap.Filters.SeekFilterUniverse`1.Reset">
            <summary>
            Resets the filter to its initial state.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.SeekFilterUniverse`1.NextWindow">
            <summary>
            Moves to the next window in the filter's data range.
            </summary>
            <returns><c>true</c> if the next window exists; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:SnapDB.Snap.Filters.TimestampPointIDSeekFilter">
            <summary>
            Represents a seek filter for a specific timestamp and point ID.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampPointIDSeekFilter.SeekToKey`1.#ctor(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Creates a filter by reading from the stream.
            </summary>
            <param name="stream">The stream to read from.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampPointIDSeekFilter.SeekToKey`1.#ctor(System.UInt64,System.UInt64)">
            <summary>
            Creates a filter for the key.
            </summary>
            <param name="timestamp">The specific timestamp to find.</param>
            <param name="pointId">The specific point ID to find.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampPointIDSeekFilter.SeekToKey`1.NextWindow">
            <summary>
            Gets the next search window.
            </summary>
            <returns><c>true</c> if window exists, <c>false</c> if finished.</returns>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampPointIDSeekFilter.SeekToKey`1.Reset">
            <summary>
            Resets the iterative nature of the filter.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampPointIDSeekFilter.SeekToKey`1.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Serializes the filter to a stream.
            </summary>
            <param name="stream">The stream to write to.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampPointIDSeekFilter.FindKey``1(System.UInt64,System.UInt64)">
            <summary>
            Creates a new SeekFilterBase instance for finding a key based on a timestamp and point ID.
            </summary>
            <typeparam name="TKey">The type of key that implements TimestampPointIDBase.</typeparam>
            <param name="timestamp">The specific timestamp to seek.</param>
            <param name="pointId">The specific point ID to seek.</param>
            <returns>A SeekFilterBase instance configured to seek the specified timestamp and point ID.</returns>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampPointIDSeekFilter.CreateFromStream``1(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Loads a <see cref="T:SnapDB.Snap.Filters.SeekFilterBase`1"/> from the provided <paramref name="stream"/>.
            </summary>
            <param name="stream">The stream to load the filter from.</param>
            <returns>Seek filter to find specific key.</returns>
        </member>
        <member name="T:SnapDB.Snap.Filters.TimestampPointIDSeekFilterDefinition">
            <summary>
            Represents a seek filter definition for the <see cref="T:SnapDB.Snap.Filters.TimestampPointIDSeekFilter"/> methods.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.TimestampPointIDSeekFilterDefinition.FilterType">
            <summary>
            Gets the filter type Guid for the <see cref="T:SnapDB.Snap.Filters.TimestampPointIDSeekFilterDefinition"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampPointIDSeekFilterDefinition.Create``1(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Creates a new seek filter for the <see cref="T:SnapDB.Snap.Filters.TimestampPointIDSeekFilterDefinition"/>.
            </summary>
            <typeparam name="TKey">Type of key/</typeparam>
            <param name="stream">Binary stream to create seek filter from.</param>
            <returns>New seek filter based on information in binary stream.</returns>
        </member>
        <member name="F:SnapDB.Snap.Filters.TimestampPointIDSeekFilterDefinition.FilterGuid">
            <summary>
            Guid for the <see cref="T:SnapDB.Snap.Filters.TimestampPointIDSeekFilterDefinition"/>.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Filters.TimestampSeekFilter">
            <summary>
            Partial class using a timestamp seek filter for interval ranges.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.CreateFromRange``1(System.DateTime,System.DateTime)">
            <summary>
            Creates a seek filter that filters keys falling within a specified time range.
            </summary>
            <typeparam name="TKey">The type of keys in the seek filter.</typeparam>
            <param name="firstTime">The starting timestamp of the time range query (inclusive).</param>
            <param name="lastTime">The ending timestamp of the time range query (inclusive).</param>
            <returns>A <see cref="T:SnapDB.Snap.Filters.SeekFilterBase`1"/> that filters keys within the specified time range.</returns>
            <remarks>
            The seek filter includes keys with timestamps greater than or equal to <paramref name="firstTime"/> and
            less than or equal to <paramref name="lastTime"/>. It effectively filters keys within the time range.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.CreateFromRange``1(System.UInt64,System.UInt64)">
            <summary>
            Creates a seek filter that filters keys falling within a specified time range.
            </summary>
            <typeparam name="TKey">The type of key that implements SeekFilterBase.</typeparam>
            <param name="firstTime">The starting timestamp of the time range query (inclusive).</param>
            <param name="lastTime">The ending timestamp of the time range query (inclusive).</param>
            <returns>The fixed range for the seek filter to search during.</returns>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.CreateFromIntervalData``1(System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64)">
            <summary>
            Creates a seek filter that filters keys falling within a specified time range.
            </summary>
            <typeparam name="TKey">The type of key that implements SeekFilterBase.</typeparam>
            <param name="firstTime">The starting timestamp of the time range query (inclusive).</param>
            <param name="lastTime">The ending timestamp of the time range query (inclusive).</param>
            <param name="mainInterval">The smallest interval that is exact.</param>
            <param name="subInterval">The interval that will be parsed. Possible to be rounded.</param>
            <param name="tolerance">The width of every window.</param>
            <returns>A key seek filter base that will be able to do this parsing.</returns>
            <remarks>
            Example uses. FirstTime = 1/1/2013. LastTime = 1/2/2013.
            MainInterval = 0.1 seconds. SubInterval = 0.0333333 seconds.
            Tolerance = 0.001 seconds.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.CreateFromIntervalData``1(System.UInt64,System.UInt64,System.UInt64,System.UInt64)">
            <summary>
            Creates a seek filter that filters keys falling within a specified time range.
            </summary>
            <typeparam name="TKey">The type of key that implements SeekFilterBase.</typeparam>
            <param name="firstTime">The starting timestamp of the time range query (inclusive).</param>
            <param name="lastTime">The ending timestamp of the time range query (inclusive).</param>
            <param name="interval">The exact interval.</param>
            <param name="tolerance">The width of every window</param>
            <returns>A key seek filter base that will be able to do this parsing.</returns>
            <remarks>
            Example uses. FirstTime = 1/1/2013. LastTime = 1/2/2013.
            MainInterval = 0.1 seconds. SubInterval = 0.0333333 seconds.
            Tolerance = 0.001 seconds.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.CreateFromIntervalData``1(System.DateTime,System.DateTime,System.TimeSpan,System.TimeSpan,System.TimeSpan)">
            <summary>
            Creates a seek filter that filters keys falling within a specified time range.
            </summary>
            <typeparam name="TKey">The type of key that implements SeekFilterBase.</typeparam>
            <param name="firstTime">The starting timestamp of the time range query (inclusive).</param>
            <param name="lastTime">The ending timestamp of the time range query (inclusive).</param>
            <param name="mainInterval">The smallest interval that is exact.</param>
            <param name="subInterval">The interval that will be parsed. Possible to be rounded.</param>
            <param name="tolerance">The width of every window.</param>
            <returns>A key seek filter base that will be able to do this parsing.</returns>
            <remarks>
            Example uses. FirstTime = 1/1/2013. LastTime = 1/2/2013.
            MainInterval = 0.1 seconds. SubInterval = 0.0333333 seconds.
            Tolerance = 0.001 seconds.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.CreateFromIntervalData``1(System.DateTime,System.DateTime,System.TimeSpan,System.TimeSpan)">
            <summary>
            Creates a seek filter that filters keys falling within a specified time range.
            </summary>
            <typeparam name="TKey">The type of key that implements SeekFilterBase.</typeparam>
            <param name="firstTime">The starting timestamp of the time range query (inclusive).</param>
            <param name="lastTime">The ending timestamp of the time range query (inclusive).</param>
            <param name="interval">The exact interval to do the scan.</param>
            <param name="tolerance">The width of every window.</param>
            <returns>A key seek filter base that will be able to do this parsing.</returns>
            <remarks>
            Example uses. FirstTime = 1/1/2013. LastTime = 1/2/2013.
            Interval = 0.1 seconds.
            Tolerance = 0.001 seconds.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.CreateFromStream``1(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Loads a key seek filter base from the provided <paramref name="stream"/>;
            </summary>
            <typeparam name="TKey">The type of key that implements SeekFilterBase.</typeparam>
            <param name="stream">The stream to load the filter from.</param>
            <returns>A seek filter base that will be created from the specified stream.</returns>
            <exception cref="T:System.Data.VersionNotFoundException">Thrown if the version cannot be reached.</exception>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.FixedRange`1.#ctor(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Creates a filter by reading from the stream.
            </summary>
            <param name="stream">The stream to read from.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.FixedRange`1.#ctor(System.UInt64,System.UInt64)">
            <summary>
            Creates a filter from the boundary.
            </summary>
            <param name="firstTime">The start of the only window.</param>
            <param name="lastTime">The end of the only window.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.FixedRange`1.NextWindow">
            <summary>
            Gets the next search window.
            </summary>
            <returns><c>true</c> if window exists, <c>false</c> if finished.</returns>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.FixedRange`1.Reset">
            <summary>
            Resets the iterative nature of the filter.
            </summary>
            <remarks>
            Since a time filter is a set of date ranges, this will reset the frame so a
            call to <see cref="M:SnapDB.Snap.Filters.TimestampSeekFilter.FixedRange`1.NextWindow"/> will return the first window of the sequence.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.FixedRange`1.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Serializes the filter to a stream.
            </summary>
            <param name="stream">The stream to write to.</param>
        </member>
        <member name="T:SnapDB.Snap.Filters.TimestampSeekFilter.IntervalRanges`1">
            <summary>
            Represents a filter for timestamp-based seek operations based on interval ranges.
            </summary>
            <typeparam name="TKey">The type of the timestamp key.</typeparam>
            <remarks>
            This filter defines a set of date ranges used for timestamp-based seek operations.
            It allows you to iterate through time windows defined by the specified interval ranges.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.IntervalRanges`1.#ctor(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Creates a filter by reading from the stream.
            </summary>
            <param name="stream">The stream to read from.</param>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.IntervalRanges`1.#ctor(System.UInt64,System.UInt64,System.UInt64,System.UInt64,System.UInt64)">
            <summary>
            Creates a filter over a set of date ranges (Similiar to downsampled queries).
            </summary>
            <param name="firstTime">The starting timestamp of the time range query (inclusive).</param>
            <param name="lastTime">The ending timestamp of the time range query (inclusive).</param>
            <param name="mainInterval">The smallest interval that is exact.</param>
            <param name="subInterval">The interval that will be parsed. Possible to be rounded.</param>
            <param name="tolerance">The width of every window.</param>
            <returns>A key seek filter base that will be able to do this parsing.</returns>
            <remarks>
            Example uses. FirstTime = 1/1/2013. LastTime = 1/2/2013.
            MainInterval = 0.1 seconds. SubInterval = 0.0333333 seconds.
            Tolerance = 0.001 seconds.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.IntervalRanges`1.NextWindow">
            <summary>
            Gets the next search window.
            </summary>
            <returns><c>true</c> if window exists, <c>false</c> if finished.</returns>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.IntervalRanges`1.Reset">
            <summary>
            Resets the iterative nature of the filter.
            </summary>
            <remarks>
            Since a time filter is a set of date ranges, this will reset the frame so a
            call to <see cref="M:SnapDB.Snap.Filters.TimestampSeekFilter.IntervalRanges`1.NextWindow"/> will return the first window of the sequence.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilter.IntervalRanges`1.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Serializes the filter to a stream.
            </summary>
            <param name="stream">The stream to write to.</param>
        </member>
        <member name="T:SnapDB.Snap.Filters.TimestampSeekFilterDefinition">
            <summary>
            Defines a seek filter for timestamps used in the archive system.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Filters.TimestampSeekFilterDefinition.FilterType">
            <summary>
            Gets the unique identifier (ID) representing the filter type.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Filters.TimestampSeekFilterDefinition.Create``1(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Overrides the creation of a seek filter instance based on the given BinaryStreamBase.
            </summary>
            <typeparam name="TKey">The type parameter specifying the key type for the seek filter.</typeparam>
            <param name="stream">The BinaryStreamBase from which to create the seek filter.</param>
            <returns>A seek filter instance of type SeekFilterBase&lt;TKey&gt; created from the BinaryStreamBase.</returns>
        </member>
        <member name="F:SnapDB.Snap.Filters.TimestampSeekFilterDefinition.FilterGuid">
            <summary>
            Represents a static Guid used as a filter identifier.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.IDatabaseReader`2">
            <summary>
            Represents a database reader interface for reading data from a SortedTreeEngine.
            </summary>
            <typeparam name="TKey">The type of keys in the database.</typeparam>
            <typeparam name="TValue">The type of values in the database.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.IDatabaseReader`2.Read(SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions,SnapDB.Snap.Filters.SeekFilterBase{`0},SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads data from the SortedTreeEngine with the provided read options and server-side filters.
            </summary>
            <param name="readerOptions">Read options supplied to the reader. Can be <c>null</c>.</param>
            <param name="keySeekFilter">A seek-based filter to follow. Can be <c>null</c>.</param>
            <param name="keyMatchFilter">A match-based filter to follow. Can be <c>null</c>.</param>
            <returns>A stream that will read the specified data.</returns>
        </member>
        <member name="T:SnapDB.Snap.Library">
            <summary>
            A library of <see cref="T:SnapDB.Snap.SnapTypeBase"/> types. This
            library will dynamically register types via reflection if possible.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Library.Encodings">
            <summary>
            Gets all of the encoding data.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Library.Filters">
            <summary>
            Gets all of the filters.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Library.s_filterAssemblyNames">
            <summary>
            The assembly must reference one of these assembly names in order to be scanned for matching types.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Library.ReloadNewAssemblies">
            <summary>
            Will attempt to reload any type that
            inherits from <see cref="T:SnapDB.Snap.SnapTypeBase"/> in
            any new assemblies.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Library.GetSortedTreeType(System.Guid)">
            <summary>
            Retrieves the Type associated with a given Guid identifier in the SortedTree type lookup.
            </summary>
            <param name="id">The unique identifier (Guid) associated with the SortedTree Type.</param>
            <returns>The Type corresponding to the provided identifier.</returns>
        </member>
        <member name="M:SnapDB.Snap.Library.GetKeyValueMethods``2">
            <summary>
            Retrieves or creates the KeyValueMethods instance for a specific TKey and TValue type combination.
            </summary>
            <typeparam name="TKey">The type of keys in the KeyValueMethods instance.</typeparam>
            <typeparam name="TValue">The type of values in the KeyValueMethods instance.</typeparam>
            <returns>A KeyValueMethods instance for the specified TKey and TValue types.</returns>
            <remarks>
            If an existing KeyValueMethods instance is found for the specified types, it is returned.
            Otherwise, a new KeyValueMethods instance is created and returned.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Library.CreateStreamEncoding``2(SnapDB.Snap.EncodingDefinition)">
            <summary>
            Creates a new instance of StreamEncodingBase for the specified TKey and TValue types and encoding method.
            </summary>
            <typeparam name="TKey">The type of keys in the StreamEncodingBase instance.</typeparam>
            <typeparam name="TValue">The type of values in the StreamEncodingBase instance.</typeparam>
            <param name="encodingMethod">The encoding method to use for data serialization.</param>
            <returns>A new StreamEncodingBase instance configured with the specified encoding method.</returns>
        </member>
        <member name="M:SnapDB.Snap.Library.CreateTreeNode``2(SnapDB.Snap.EncodingDefinition,System.Byte)">
            <summary>
            Creates a new instance of SortedTreeNodeBase for the specified TKey and TValue types, encoding method, and level.
            </summary>
            <typeparam name="TKey">The type of keys in the SortedTreeNodeBase instance.</typeparam>
            <typeparam name="TValue">The type of values in the SortedTreeNodeBase instance.</typeparam>
            <param name="encodingMethod">The encoding method to use for data serialization.</param>
            <param name="level">The level of the tree node in the tree hierarchy.</param>
            <returns>A new SortedTreeNodeBase instance configured with the specified encoding method and level.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the encodingMethod is null.</exception>
        </member>
        <member name="M:SnapDB.Snap.Library.Register(SnapDB.Snap.SnapTypeBase)">
            <summary>
            Registers a SnapTypeBase derived type by associating it with a unique GUID.
            </summary>
            <param name="snapType">The SnapTypeBase derived type to be registered.</param>
            <exception cref="T:System.Exception">
            Thrown when the provided SnapTypeBase type is already associated with a different GUID or when another type with the same GUID is already registered.
            </exception>
        </member>
        <member name="T:SnapDB.Snap.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap"/> namespace organizes all common SnapDB library functionality related to general feature helpers,
            e.g., the <see cref="T:SnapDB.Snap.Library"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.NullTreeScanner`2">
            <summary>
            Represents a specialized implementation of SeekableTreeStream that acts as a null stream, providing no data and always returning false on reads.
            </summary>
            <typeparam name="TKey">The type of keys in the stream (must be a reference type).</typeparam>
            <typeparam name="TValue">The type of values in the stream (must be a reference type).</typeparam>
        </member>
        <member name="M:SnapDB.Snap.NullTreeScanner`2.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.NullTreeScanner`2"/> class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.NullTreeScanner`2.SeekToKey(`0)">
            <summary>
            Seeks to the specified key (not implemented, as this is a null stream).
            </summary>
            <param name="key">The key to seek to (not used).</param>
        </member>
        <member name="M:SnapDB.Snap.NullTreeScanner`2.ReadNext(`0,`1)">
            <summary>
            Reads the next key-value pair (always returns false since this is a null stream).
            </summary>
            <param name="key">The key to read (not used).</param>
            <param name="value">The value to read (not used).</param>
            <returns>Always returns false, indicating the end of the stream.</returns>
        </member>
        <member name="M:SnapDB.Snap.NullTreeScanner`2.#cctor">
            <summary>
            Static constructor to initialize the static instance of the <see cref="T:SnapDB.Snap.NullTreeScanner`2"/> class.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.NullTreeScanner`2.Instance">
            <summary>
            Gets a static instance of the <see cref="T:SnapDB.Snap.NullTreeScanner`2"/> class for convenience.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.SeekableTreeStream`2">
            <summary>
            Represents an abstract base class for a seekable stream that allows seeking to a specific key within a sorted tree.
            </summary>
            <typeparam name="TKey">The type of keys in the stream (must be a reference type).</typeparam>
            <typeparam name="TValue">The type of values in the stream (must be a reference type).</typeparam>
        </member>
        <member name="M:SnapDB.Snap.SeekableTreeStream`2.SeekToKey(`0)">
            <summary>
            Seeks the stream to the first value greater than or equal to <paramref name="key"/>.
            </summary>
            <param name="key">The key to seek to.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveDetails">
            <summary>
            Gets basic archive details that can be returned to the client.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveDetails.StartTime">
            <summary>
            Gets the start time of the archive, if applicable to Key type.
            </summary>
            <remarks>
            If Key type does not expose a TimestampAsDate property, value will be <see cref="F:System.DateTime.MinValue"/>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveDetails.EndTime">
            <summary>
            Gets the end time of the archive, if applicable to Key type.
            </summary>
            <remarks>
            If Key type does not expose a TimestampAsDate property, value will be <see cref="F:System.DateTime.MaxValue"/>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveDetails.FileName">
            <summary>
            The name of the file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveDetails.FileSize">
            <summary>
            Gets the size of the file in bytes.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveDetails.Id">
            <summary>
            The ID for the file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveDetails.Flags">
            <summary>
            Gets the flags for the archive file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveDetails.IsEmpty">
            <summary>
            Gets if the file contains anything.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveDetails.FirstKey">
            <summary>
            Gets the first key as a string.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveDetails.LastKey">
            <summary>
            Gets the last key as a string.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveDetails.Create``2(SnapDB.Snap.Services.ArchiveTableSummary{``0,``1})">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.ArchiveDetails"/> from a specific <see cref="T:SnapDB.Snap.Services.ArchiveTableSummary`2"/>
            </summary>
            <typeparam name="TKey">The type of the archive's keys.</typeparam>
            <typeparam name="TValue">The type of the archive's values.</typeparam>
            <param name="table">The ArchiveTableSummary to create details from.</param>
            <returns>An ArchiveDetails object containing information about the archive table.</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveDirectoryMethod">
            <summary>
            Specifies the directory structure to follow when writing archive files to the disk.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ArchiveDirectoryMethod.TopDirectoryOnly">
            <summary>
            Writes all files in the top directory.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ArchiveDirectoryMethod.Year">
            <summary>
            Writes all files based on the starting year.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ArchiveDirectoryMethod.YearMonth">
            <summary>
            Writes all files based on 'YearMonth'.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ArchiveDirectoryMethod.YearThenMonth">
            <summary>
            Writes all files based on 'Year\Month'.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveList">
            <summary>
            Manages the complete list of archive resources and the
            associated reading and writing that goes along with it.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.ArchiveList"/>
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList.AttachFileOrPath(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Attaches the supplied paths or files.
            </summary>
            <param name="paths">The collection of path strings representing file names or directories to enumerate.</param>
            <returns>Void.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList.LoadFiles(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Loads the specified files into the archive list.
            </summary>
            <param name="archiveFiles">The files to be archived.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList.GetFullStatus(System.Text.StringBuilder,System.Int32)">
            <summary>
            Appends the status of the files in the ArchiveList to the provided <see cref="T:System.Text.StringBuilder"/>.
            </summary>
            <param name="status">Target status output <see cref="T:System.Text.StringBuilder"/>.</param>
            <param name="maxFileListing">Maximum file listing.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList.GetAllAttachedFiles">
            <summary>
            Gets a complete list of all archive files.
            </summary>
            <returns>All of the attached archive files.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList.AcquireEditLock">
            <summary>
            Returns an <see cref="T:System.IDisposable"/> class that can be used to edit the contents of this list.
            WARNING: Make changes quickly and dispose the returned class.  All calls to this class are blocked while
            editing this class.
            </summary>
            <returns>An instance of ArchiveListEditor representing the acquired edit lock.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList.InternalAcquireEditLock">
            <summary>
            Necessary to provide shadow method of <see cref="M:SnapDB.Snap.Services.ArchiveList.AcquireEditLock"/>.
            </summary>
            <returns>An instance of ArchiveListEditor representing the acquired edit lock.</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveListEditor">
            <summary>
            Provides a way to edit an <see cref="T:SnapDB.Snap.Services.ArchiveList"/> since all edits must be atomic.
            WARNING: Instancing this class on an <see cref="T:SnapDB.Snap.Services.ArchiveList"/> will lock the class
            until Dispose() is called. Therefore, keep locks to a minimum and always
            use a Using block.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListEditor.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.Snap.Services.ArchiveListEditor"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListEditor.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.ArchiveListEditor"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListEditor.RenewArchiveSnapshot(System.Guid)">
            <summary>
            Renews the snapshot of the archive file. This will acquire the latest
            read transaction so all new snapshots will use this later version.
            </summary>
            <param name="archiveId">The unique identifier of the archive snapshot to renew.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListEditor.Contains(System.Guid)">
            <summary>
            Returns true if the archive list contains the provided file.
            </summary>
            <param name="archiveId">The unique identifier of the archive to check for.</param>
            <returns><c>true</c> if the archive list contains the specified archive; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListEditor.TryRemoveAndDispose(System.Guid)">
            <summary>
            Removes the <paramref name="archiveId"/> from <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> and queues it for disposal.
            </summary>
            <param name="archiveId">the archive to remove</param>
            <returns>True if the item was removed, False otherwise.</returns>
            <remarks>
            Also unlocks the archive file.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListEditor.TryRemoveAndDelete(System.Guid)">
            <summary>
            Removes the supplied file from the <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> and queues it for deletion.
            </summary>
            <param name="archiveId">file to remove and delete.</param>
            <returns>true if deleted, false otherwise</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveListEditor`2">
            <summary>
            Provides a way to edit an <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> since all edits must be atomic.
            WARNING: Instancing this class on an <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> will lock the class
            until <see cref="M:SnapDB.Snap.Services.ArchiveListEditor.Dispose"/> is called. Therefore, keep locks to a minimum and always
            use a Using block.
            </summary>
            <typeparam name="TKey">The key type for the archive list.</typeparam>
            <typeparam name="TValue">The value type for the archive list.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListEditor`2.Add(SnapDB.Snap.Storage.SortedTreeTable{`0,`1})">
            <summary>
            Adds an archive file to the list with the given state information.
            </summary>
            <param name="sortedTree">archive table to add</param>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveListLog">
            <summary>
            Contains the Pending Deletions for the <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/>.
            This class is thread safe.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLog.#ctor(SnapDB.Snap.Services.ArchiveListLogSettings)">
            <summary>
            Creates a log that monitors pending deletions.
            </summary>
            <param name="settings">Optional settings for the log. If none are specified, the default will not load the settings.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLog.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.ArchiveListLog"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLog.SaveLogToDisk">
            <summary>
            If the log is file backed
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLog.ClearCompletedLogs(System.Collections.Generic.HashSet{System.Guid})">
            <summary>
            Removes any log that is no longer valid from this list.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLog.AddFileToDelete(System.Guid)">
            <summary>
            Appends the specified file to the list of files that should be deleted.
            </summary>
            <param name="archiveId"></param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLog.ShouldBeDeleted(System.Guid)">
            <summary>
            Gets if the specified file Id should be deleted based on the delete log.
            </summary>
            <param name="fileId">the id of the file.</param>
            <returns>true if the file should be deleted. False otherwise.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLog.GetAllFilesToDelete">
            <summary>
            Verify that none of the pending deletion files exist in the editor.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveListLogFile">
            <summary>
            A individual archive list log file
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ArchiveListLogFile.FileName">
            <summary>
            Gets the filename of this log file. String.Empty if not currently associated with a file.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ArchiveListLogFile.FilesToDelete">
            <summary>
            Gets the list of all files that are pending deletion.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListLogFile.IsValid">
            <summary>
            Gets if the file is valid and not corrupt.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLogFile.RemoveDeletedFiles(System.Collections.Generic.HashSet{System.Guid})">
            <summary>
            Removes any files that have already been deleted from this log file.
            </summary>
            <remarks>
            Note, the log file should not be modified to prevent corrupting the log file.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLogFile.Load(System.String)">
            <summary>
            Loads from the disk
            </summary>
            <param name="fileName">the name of the log file</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLogFile.Save(System.String)">
            <summary>
            Saves to the disk
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLogFile.Delete">
            <summary>
            Deletes the file associated with this ArchiveLog
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveListLogSettings">
            <summary>
            The settings for an archive list log.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListLogSettings.IsFileBacked">
            <summary>
            Gets if this archive log will be file backed.
            This is true as long as <see cref="P:SnapDB.Snap.Services.ArchiveListLogSettings.LogPath"/> is assigned
            a value.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListLogSettings.LogFileExtension">
            <summary>
            The file extension to write the log files.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListLogSettings.LogFilePrefix">
            <summary>
            The prefix to assign to all log files. Can be string.empty
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListLogSettings.LogPath">
            <summary>
            The path to store all log files. Can be an empty string to
            not enable file based logging.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListLogSettings.SearchPattern">
            <summary>
            Gets the wildcard search string for a log file.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLogSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration of the log settings to the specified stream.
            </summary>
            <param name="stream">The stream where the configuration data will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLogSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration of the log settings from the specified stream.
            </summary>
            <param name="stream">The stream from which the configuration data will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLogSettings.Validate">
            <summary>
            Validates the configuration of the log settings.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListLogSettings.GenerateNewFileName">
            <summary>
            Generates a new file name.
            </summary>
            <returns>A new unique file name for the log.</returns>
            <exception cref="T:System.Exception">Thrown if the log is not file-backed.</exception>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveList`2">
            <summary>
            Manages the complete list of archive resources and the
            associated reading and writing that goes along with it.
            </summary>
            <typeparam name="TKey">The key type used in the archive list.</typeparam>
            <typeparam name="TValue">The value type used in the archive list.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.#ctor(SnapDB.Snap.Services.ArchiveListSettings)">
            <summary>
            Creates an ArchiveList
            </summary>
            <param name="settings">The settings for the archive list. Null will revert to a default setting.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the log source base object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.AttachFileOrPath(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Attaches the supplied paths or files.
            </summary>
            <param name="paths">An enumerable collection of file paths or directories to attach.</param>
            <remarks>
            This method will attach files from the specified paths and subdirectories, including files matching specified extensions.
            If a specified path is a directory, it will be recursively searched for files with extensions defined in the settings.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.LoadFiles(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Loads the specified files into the archive list.
            </summary>
            <param name="archiveFiles">The files to be archived.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.GetFullStatus(System.Text.StringBuilder,System.Int32)">
            <summary>
            Appends the status of the files in the ArchiveList to the provided <see cref="T:System.Text.StringBuilder"/>.
            </summary>
            <param name="status">Target status output <see cref="T:System.Text.StringBuilder"/>.</param>
            <param name="maxFileListing">Maximum file listing.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.GetAllAttachedFiles">
            <summary>
            Gets a complete list of all archive files.
            </summary>
            <returns>All the attached archive files.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.AcquireEditLock">
            <summary>
            Returns an <see cref="T:System.IDisposable"/> class that can be used to edit the contents of this list.
            WARNING: Make changes quickly and dispose the returned class.  All calls to this class are blocked while
            editing this class.
            </summary>
            <returns>
            An <see cref="T:SnapDB.Snap.Services.ArchiveListEditor`2"/> instance that allows editing the archive list.
            </returns>
            <remarks>
            Use this method to obtain a lock for making changes to the archive list. Ensure to properly dispose of the editor
            when done with the modifications to release the lock.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.IsFileBeingUsed(SnapDB.Snap.Storage.SortedTreeTable{`0,`1})">
            <summary>
            Determines if the provided file is currently in use
            by any resource.
            </summary>
            <param name="sortedTree">The <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> to search for.</param>
            <returns>
            <c>true</c> if the specified <paramref name="sortedTree"/> is being used by this object; otherwise, <c>false</c>.
            </returns>
            <remarks>
            This method checks if the provided <paramref name="sortedTree"/> is currently in use by this object.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.CreateNewClientResources">
            <summary>
            Creates an object that can be used to get updated snapshots from this archive list.
            Client must call <see cref="M:System.IDisposable.Dispose"/> method when finished with these resources as they will not
            automatically be reclaimed by the garbage collector. Class will not be initialized until calling <see cref="M:SnapDB.Snap.Services.ArchiveListSnapshot`2.UpdateSnapshot"/>.
            </summary>
            <returns>
            A new <see cref="T:SnapDB.Snap.Services.ArchiveListSnapshot`2"/> instance for client resources.
            </returns>
            <exception cref="T:System.Exception">
            Thrown if the object is disposing.
            </exception>
            <remarks>
            This method creates a new <see cref="T:SnapDB.Snap.Services.ArchiveListSnapshot`2"/> instance for managing client resources.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.InternalAcquireEditLock">
            <summary>
            Necessary to provide shadow method of archive list.
            </summary>
            <returns>
            An <see cref="T:SnapDB.Snap.Services.ArchiveListEditor`2"/> instance for making edits to the list.
            </returns>
            <remarks>
            This method is used to acquire an edit lock for the <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.AddFileToDelete(SnapDB.Snap.Storage.SortedTreeTable{`0,`1})">
            <summary>
            Queues the supplied file as a file that needs to be deleted.
            MUST be called from a synchronized context.
            </summary>
            <param name="file">The file to be queued for deletion.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.AddFileToDispose(SnapDB.Snap.Storage.SortedTreeTable{`0,`1})">
            <summary>
            Queues the supplied file as one that needs to be disposed when no longer in use.
            MUST be called from a synchronized context.
            </summary>
            <param name="file">The file to be queued for disposal.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.InternalIsFileBeingUsed(SnapDB.Snap.Storage.SortedTreeTable{`0,`1})">
            <summary>
            Gets if the specified file is being.
            MUST be called from a synchronized context.
            </summary>
            <param name="sortedTree">The <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> to check.</param>
            <returns>
            <c>true</c> if the <paramref name="sortedTree"/> is being used in any active snapshots; otherwise, <c>false</c>.
            </returns>
            <remarks>
            This method checks if the specified <paramref name="sortedTree"/> is being used in any of the active snapshots
            managed by the <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.ReleaseClientResources(SnapDB.Snap.Services.ArchiveListSnapshot{`0,`1})">
            <summary>
            Invoked by <see cref="M:SnapDB.Snap.Services.ArchiveListSnapshot`2.Dispose"/> method.
            </summary>
            <param name="archiveLists"></param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.UpdateSnapshot(SnapDB.Snap.Services.ArchiveListSnapshot{`0,`1})">
            <summary>
            Invoked by <see cref="M:SnapDB.Snap.Services.ArchiveListSnapshot`2.UpdateSnapshot"/>.
            </summary>
            <param name="transaction"></param>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveList`2.Editor">
            <summary>
            Provides a way to edit an <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> since all edits must be atomic.
            WARNING: Instancing this class on an <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> will lock the class
            until <see cref="M:SnapDB.Snap.Services.ArchiveList`2.Editor.Dispose(System.Boolean)"/> is called. Therefore, keep locks to a minimum and always
            use a Using block.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.Editor.#ctor(SnapDB.Snap.Services.ArchiveList{`0,`1})">
            <summary>
            Creates an editor for the ArchiveList
            </summary>
            <param name="list">the list to create the edit lock on.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.Editor.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.ArchiveList`2.Editor"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.Editor.RenewArchiveSnapshot(System.Guid)">
            <summary>
            Renews the snapshot of the archive file. This will acquire the latest
            read transaction so all new snapshots will use this later version.
            </summary>
            <param name="archiveId">The unique identifier of the archive to renew the snapshot for.</param>
            <exception cref="T:System.ObjectDisposedException">
            Thrown if the <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> or its associated resources are disposed.
            </exception>
            <remarks>
            This method renews the archive snapshot associated with the specified <paramref name="archiveId"/>
            in the <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> by creating a new snapshot with the same data
            from the existing <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.Editor.Add(SnapDB.Snap.Storage.SortedTreeTable{`0,`1})">
            <summary>
            Adds an archive file to the list with the given state information.
            </summary>
            <param name="sortedTree">Archive table to add.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.Editor.Contains(System.Guid)">
            <summary>
            Returns true if the archive list contains the provided file.
            </summary>
            <param name="archiveId">The unique identifier of the archive snapshot to check for.</param>
            <returns>
            <c>true</c> if an archive snapshot with the specified <paramref name="archiveId"/> is found in the list; otherwise, <c>false</c>.
            </returns>
            <remarks>
            This method checks if the <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> contains an archive snapshot with the specified <paramref name="archiveId"/>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.Editor.TryRemoveAndDispose(System.Guid)">
            <summary>
            Removes the <paramref name="archiveId"/> from <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> and queues it for disposal.
            </summary>
            <param name="archiveId">the archive to remove</param>
            <returns>True if the item was removed, False otherwise.</returns>
            <remarks>
            Also unlocks the archive file.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveList`2.Editor.TryRemoveAndDelete(System.Guid)">
            <summary>
            Removes the supplied file from the <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> and queues it for deletion.
            </summary>
            <param name="archiveId">file to remove and delete.</param>
            <returns>true if deleted, false otherwise</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveListSettings">
            <summary>
            Settings for <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSettings.#ctor">
            <summary>
            Creates a new instance of <see cref="T:SnapDB.Snap.Services.ArchiveListSettings"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListSettings.ImportExtensions">
            <summary>
            A set of all file extensions that will need to be loaded from each path.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListSettings.ImportPaths">
            <summary>
            A set of all import paths to load upon initialization.
            Be sure to include all paths that existed last time the service
            restarted since the ArchiveListLog processes immediately upon
            construction.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListSettings.LogSettings">
            <summary>
            The log settings to use for logging deletions.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSettings.AddPath(System.String)">
            <summary>
            Adds the supplied path to the list.
            </summary>
            <param name="path">The path to add.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSettings.AddPaths(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Adds the supplied paths to the list.
            </summary>
            <param name="paths">the paths to add.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSettings.AddExtension(System.String)">
            <summary>
            Adds the supplied extension to the list.
            </summary>
            <param name="extension">the extension to add.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration of the import settings to the specified stream.
            </summary>
            <param name="stream">The stream where the configuration data will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration of the import settings from the specified stream.
            </summary>
            <param name="stream">The stream from which the configuration data will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSettings.Validate">
            <summary>
            Validates the configuration of the import settings.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveListSnapshot`2">
            <summary>
            Provides a list of resources that each system transaction could be using.
            </summary>
            <typeparam name="TKey">The key type for the archive list.</typeparam>
            <typeparam name="TValue">The value type for the archive list.</typeparam>
        </member>
        <member name="E:SnapDB.Snap.Services.ArchiveListSnapshot`2.DisposeRequested">
            <summary>
            Signals that a disposal of this object has been requested.
            </summary>
            <remarks>
            A race condition exists such that this class gets a dispose request before the client
            registers this event. Therefore, be sure to check <see cref="P:SnapDB.Snap.Services.ArchiveListSnapshot`2.IsDisposeRequested"/>
            after assigning the event handler.
            </remarks>
        </member>
        <member name="F:SnapDB.Snap.Services.ArchiveListSnapshot`2.m_acquireResources">
            <summary>
            A callback to get the latest list of resources from <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/>.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ArchiveListSnapshot`2.m_onDisposed">
            <summary>
            A callback to tell <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> when resources are no longer being used.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ArchiveListSnapshot`2.m_tables">
            <summary>
            Contains an array of all of the resources currently used by this transaction.
            This field can be null or any element of this array can also be null.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSnapshot`2.#ctor(System.Action{SnapDB.Snap.Services.ArchiveListSnapshot{`0,`1}},System.Action{SnapDB.Snap.Services.ArchiveListSnapshot{`0,`1}})">
            <summary>
            Creates an <see cref="T:SnapDB.Snap.Services.ArchiveListSnapshot`2"/>.
            </summary>
            <param name="onDisposed"></param>
            <param name="acquireResources"></param>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListSnapshot`2.IsDisposed">
            <summary>
            Gets if this class has been disposed.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListSnapshot`2.IsDisposeRequested">
            <summary>
            Gets if the engine is requesting that this snapshot gets disposed.
            if this is true this means the engine is waiting for the release
            of this object before it can continue its next task.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveListSnapshot`2.Tables">
            <summary>
            Gets the list of all partitions that are currently in use.  Set partition to null to indicate
            that is is no longer needed.  Set the entire array to null to release all partitions.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSnapshot`2.Dispose">
            <summary>
            Disposes this class, releasing all resource locks.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSnapshot`2.TryGetFile(System.Guid)">
            <summary>
            Attempts to get the file for the provided fileId.
            </summary>
            <param name="fileId">The unique identifier for the file.</param>
            <returns><c>null</c> if not found.</returns>
            <exception cref="T:System.ObjectDisposedException">Thrown if object has been disposed.</exception>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveListSnapshot`2.UpdateSnapshot">
            <summary>
            Requests from <see cref="T:SnapDB.Snap.Services.ArchiveList`2"/> that this snapshot get updated.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.ArchiveTableSummary`2">
            <summary>
            Contains an immutable class of the current table
            along with its most recent snapshot.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveTableSummary`2.#ctor(SnapDB.Snap.Storage.SortedTreeTable{`0,`1})">
            <summary>
            Creates a snapshot summary of a table.
            </summary>
            <param name="table">the table to take the read snapshot of.</param>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveTableSummary`2.ActiveSnapshotInfo">
            <summary>
            Gets the most recent <see cref="T:SnapDB.Snap.Storage.SortedTreeTableSnapshotInfo`2"/> of this class when it was created.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveTableSummary`2.FileId">
            <summary>
            Gets the ID for this file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveTableSummary`2.FirstKey">
            <summary>
            Gets the first key contained in this partition.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveTableSummary`2.IsEmpty">
            <summary>
            Gets if this table is empty.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveTableSummary`2.LastKey">
            <summary>
            Gets the last key contained in this partition.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ArchiveTableSummary`2.SortedTreeTable">
            <summary>
            Gets the <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> that this class represents.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ArchiveTableSummary`2.Contains(`0,`0)">
            <summary>
            Determines if this table might contain data for the keys provided.
            </summary>
            <param name="startKey">The start key of the range to check.</param>
            <param name="stopKey">The stop key of the range to check.</param>
            <returns>
            <c>true</c> if the specified key range is contained within the archive list; otherwise, <c>false</c>.
            </returns>
            <remarks>
            This method checks if the specified key range, defined by <paramref name="startKey"/> and <paramref name="stopKey"/>,
            is contained within the archive list. If the archive file is empty, it will always be searched.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.ClientDatabaseBase">
            <summary>
            Represents a single historian database.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ClientDatabaseBase.Info">
            <summary>
            Gets basic information about the current Database.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ClientDatabaseBase.IsDisposed">
            <summary>
            Checks isDisposed status.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase.AttachFilesOrPaths(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Loads the provided files from all of the specified paths.
            </summary>
            <param name="paths">all of the paths of archive files to attach. These can either be a path, or an individual file name.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase.GetAllAttachedFiles">
            <summary>
            Enumerates all of the files attached to the database.
            </summary>
            <returns>All of the attached files to be enumerated.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase.DetachFiles(System.Collections.Generic.List{System.Guid})">
            <summary>
            Detaches the list of files from the database.
            </summary>
            <param name="files">The file IDs that need to be detached.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase.DeleteFiles(System.Collections.Generic.List{System.Guid})">
            <summary>
            Deletes the list of files from the database.
            </summary>
            <param name="files">The files that need to be deleted.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase.SoftCommit">
            <summary>
            Forces a soft commit on the database. A soft commit
            only commits data to memory. This allows other clients to read the data.
            While soft committed, this data could be lost during an unexpected shutdown.
            Soft commits usually occur within microseconds.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase.HardCommit">
            <summary>
            Forces a commit to the disk subsystem. Once this returns, the data will not
            be lost due to an application crash or unexpected shutdown.
            Hard commits can take 100ms or longer depending on how much data has to be committed.
            This requires two consecutive hardware cache flushes.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.ClientDatabaseBase`2">
            <summary>
            Represents a single historian database.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase`2.Write(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Writes the tree stream to the database.
            </summary>
            <param name="stream">All of the key-value pairs to add to the database.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase`2.Write(`0,`1)">
            <summary>
            Writes an individual key/value to the sorted tree store.
            </summary>
            <param name="key">The key to write.</param>
            <param name="value">The value associated with the key to write.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ClientDatabaseBase`2.Read(SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions,SnapDB.Snap.Filters.SeekFilterBase{`0},SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads data from the SortedTreeEngine with the provided read options and server side filters.
            </summary>
            <param name="readerOptions">Read options supplied to the reader. Can be <c>null</c>.</param>
            <param name="keySeekFilter">A seek based filter to follow. Can be <c>null</c>.</param>
            <param name="keyMatchFilter">A match based filter to follow. Can be <c>null</c>.</param>
            <returns>A stream that will read the specified data.</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2">
            <summary>
            Creates a configuration for the database to utilize.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.#ctor(System.String,System.String,System.Boolean)">
            <summary>
            Initializes a new instance of the AdvancedServerDatabaseConfig class with the specified configuration options.
            </summary>
            <param name="databaseName">The name of the database.</param>
            <param name="mainPath">The main path associated with the database.</param>
            <param name="supportsWriting">A flag indicating whether the database supports writing.</param>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.ArchiveEncodingMethod">
            <summary>
            Gets the default encoding methods for storing files.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.CacheFlushInterval">
            <summary>
            The number of milliseconds before data is taken from it's cache and put in the
            memory file.
            </summary>
            <remarks>
            Must be between 1 and 1,000
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.DatabaseName">
            <summary>
            The name associated with the database.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.DesiredRemainingSpace">
            <summary>
            Gets or sets the desired remaining drive space, in bytes, for final stage files.
            </summary>
            <remarks>
            Value must be between 100MB and 1TB.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.DirectoryMethod">
            <summary>
            Gets the method of how the directory will be stored. Defaults to
            top directory only.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.DiskFlushInterval">
            <summary>
            The number of milliseconds before data is automatically flushed to the disk.
            </summary>
            <remarks>
            Must be between 1,000 ms and 60,000 ms.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.FinalFileExtension">
            <summary>
            The extension to use for the final file
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.FinalWritePaths">
            <summary>
            The list of directories where final files can be placed written.
            If nothing is specified, the main directory is used.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.ImportAttachedPathsAtStartup">
            <summary>
            Determines whether the server should import attached paths at startup.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.ImportPaths">
            <summary>
            Gets all of the paths that are known by this historian.
            A path can be a file name or a folder.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.IntermediateFileExtension">
            <summary>
            The extension to use for the intermediate files
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.StagingCount">
            <summary>
            The number of stages.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.StreamingEncodingMethods">
            <summary>
            Gets the supported encoding methods for streaming data. This list is in a prioritized order.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.SupportsWriting">
            <summary>
            Gets if writing will be supported
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.TargetFileSize">
            <summary>
            Gets or sets the desired size of the final stage archive files.
            </summary>
            <remarks>
            Value must be between 100MB and 1TB.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.Metadata">
            <summary>
            Gets or sets the metadata to be written to the archive.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2.ToServerDatabaseSettings">
            <summary>
            Converts the current instance of the database settings to a <see cref="T:SnapDB.Snap.Services.ServerDatabaseSettings"/> object.
            </summary>
            <returns>A <see cref="T:SnapDB.Snap.Services.ServerDatabaseSettings"/> object representing the database settings.</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.Configuration.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Services.Configuration"/> namespace organizes all common SnapDB library functionality related to database configuration,
            e.g., the <see cref="T:SnapDB.Snap.Services.Configuration.AdvancedServerDatabaseConfig`2"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.DatabaseInfo">
            <summary>
            Contains a basic set of data for a <see cref="T:SnapDB.Snap.Services.ClientDatabaseBase`2"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.DatabaseInfo.#ctor(System.String,SnapDB.Snap.SnapTypeBase,SnapDB.Snap.SnapTypeBase,System.Collections.Generic.IList{SnapDB.Snap.EncodingDefinition})">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.DatabaseInfo"/>
            </summary>
            <param name="databaseName">the name of the database</param>
            <param name="key">the key type</param>
            <param name="value">the value type</param>
            <param name="supportedStreamingModes"></param>
        </member>
        <member name="M:SnapDB.Snap.Services.DatabaseInfo.#ctor(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Loads a <see cref="T:SnapDB.Snap.Services.DatabaseInfo"/> from stream.
            </summary>
            <param name="stream"></param>
        </member>
        <member name="P:SnapDB.Snap.Services.DatabaseInfo.DatabaseName">
            <summary>
            Gets the name of the database
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.DatabaseInfo.KeyType">
            <summary>
            Gets the type for the database key.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.DatabaseInfo.KeyTypeId">
            <summary>
            Gets the ID for the database key.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.DatabaseInfo.SupportedStreamingModes">
            <summary>
            Gets all of the supported streaming modes for the server.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.DatabaseInfo.ValueType">
            <summary>
            Gets the type for the database value.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.DatabaseInfo.ValueTypeId">
            <summary>
            Gets the ID for the database value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.DatabaseInfo.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Saves the configuration of the database to the specified binary stream.
            </summary>
            <param name="stream">The binary stream where the database configuration data will be saved.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.ISortedTreeServer">
            <summary>
            Represents a sorted tree server interface that provides methods for interacting with the server.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ISortedTreeServer.CreateClientHost">
            <summary>
            Creates a client connection to the server.
            </summary>
            <returns>A <see cref="T:SnapDB.Snap.Services.SnapClient"/> representing the client connection to the server.</returns>
            <remarks>
            This method is used to create a client connection to the server. The returned <see cref="T:SnapDB.Snap.Services.SnapClient"/>
            can be used to communicate with the server and perform various operations.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.IToServerDatabaseSettings">
            <summary>
            Allows the creation of <see cref="T:SnapDB.Snap.Services.ServerDatabaseSettings"/> from a class that implements this method.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.IToServerDatabaseSettings.ToServerDatabaseSettings">
            <summary>
            Converts the current configuration into a <see cref="T:SnapDB.Snap.Services.ServerDatabaseSettings"/> object.
            </summary>
            <returns>A <see cref="T:SnapDB.Snap.Services.ServerDatabaseSettings"/> object that can be used for configuring a <see cref="T:SnapDB.Snap.Services.SnapServerDatabase`2"/>.</returns>
            <remarks>
            This method is used to convert the current configuration settings into a <see cref="T:SnapDB.Snap.Services.ServerDatabaseSettings"/> object
            that can be applied when configuring a <see cref="T:SnapDB.Snap.Services.SnapServerDatabase`2"/>.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.IToServerSettings">
            <summary>
            Allows the creation of <see cref="T:SnapDB.Snap.Services.ServerSettings"/> from a class that implements this method.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.IToServerSettings.ToServerSettings">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.ServerSettings"/> configuration that can be used for <see cref="T:SnapDB.Snap.Services.SnapServer"/>
            </summary>
            <returns>A <see cref="T:SnapDB.Snap.Services.ServerSettings"/> object that can be used for configuring a <see cref="T:SnapDB.Snap.Services.SnapServer"/>.</returns>
            <remarks>
            This method is used to convert the current configuration settings into a <see cref="T:SnapDB.Snap.Services.ServerSettings"/> object
            that can be applied when configuring a <see cref="T:SnapDB.Snap.Services.SnapServer"/>.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Services"/> namespace organizes all common SnapDB library functionality related to server settings and configuration,
            e.g., the <see cref="T:SnapDB.Snap.Services.ServerSettings"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Tree"/> namespace organizes all common SnapDB library functionality related to sorted binary trees,
            e.g., the <see cref="T:SnapDB.Snap.Services.Net.SnapStreamingClient"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.ServerCommand">
            <summary>
            Server commands
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerCommand.ConnectToDatabase">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerCommand.DisconnectDatabase">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerCommand.Disconnect">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerCommand.Read">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerCommand.CancelRead">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerCommand.Write">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerCommand.SetEncodingMethod">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerCommand.GetAllDatabases">
            <summary>
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.ServerResponse">
            <summary>
            Server response
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.UnhandledException">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.UnknownProtocol">
            <summary>
            Occurs at first connection if the protocol version is not recognized by the server.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.ConnectedToRoot">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.ListOfDatabases">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.DatabaseDoesNotExist">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.DatabaseKeyUnknown">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.DatabaseValueUnknown">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.SuccessfullyConnectedToDatabase">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.GoodBye">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.UnknownCommand">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.UnknownEncodingMethod">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.EncodingMethodAccepted">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.DatabaseDisconnected">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.UnknownDatabaseCommand">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.UnknownOrCorruptSeekFilter">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.UnknownOrCorruptMatchFilter">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.UnknownOrCorruptReaderOptions">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.SerializingPoints">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.ErrorWhileReading">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.CanceledRead">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.ReadComplete">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.ServerNameTooLong">
            <summary>
            Occurs during initial connection.
            Indicates that the server name
            string was longer than 100 characters.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.ServerNameDoesNotMatch">
            <summary>
            Occurs when the server name
            specified in the initial connection
            does not match this server.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.RequiresLogin">
            <summary>
            Occurs when the user has not yet logged in.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.KnownProtocol">
            <summary>
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.ServerResponse.AuthenticationFailed">
            <summary>
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.SnapNetworkClient">
            <summary>
            A client that communicates over a network socket.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapNetworkClient.#ctor(SnapDB.Snap.Services.Net.SnapNetworkClientSettings,SnapDB.Security.SecureStreamClientBase,System.Boolean)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Net.SnapNetworkClient"/>
            </summary>
            <param name="settings">The config to use for the client</param>
            <param name="credentials">
            The network credentials to use.
            If left null, the computers current credentials are use.
            </param>
            <param name="useSsl">Specifies if ssl encryption is desired for the connection.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapNetworkClient.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.Net.SnapNetworkClient"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.SnapNetworkClientSettings">
            <summary>
            The options that are passed to a <see cref="T:SnapDB.Snap.Services.Net.SnapNetworkClient"/>.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapNetworkClientSettings.NetworkPort">
            <summary>
            The port number to connect to.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapNetworkClientSettings.ServerNameOrIP">
            <summary>
            The name of the server to connect to, or the IP address to use.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapNetworkClientSettings.UseIntegratedSecurity">
            <summary>
            Gets if integrated security will be used, or if the default user will be used.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapNetworkClientSettings.UseSsl">
            <summary>
            Gets/Sets if Ssl will be used in the authentication.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.SnapNetworkServer">
            <summary>
            This is a single server socket that handles an individual client connection.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapNetworkServer.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.Net.SnapNetworkServer"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.SnapSocketListener">
            <summary>
            Hosts a <see cref="T:SnapDB.Snap.Services.SnapServer"/> on a network socket.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapSocketListener.#ctor(SnapDB.Snap.Services.Net.SnapSocketListenerSettings,SnapDB.Snap.Services.SnapServer)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Net.SnapSocketListener"/>
            </summary>
            <param name="settings"></param>
            <param name="server"></param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapSocketListener.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.Net.SnapSocketListener"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapSocketListener.GetFullStatus(System.Text.StringBuilder)">
            <summary>
            Gets the status of the <see cref="T:SnapDB.Snap.Services.Net.SnapSocketListener"/>.
            </summary>
            <param name="status"></param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapSocketListener.ProcessDataRequests(System.Object)">
            <summary>
            Processes the client
            </summary>
            <param name="state"></param>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.SnapSocketListenerSettings">
            <summary>
            Contains the basic config for a socket interface.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.DefaultIPAddress">
            <summary>
            Defines the default network IP address for the <see cref="T:SnapDB.Snap.Services.Net.SnapSocketListener"/>.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.DefaultNetworkPort">
            <summary>
            Defines the default network port for a <see cref="T:SnapDB.Snap.Services.Net.SnapSocketListener"/>.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.DefaultServerName">
            <summary>
            A server name that must be supplied at startup before a key exchange occurs.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.DefaultUserCanRead">
            <summary>
            Gets or sets a value indicating whether the default user has read access.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.DefaultUserCanWrite">
            <summary>
            Gets or sets a value indicating whether the default user has write access.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.DefaultUserIsAdmin">
            <summary>
            Gets or sets a value indicating whether the default user is an admin.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.ForceSsl">
            <summary>
            Force the use of SSL for all clients connecting to this socket.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.LocalEndPoint">
            <summary>
            Gets the local <see cref="T:System.Net.IPEndPoint"/> from the values in local IP address TCP port.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.LocalIPAddress">
            <summary>
            The local IP address to host on. Leave empty to bind to all local interfaces.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.LocalTcpPort">
            <summary>
            The local TCP port to host on.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.DefaultUser">
            <summary>
            Gets or sets any default user name that should be used if no other user name can be determined.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.Users">
            <summary>
            A list of all users that are allowed to connect to the historian.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.UserCanSeek">
            <summary>
            Gets or sets any defined user read access control function for seek filters.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to seek.<br/>
            <c>TKey instance</c> - The key of the record being sought.<br/>
            <c>AccessControlSeekPosition</c> - The position of the seek. i.e., <c>Start</c> or <c>End</c>.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to seek; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.UserCanMatch">
            <summary>
            Gets or sets any defined user read access control function for match filters.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to match.<br/>
            <c>TKey instance</c> - The key of the record being matched.<br/>
            <c>TValue instance</c> - The value of the record being matched.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to match; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.UserCanWrite">
            <summary>
            Gets or sets any defined user write access control function.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to write.<br/>
            <c>TKey instance</c> - The key of the record being written.<br/>
            <c>TValue instance</c> - The value of the record being written.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to write; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.Save(System.IO.Stream)">
            <summary>
            Saves data to the specified stream.
            </summary>
            <param name="stream">The stream to which data is saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.Load(System.IO.Stream)">
            <summary>
            Loads data from the specified stream.
            </summary>
            <param name="stream">The stream from which data is loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapSocketListenerSettings.Validate">
            <summary>
            Validates the object's state.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.SnapSocketListenerSettings`2">
            <summary>
            Contains the typed basic config for a socket interface.
            </summary>
            <typeparam name="TKey">The type of keys used in the socket interface.</typeparam>
            <typeparam name="TValue">The type of values used in the socket interface.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings`2.UserCanSeek">
            <summary>
            Gets or sets any defined user read access control function for seek filters.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to seek.<br/>
            <c>TKey instance</c> - The key of the record being sought.<br/>
            <c>AccessControlSeekPosition</c> - The position of the seek. i.e., <c>Start</c> or <c>End</c>.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to seek; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings`2.UserCanMatch">
            <summary>
            Gets or sets any defined user read access control function for match filters.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to match.<br/>
            <c>TKey instance</c> - The key of the record being matched.<br/>
            <c>TValue instance</c> - The value of the record being matched.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to match; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapSocketListenerSettings`2.UserCanWrite">
            <summary>
            Gets or sets any defined user write access control function.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to write.<br/>
            <c>TKey instance</c> - The key of the record being written.<br/>
            <c>TValue instance</c> - The value of the record being written.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to write; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.SnapStreamingClient">
            <summary>
            A client that communicates over a stream.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingClient.#ctor(System.IO.Stream,SnapDB.Security.SecureStreamClientBase,System.Boolean)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Net.SnapStreamingClient"/>
            </summary>
            <param name="stream">The config to use for the client</param>
            <param name="credentials">Authenticates using the supplied user credentials.</param>
            <param name="useSsl">specifies if a ssl connection is desired.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingClient.#ctor">
            <summary>
            Allows derived classes to call <see cref="M:SnapDB.Snap.Services.Net.SnapStreamingClient.Initialize(System.IO.Stream,SnapDB.Security.SecureStreamClientBase,System.Boolean)"/> after the inheriting class
            has done something in the constructor.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingClient.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.Net.SnapNetworkClient"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingClient.GetDatabase(System.String)">
            <summary>
            Gets the database that matches <paramref name="databaseName"/>.
            </summary>
            <param name="databaseName">The name of the database to retrieve.</param>
            <returns>A client database instance for the specified database name.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingClient.GetDatabase``2(System.String)">
            <summary>
            Accesses <see cref="T:SnapDB.Snap.Services.ClientDatabaseBase`2"/> for given <paramref name="databaseName"/>.
            </summary>
            <typeparam name="TKey">The type of key to get.</typeparam>
            <typeparam name="TValue">The type of value associated with the key being acquired.</typeparam>
            <param name="databaseName">The name of the database to access.</param>
            <returns><see cref="T:SnapDB.Snap.Services.ClientDatabaseBase`2"/> for given <paramref name="databaseName"/>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingClient.GetDatabaseInfo">
            <summary>
            Gets basic information for every database connected to the server.
            </summary>
            <returns>A list of <see cref="T:SnapDB.Snap.Services.DatabaseInfo"/> objects representing available databases.</returns>
            <remarks>
            This method retrieves a list of database information objects for all available databases.
            The database information objects contain details about each database, such as its name, key type, and value type.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingClient.Contains(System.String)">
            <summary>
            Determines if <paramref name="databaseName"/> is contained in the database.
            </summary>
            <param name="databaseName">Name of database instance to access.</param>
            <returns>
            <c>true</c> if a database with the specified name exists; otherwise, <c>false</c>.
            </returns>
            <remarks>
            This method checks whether a database with the specified name exists in the client.
            It performs a case-insensitive comparison of the database name.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingClient.Initialize(System.IO.Stream,SnapDB.Security.SecureStreamClientBase,System.Boolean)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Net.SnapStreamingClient"/>
            </summary>
            <param name="stream">The config to use for the client</param>
            <param name="credentials">Authenticates using the supplied user credentials.</param>
            <param name="useSsl">Specifies if an SSL connection is desired.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingClient.GetDatabase``2(System.String,SnapDB.Snap.EncodingDefinition)">
            <summary>
            Accesses <see cref="T:SnapDB.Snap.Services.Net.StreamingClientDatabase`2"/> for given <paramref name="databaseName"/>.
            </summary>
            <param name="databaseName">Name of database instance to access.</param>
            <param name="encodingMethod"></param>
            <returns><see cref="T:SnapDB.Snap.Services.Net.StreamingClientDatabase`2"/> for given <paramref name="databaseName"/>.</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.SnapStreamingServer">
            <summary>
            This is a single server socket that handles an individual client connection.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SnapStreamingServer.RequireSsl">
            <summary>
            Gets or sets a flag indicating whether SSL (Secure Sockets Layer) is required for communication.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingServer.#ctor(SnapDB.Security.SecureStreamServer{SnapDB.Snap.Services.Net.SocketUserPermissions},System.IO.Stream,SnapDB.Snap.Services.SnapServer,System.Boolean)">
            <summary>
            Initializes a new instance of the SnapStreamingServer class.
            </summary>
            <param name="authentication">The SecureStreamServer for handling authentication.</param>
            <param name="stream">The stream for communication.</param>
            <param name="server">The SnapServer associated with this streaming server.</param>
            <param name="requireSsl">Flag indicating whether SSL is required for communication.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingServer.#ctor">
            <summary>
            Allows derived classes to call <see cref="M:SnapDB.Snap.Services.Net.SnapStreamingServer.Initialize(SnapDB.Security.SecureStreamServer{SnapDB.Snap.Services.Net.SocketUserPermissions},System.IO.Stream,SnapDB.Snap.Services.SnapServer,System.Boolean)"/> after the inheriting class
            has done something in the constructor.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapStreamingServer.User">
            <summary>
            Gets or sets user associated with this streaming server.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapStreamingServer.UserCanSeek">
            <summary>
            Gets or sets any defined user read access control function for seek filters.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to seek.<br/>
            <c>TKey instance</c> - The key of the record being sought.<br/>
            <c>AccessControlSeekPosition</c> - The position of the seek. i.e., <c>Start</c> or <c>End</c>.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to seek; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapStreamingServer.UserCanMatch">
            <summary>
            Gets or sets any defined user read access control function for match filters.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to match.<br/>
            <c>TKey instance</c> - The key of the record being matched.<br/>
            <c>TValue instance</c> - The value of the record being matched.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to match; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.SnapStreamingServer.UserCanWrite">
            <summary>
            Gets or sets any defined user write access control function.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to write.<br/>
            <c>TKey instance</c> - The key of the record being written.<br/>
            <c>TValue instance</c> - The value of the record being written.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to write; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingServer.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.Net.SnapStreamingServer"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingServer.ProcessClient">
            <summary>
            This function will verify the connection, create all necessary streams, set timeouts, and catch any exceptions and terminate the connection
            </summary>
            <remarks></remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingServer.Initialize(SnapDB.Security.SecureStreamServer{SnapDB.Snap.Services.Net.SocketUserPermissions},System.IO.Stream,SnapDB.Snap.Services.SnapServer,System.Boolean)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Net.SnapStreamingServer"/>.
            </summary>
            <param name="authentication">The SecureStreamServer for handling authentication.</param>
            <param name="stream">The stream for communication.</param>
            <param name="server">The SnapServer associated with this streaming server.</param>
            <param name="requireSsl">Flag indicating whether SSL is required for communication.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SnapStreamingServer.ProcessRootLevelCommands">
            <summary>
            This function will process any of the packets that come in.  It will throw an error if anything happens.
            This will cause the calling function to close the connection.
            </summary>
            <remarks></remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.SocketUserPermissions">
            <summary>
            Permissions associated with an individual user.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SocketUserPermissions.CanRead">
            <summary>
            Gets if the user can perform read operations
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SocketUserPermissions.CanWrite">
            <summary>
            Gets if the user can perform write operations
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Net.SocketUserPermissions.IsAdmin">
            <summary>
            Gets if the user can perform admin operations
            </summary>
            <remarks>
            Admin operations would include
            Detatching/Deleting/Moving
            archive file.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SocketUserPermissions.Save(System.IO.Stream)">
            <summary>
            Saves the token to a stream.
            </summary>
            <param name="stream">The stream to save to.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.SocketUserPermissions.Load(System.IO.Stream)">
            <summary>
            Loads the token from a stream
            </summary>
            <param name="stream">The stream to load from.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.StreamingClientDatabase`2">
            <summary>
            A socket based client that extends connecting to a database.
            </summary>
            <typeparam name="TKey">The key type.</typeparam>
            <typeparam name="TValue">The value type.</typeparam>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.BulkWriting">
            <summary>
            Handles bulk writing to a streaming interface.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.BulkWriting.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.BulkWriting.Write(`0,`1)">
            <summary>
            Writes to the encoded stream.
            </summary>
            <param name="key">The key to write.</param>
            <param name="value">The value to write.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.PointReader.Cancel">
            <summary>
            Cancels the read operation.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.PointReader.ReadNext(`0,`1)">
            <summary>
            Advances the stream to the next value.
            If before the beginning of the stream, advances to the first value
            </summary>
            <returns><c>true</c> if the advance was successful; otherwise, <c>false</c> if the end of the stream was reached.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.#ctor(SnapDB.IO.RemoteBinaryStream,System.Action,SnapDB.Snap.Services.DatabaseInfo)">
            <summary>
            Creates a streaming wrapper around a database.
            </summary>
            <param name="stream">The remote binary stream used for communication.</param>
            <param name="onDispose">The action to perform when the database is disposed.</param>
            <param name="info">The database information.</param>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.Info">
            <summary>
            Gets basic information about the current Database.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.IsDisposed">
            <summary>
            Gets if has been disposed.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.SetEncodingMode(SnapDB.Snap.EncodingDefinition)">
            <summary>
            Defines the encoding method to use for the server.
            </summary>
            <param name="encoding">The method to encode for the server.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.Read(SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions,SnapDB.Snap.Filters.SeekFilterBase{`0},SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads data from the SortedTreeEngine with the provided read options and server side filters.
            </summary>
            <param name="readerOptions">read options supplied to the reader. Can be null.</param>
            <param name="keySeekFilter">a seek based filter to follow. Can be null.</param>
            <param name="keyMatchFilter">a match based filer to follow. Can be null.</param>
            <returns>A stream that will read the specified data.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.Write(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Writes the tree stream to the database.
            </summary>
            <param name="stream">all of the key/value pairs to add to the database.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.Write(`0,`1)">
            <summary>
            Writes an individual key/value to the sorted tree store.
            </summary>
            <param name="key">The key to be written to the sorted tree store.</param>
            <param name="value">The value associated with the key to be written to the sorted tree store.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.StartBulkWriting">
            <summary>
            Due to the blocking nature of streams, this helper class can substantially
            improve the performance of writing streaming points to the historian.
            </summary>
            <returns>A <see cref="T:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.BulkWriting"/> instance that provides methods for performing bulk write operations.</returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.StartBulkWriting"/> method initializes a bulk writing operation, which allows you
            to efficiently write multiple items to the client database without the overhead of individual write
            operations. You can use the returned <see cref="T:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.BulkWriting"/> instance to perform bulk write operations.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.AttachFilesOrPaths(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Loads the provided files from all of the specified paths.
            </summary>
            <param name="paths">all of the paths of archive files to attach. These can either be a path, or an individual file name.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.GetAllAttachedFiles">
            <summary>
            Enumerates all of the files attached to the database.
            </summary>
            <returns>The enumerated files.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.DetachFiles(System.Collections.Generic.List{System.Guid})">
            <summary>
            Detaches the list of files from the database.
            </summary>
            <param name="files">The file IDs that need to be detached.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.DeleteFiles(System.Collections.Generic.List{System.Guid})">
            <summary>
            Deletes the list of files from the database.
            </summary>
            <param name="files">The files that need to be deleted.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.SoftCommit">
            <summary>
            Forces a soft commit on the database. A soft commit
            only commits data to memory. This allows other clients to read the data.
            While soft committed, this data could be lost during an unexpected shutdown.
            Soft commits usually occur within microseconds.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingClientDatabase`2.HardCommit">
            <summary>
            Forces a commit to the disk subsystem. Once this returns, the data will not
            be lost due to an application crash or unexpected shutdown.
            Hard commits can take 100ms or longer depending on how much data has to be committed.
            This requires two consecutive hardware cache flushes.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Net.StreamingServerDatabase`2">
            <summary>
            This is a single server socket database that is owned by a remote client.
            </summary>
            <typeparam name="TKey"></typeparam>
            <typeparam name="TValue"></typeparam>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.StreamingServerDatabase`2.UserCanSeek">
            <summary>
            Gets or sets any defined user read access control function for seek filters.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to seek.<br/>
            <c>TKey instance</c> - The key of the record being sought.<br/>
            <c>AccessControlSeekPosition</c> - The position of the seek. i.e., <c>Start</c> or <c>End</c>.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to seek; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.StreamingServerDatabase`2.UserCanMatch">
            <summary>
            Gets or sets any defined user read access control function for match filters.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to match.<br/>
            <c>TKey instance</c> - The key of the record being matched.<br/>
            <c>TValue instance</c> - The value of the record being matched.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to match; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Net.StreamingServerDatabase`2.UserCanWrite">
            <summary>
            Gets or sets any defined user write access control function.
            </summary>
            <remarks>
            Function parameters are: <br/>
            <c>string UserId</c> - The user security ID (SID) of the user attempting to write.<br/>
            <c>TKey instance</c> - The key of the record being written.<br/>
            <c>TValue instance</c> - The value of the record being written.<br/>
            <c>bool</c> - Return <c>true</c> if user is allowed to write; otherwise, <c>false</c>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Net.StreamingServerDatabase`2.RunDatabaseLevel">
            <summary>
            This function will verify the connection, create all necessary streams, set timeouts, and catch any exceptions and terminate the connection.
            </summary>
            <returns><c>true</c> if successful; <c>false</c> if needing to exit the socket.</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2">
            <summary>
            Wraps a <see cref="T:SnapDB.Snap.Services.ArchiveTableSummary`2"/> within a <see cref="T:SnapDB.Snap.TreeStream`2"/>
            </summary>
            <typeparam name="TKey"></typeparam>
            <typeparam name="TValue"></typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2.#ctor(SnapDB.Snap.Storage.SortedTreeTable{`0,`1})">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2"/>
            </summary>
            <param name="table">The table to wrap.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2.#ctor(SnapDB.Snap.Services.ArchiveTableSummary{`0,`1})">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2"/>
            </summary>
            <param name="table">The table to wrap.</param>
        </member>
        <member name="P:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2.IsAlwaysSequential">
            <summary>
            Gets a value indicating whether the data source is always sequential.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2.NeverContainsDuplicates">
            <summary>
            Gets a value indicating that the data source never contains duplicates.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2.ReadNext(`0,`1)">
            <summary>
            Reads the next key-value pair from the underlying data source using the scanner.
            </summary>
            <param name="key">The key to read.</param>
            <param name="value">The value to read.</param>
            <returns>True if the read operation was successful, otherwise false.</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2">
            <summary>
            Represents a buffered stream for reading data from an archive table, where TKey and TValue are specific SnapTypeBase types.
            </summary>
            <typeparam name="TKey">The key type for the archive data.</typeparam>
            <typeparam name="TValue">The value type for the archive data.</typeparam>
        </member>
        <member name="F:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.CacheIsValid">
            <summary>
            Gets or sets a flag indicating whether the cache is valid.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.CacheKey">
            <summary>
            Gets or sets the cached key.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.CacheValue">
            <summary>
            Gets or sets the cached value.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.Scanner">
            <summary>
            Gets or sets the sorted tree scanner used for reading data.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.#ctor(System.Int32,SnapDB.Snap.Services.ArchiveTableSummary{`0,`1})">
            <summary>
            Creates an instance of the BufferedArchiveStream class with the specified index and table.
            </summary>
            <param name="index">The index value used to disassociate the archive file.</param>
            <param name="table">The ArchiveTableSummary associated with the stream.</param>
        </member>
        <member name="P:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.Index">
            <summary>
            An index value that is used to disassociate the archive file.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.Dispose">
            <summary>
            Disposes of the resources used by the BufferedArchiveStream.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.UpdateCachedValue">
            <summary>
            Updates the cached value by peeking at the next key-value pair in the scanner.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.SkipToNextKeyAndUpdateCachedValue">
            <summary>
            Skips to the next key in the scanner and updates the cached value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2.SeekToKeyAndUpdateCacheValue(`0)">
            <summary>
            Seeks to the specified key in the scanner and updates the cached value.
            </summary>
            <param name="key">The key to seek to.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.Reader.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Services.Reader"/> namespace organizes all common SnapDB library functionality related to reading capabilities
            e.g., the <see cref="T:SnapDB.Snap.Services.Reader.ArchiveTreeStreamWrapper`2"/> class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.CancelReader">
            <summary>
            Provides a thread safe way to cancel a reader.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.VerifyArchiveStreamSortingOrder">
            <summary>
            Will verify that the stream is in the proper order and remove any duplicates that were found.
            May be called after every single read, but better to be called
            when a ReadWhile function returns false.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.AdvanceSeekableFilter(System.Boolean,`0)">
            <summary>
            Does a seek operation on the current stream when there is a seek filter on the reader.
            </summary>
            <returns>
            True if the provided key is still valid within the next best fitting frame.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.CompareStreams(SnapDB.Snap.Services.Reader.BufferedArchiveStream{`0,`1},SnapDB.Snap.Services.Reader.BufferedArchiveStream{`0,`1})">
            <summary>
            Compares two Archive Streams together for proper sorting.
            </summary>
            <param name="item1">The first stream to compare.</param>
            <param name="item2">The second stream to compare.</param>
            <returns>
            A value indicating the relative order of the streams based on their cache keys:
            - Less than 0 if <paramref name="item1"/> is less than <paramref name="item2"/>.
            - Greater than 0 if <paramref name="item1"/> is greater than <paramref name="item2"/>.
            - 0 if <paramref name="item1"/> and <paramref name="item2"/> are equal or their caches are invalid.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.CompareStreams(SnapDB.Snap.Services.Reader.BufferedArchiveStream{`0,`1},SnapDB.Snap.Services.Reader.BufferedArchiveStream{`0,`1})"/> method is used to compare two <see cref="T:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2"/>
            instances based on their cache keys. If both streams have invalid caches, they are considered equal.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.SeekToKey(`0)">
            <summary>
            Does an unconditional seek operation to the provided key.
            </summary>
            <param name="key"></param>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.SeekAllArchiveStreamsForward(`0)">
            <summary>
            Seeks the streams only in the forward direction.
            This means that if the current position in any stream is invalid or past this point,
            the stream will not seek backwards.
            </summary>
            <param name="key">the key to seek to</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.RemoveDuplicatesIfExists">
            <summary>
            Checks the first 2 Archive Streams for a duplicate entry. If one exists, then removes the duplicate and resorts the list.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.RemoveDuplicatesFromList">
            <summary>
            Call this function when the same point exists in multiple archive files. It will
            read past the duplicate point in all other archive files and then resort the tables.
            Assumes that the archiveStream's cached value is current.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SequentialReaderStream`2.SetReadWhileUpperBoundsValue">
            <summary>
            Sets the read while upper bounds value.
            Which is the lesser of
            The first point in the adjacent table or
            The end of the current seek window.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderBaseExtensionMethods">
            <summary>
            Provides extension methods for <see cref="T:SnapDB.Snap.IDatabaseReader`2"/> to simplify reading from a sorted tree.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderBaseExtensionMethods.ReadSingleValue``2(SnapDB.Snap.IDatabaseReader{``0,``1},System.UInt64,System.UInt64)">
            <summary>
            Reads a single value from the sorted tree based on the provided timestamp and point ID.
            </summary>
            <typeparam name="TKey">The type of keys in the sorted tree.</typeparam>
            <typeparam name="TValue">The type of values in the sorted tree.</typeparam>
            <param name="reader">The database reader.</param>
            <param name="timestamp">The timestamp for the desired value.</param>
            <param name="pointId">The point ID for the desired value.</param>
            <returns>A <see cref="T:SnapDB.Snap.TreeStream`2"/> containing the single value found.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderBaseExtensionMethods.Read``2(SnapDB.Snap.IDatabaseReader{``0,``1},System.UInt64)">
            <summary>
            Reads data from the database reader using a specified timestamp.
            </summary>
            <typeparam name="TKey">The key type for the database reader.</typeparam>
            <typeparam name="TValue">The value type for the database reader.</typeparam>
            <param name="reader">The IDatabaseReader to read data from.</param>
            <param name="timestamp">The timestamp associated with the data.</param>
            <returns>A TreeStream containing the requested data.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderBaseExtensionMethods.Read``2(SnapDB.Snap.IDatabaseReader{``0,``1},SnapDB.Snap.Filters.SeekFilterBase{``0})">
            <summary>
            Reads data from the database reader using a specified time filter.
            </summary>
            <typeparam name="TKey">The key type for the database reader.</typeparam>
            <typeparam name="TValue">The value type for the database reader.</typeparam>
            <param name="reader">The IDatabaseReader to read data from.</param>
            <param name="timeFilter">The time filter used to select data.</param>
            <returns>A TreeStream containing the requested data.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderBaseExtensionMethods.Read``2(SnapDB.Snap.IDatabaseReader{``0,``1})">
            <summary>
            Reads all available data from the database reader.
            </summary>
            <typeparam name="TKey">The key type for the database reader.</typeparam>
            <typeparam name="TValue">The value type for the database reader.</typeparam>
            <param name="reader">The IDatabaseReader to read data from.</param>
            <returns>A TreeStream containing all available data.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderBaseExtensionMethods.Read``2(SnapDB.Snap.IDatabaseReader{``0,``1},System.UInt64,System.UInt64)">
            <summary>
            Reads data from the database reader using a specified time range.
            </summary>
            <typeparam name="TKey">The key type for the database reader.</typeparam>
            <typeparam name="TValue">The value type for the database reader.</typeparam>
            <param name="reader">The IDatabaseReader to read data from.</param>
            <param name="firstTime">The starting timestamp of the time range.</param>
            <param name="lastTime">The ending timestamp of the time range.</param>
            <returns>A TreeStream containing the requested data within the specified time range.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderBaseExtensionMethods.Read``2(SnapDB.Snap.IDatabaseReader{``0,``1},System.UInt64,System.UInt64,System.Collections.Generic.IEnumerable{System.UInt64})">
            <summary>
            Reads data from the database reader using a specified time range and point IDs.
            </summary>
            <typeparam name="TKey">The key type for the database reader.</typeparam>
            <typeparam name="TValue">The value type for the database reader.</typeparam>
            <param name="reader">The IDatabaseReader to read data from.</param>
            <param name="firstTime">The starting timestamp of the time range.</param>
            <param name="lastTime">The ending timestamp of the time range.</param>
            <param name="pointIds">A collection of point IDs to filter the data.</param>
            <returns>A TreeStream containing the requested data within the specified time range and point IDs.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderBaseExtensionMethods.Read``2(SnapDB.Snap.IDatabaseReader{``0,``1},System.DateTime,System.DateTime,System.Collections.Generic.IEnumerable{System.UInt64})">
            <summary>
            Reads data from the database reader using a specified time range and point IDs, using DateTime values for the time range.
            </summary>
            <typeparam name="TKey">The key type for the database reader.</typeparam>
            <typeparam name="TValue">The value type for the database reader.</typeparam>
            <param name="reader">The IDatabaseReader to read data from.</param>
            <param name="firstTime">The starting DateTime of the time range.</param>
            <param name="lastTime">The ending DateTime of the time range.</param>
            <param name="pointIds">A collection of point IDs to filter the data.</param>
            <returns>A TreeStream containing the requested data within the specified time range and point IDs.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderBaseExtensionMethods.Read``2(SnapDB.Snap.IDatabaseReader{``0,``1},SnapDB.Snap.Filters.SeekFilterBase{``0},System.Collections.Generic.IEnumerable{System.UInt64})">
            <summary>
            Reads data from the database reader using a specified time filter and point IDs.
            </summary>
            <typeparam name="TKey">The key type for the database reader.</typeparam>
            <typeparam name="TValue">The value type for the database reader.</typeparam>
            <param name="reader">The IDatabaseReader to read data from.</param>
            <param name="key1">The time filter to use.</param>
            <param name="pointIds">A collection of point IDs to filter the data.</param>
            <returns>A TreeStream containing the requested data within the specified time filter and point IDs.</returns>
        </member>
        <member name="T:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions">
            <summary>
            Contains the options to use for executing an individual read request.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions.#ctor(System.TimeSpan,System.Int64,System.Int64,System.Int64)">
            <summary>
            Creates <see cref="T:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions"/>.
            </summary>
            <param name="timeout">the time before a query will end prematurely</param>
            <param name="maxReturnedCount">the maximum number of Key/Values to send to the client before ending prematurely</param>
            <param name="maxScanCount">the maximum number of points for the database to read before ending prematurely</param>
            <param name="maxSeekCount">the maximum seeks that will occur before ending prematurely</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions.#ctor(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Creates a new <see cref="T:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions"/> from a stream
            </summary>
            <param name="stream">the stream to read from</param>
        </member>
        <member name="P:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions.MaxReturnedCount">
            <summary>
            The maximum number of points to return. 0 means no limit.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions.MaxScanCount">
            <summary>
            The maximum number of points to scan to get the results set.
            This includes any point that was filtered
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions.MaxSeekCount">
            <summary>
            The maximum number of seeks permitted
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions.Timeout">
            <summary>
            The time before the query times out.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions.Save(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Writes this data to the <paramref name="stream"/>.
            </summary>
            <param name="stream">the stream to write data to</param>
        </member>
        <member name="P:SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions.Default">
            <summary>
            Default options. Same as default constructor
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.UnionReader`2.VerifyArchiveStreamSortingOrder">
            <summary>
            Will verify that the stream is in the proper order and remove any duplicates that were found.
            May be called after every single read, but better to be called
            when a ReadWhile function returns false.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.UnionReader`2.CompareStreams(SnapDB.Snap.Services.Reader.BufferedArchiveStream{`0,`1},SnapDB.Snap.Services.Reader.BufferedArchiveStream{`0,`1})">
            <summary>
            Compares two Archive Streams together for proper sorting.
            </summary>
            <returns>
            A value indicating the relative order of the streams based on their cache keys:
            - Less than 0 if <paramref name="item1"/> is less than <paramref name="item2"/>.
            - Greater than 0 if <paramref name="item1"/> is greater than <paramref name="item2"/>.
            - 0 if <paramref name="item1"/> and <paramref name="item2"/> are equal or their caches are invalid.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.Reader.UnionReader`2.CompareStreams(SnapDB.Snap.Services.Reader.BufferedArchiveStream{`0,`1},SnapDB.Snap.Services.Reader.BufferedArchiveStream{`0,`1})"/> method is used to compare two <see cref="T:SnapDB.Snap.Services.Reader.BufferedArchiveStream`2"/>
            instances based on their cache keys. If both streams have invalid caches, they are considered equal.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.UnionReader`2.SeekToKey(`0)">
            <summary>
            Does an unconditional seek operation to the provided key.
            </summary>
            <param name="key"></param>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.UnionReader`2.RemoveDuplicatesIfExists">
            <summary>
            Checks the first 2 Archive Streams for a duplicate entry. If one exists, then removes the duplicate and resorts the list.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.UnionReader`2.RemoveDuplicatesFromList">
            <summary>
            Call this function when the same point exists in multiple archive files. It will
            read past the duplicate point in all other archive files and then resort the tables.
            Assumes that the archiveStream's cached value is current.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Reader.UnionReader`2.SetReadWhileUpperBoundsValue">
            <summary>
            Sets the read while upper bounds value.
            Which is the lesser of
            The first point in the adjacent table or
            The end of the current seek window.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.ServerDatabaseSettings">
            <summary>
            The settings for a <see cref="T:SnapDB.Snap.Services.SnapServerDatabase`2"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ServerDatabaseSettings.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.Snap.Services.ServerDatabaseSettings"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerDatabaseSettings.ArchiveList">
            <summary>
            The settings for the ArchiveList.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerDatabaseSettings.DatabaseName">
            <summary>
            The name associated with the database.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerDatabaseSettings.KeyType">
            <summary>
            Gets the type of the key component.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerDatabaseSettings.RolloverLog">
            <summary>
            The settings for the rollover log.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerDatabaseSettings.StreamingEncodingMethods">
            <summary>
            Gets the supported streaming methods.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerDatabaseSettings.SupportsWriting">
            <summary>
            Gets if writing or file combination will be enabled.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerDatabaseSettings.ValueType">
            <summary>
            Gets the type of the value component.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerDatabaseSettings.WriteProcessor">
            <summary>
            Settings for the writer -- <c>null</c> if the server does not support writing.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ServerDatabaseSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration to a stream.
            </summary>
            <param name="stream">The stream where the configuration will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ServerDatabaseSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration from a stream.
            </summary>
            <param name="stream">The stream from which the configuration will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.ServerDatabaseSettings.Validate">
            <summary>
            Validates the configuration.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.ServerSettings">
            <summary>
            Settings for <see cref="T:SnapDB.Snap.Services.SnapServer"/>.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ServerSettings.m_databases">
            <summary>
            Lists all of the databases that are part of the server.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.ServerSettings.m_listeners">
            <summary>
            All of the socket based listeners for the database.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ServerSettings.#ctor">
            <summary>
            Creates a new instance of <see cref="T:SnapDB.Snap.Services.ServerSettings"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerSettings.Databases">
            <summary>
            Lists all of the databases that are part of the server.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.ServerSettings.Listeners">
            <summary>
            Lists all of the socket based listeners for the database.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.ServerSettings.Save(System.IO.Stream)">
            <summary>
            Saves the current <see cref="T:SnapDB.Snap.Services.ServerSettings"/> instance to a provided <see cref="T:System.IO.Stream"/>.
            </summary>
            <param name="stream">The <see cref="T:System.IO.Stream"/> to which the settings will be saved.</param>
            <remarks>
            This method serializes the <see cref="T:SnapDB.Snap.Services.ServerSettings"/> instance and writes it to the specified <paramref name="stream"/>.
            It includes information about databases and listeners within the server settings.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ServerSettings.Load(System.IO.Stream)">
            <summary>
            Loads server settings from a given <see cref="T:System.IO.Stream"/>.
            </summary>
            <param name="stream">The <see cref="T:System.IO.Stream"/> containing the server settings to load.</param>
            <remarks>
            This method deserializes server settings from the provided <paramref name="stream"/> and updates the current instance.
            The method handles different versions of serialized data.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ServerSettings.Validate">
            <summary>
            Validates the server settings by validating each contained database and listener settings.
            </summary>
            <remarks>
            This method iterates through the databases and listener settings within the server settings
            and validates each of them by calling their respective <c>Validate</c> methods.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.ServerSettings.SnapDB#Snap#Services#IToServerSettings#ToServerSettings">
            <summary>
            Converts an instance of <see cref="T:SnapDB.Snap.Services.ServerSettings"/> to its interface representation <see cref="T:SnapDB.Snap.Services.IToServerSettings"/>.
            </summary>
            <returns>
            An instance of <see cref="T:SnapDB.Snap.Services.ServerSettings"/> as an interface <see cref="T:SnapDB.Snap.Services.IToServerSettings"/>.
            </returns>
            <remarks>
            This method allows the <see cref="T:SnapDB.Snap.Services.ServerSettings"/> to be cast as an interface <see cref="T:SnapDB.Snap.Services.IToServerSettings"/>.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.SettingsBase`1">
            <summary>
            Core functionality for any setting of <see cref="T:SnapDB.Snap.Services.SnapServer"/> or any child setting.
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.SettingsBase`1.Save(System.IO.Stream)">
            <summary>
            Saves the setting to the supplied stream
            </summary>
            <param name="stream">the stream to write to</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SettingsBase`1.Load(System.IO.Stream)">
            <summary>
            Loads the settings from the supplied stream
            </summary>
            <param name="stream">the stream to load from</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SettingsBase`1.Validate">
            <summary>
            Validates the settings before they are loaded by the main class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.SnapClient">
            <summary>
            Represents a client connection to a <see cref="T:SnapDB.Snap.Services.SnapServer"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapClient.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Services.SnapClient"/> class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapClient.GetDatabase(System.String)">
            <summary>
            Gets the database that matches <paramref name="databaseName"/>.
            </summary>
            <param name="databaseName">The case-insensitive name of the database to retrieve.</param>
            <returns>
            A <see cref="T:SnapDB.Snap.Services.ClientDatabaseBase"/> instance representing the requested client database.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.SnapClient.GetDatabase(System.String)"/> method retrieves a client database with the specified <paramref name="databaseName"/>.
            If a database with the specified name does not exist, this method may return null or throw an exception.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapClient.GetDatabase``2(System.String)">
            <summary>
            Accesses <see cref="T:SnapDB.Snap.Services.ClientDatabaseBase`2"/> for given <paramref name="databaseName"/>.
            </summary>
            <param name="databaseName">Name of database instance to access.</param>
            <typeparam name="TKey">The type of key to access.</typeparam>
            <typeparam name="TValue">The type of value associated with the key to access.</typeparam>
            <returns><see cref="T:SnapDB.Snap.Services.ClientDatabaseBase`2"/> for given <paramref name="databaseName"/>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapClient.GetDatabaseInfo">
            <summary>
            Gets basic information for every database connected to the server.
            </summary>
            <returns>
            A list of <see cref="T:SnapDB.Snap.Services.DatabaseInfo"/> objects containing information about available databases.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.SnapClient.GetDatabaseInfo"/> method provides a list of <see cref="T:SnapDB.Snap.Services.DatabaseInfo"/> objects
            that contain information about the available databases in the system.
            Each <see cref="T:SnapDB.Snap.Services.DatabaseInfo"/> object typically includes details such as database name, key type,
            value type, and other relevant metadata.
            </remarks>
            <seealso cref="T:SnapDB.Snap.Services.DatabaseInfo"/>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapClient.Contains(System.String)">
            <summary>
            Determines if <paramref name="databaseName"/> is contained in the database.
            </summary>
            <param name="databaseName">The name of the database to check for existence.</param>
            <returns>
            <c>true</c> if a database with the specified name exists; otherwise, <c>false</c>.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.SnapClient.Contains(System.String)"/> method allows you to check whether a database with the specified
            <paramref name="databaseName"/> exists within the system. It returns <c>true</c> if a database
            with the provided name is found; otherwise, it returns <c>false</c>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapClient.Connect(SnapDB.Snap.Services.SnapServer)">
            <summary>
            Connects to a local <see cref="T:SnapDB.Snap.Services.SnapServer"/>.
            </summary>
            <param name="host">The SnapServer host to connect to.</param>
            <returns>
            A <see cref="T:SnapDB.Snap.Services.SnapClient"/> instance representing the connection to the specified SnapServer host.
            </returns>
            <remarks>
            The Connect method allows you to establish a connection to a SnapServer host.
            You should provide the <paramref name="host"/> as a parameter, and it returns a <see cref="T:SnapDB.Snap.Services.SnapClient"/>
            instance that you can use to interact with the server.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapClient.Connect(System.String,System.Int32)">
            <summary>
            Connects to a server over a network socket.
            </summary>
            <param name="serverOrIP">The name of the server to connect to, or the IP address to use.</param>
            <param name="port">The port number to connect to.</param>
            <returns>A <see cref="T:SnapDB.Snap.Services.SnapClient"/></returns>
        </member>
        <member name="T:SnapDB.Snap.Services.SnapServer">
            <summary>
            Hosts all of the components of a SortedTreeStore.
            </summary>
            <remarks>
            A centralized server hosting model for a SortedTreeStore.
            This class contains all of the databases, client connections,
            sockets, user authentication, and core settings for the SortedTreeStore.
            </remarks>
        </member>
        <member name="F:SnapDB.Snap.Services.SnapServer.m_clients">
            <summary>
            Contains a list of all clients such that a strong reference will not be maintained.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.SnapServer.m_databases">
            <summary>
            Contains a list of databases that are UPPER case names.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.SnapServer.m_sockets">
            <summary>
            All of the socket listener per IPEndPoint.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.#ctor">
            <summary>
            Creates an empty server instance
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.#ctor(SnapDB.Snap.Services.IToServerDatabaseSettings)">
            <summary>
            Creates a new instance of <see cref="T:SnapDB.Snap.Services.SnapServer"/> and adds the supplied database
            </summary>
            <param name="settings">The settings to apply to the <see cref="T:SnapDB.Snap.Services.SnapServer"/>.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.#ctor(SnapDB.Snap.Services.IToServerSettings)">
            <summary>
            Creates a new instance of <see cref="T:SnapDB.Snap.Services.SnapServer"/>
            </summary>
            <param name="settings">The settings to apply to the new <see cref="T:SnapDB.Snap.Services.SnapServer"/>.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.SnapServer"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.AddDatabase(SnapDB.Snap.Services.IToServerDatabaseSettings)">
            <summary>
            Adds a database to the server using the provided database configuration.
            </summary>
            <param name="databaseConfig">The database configuration to add to the server.</param>
            <remarks>
            This method adds a new database to the server based on the provided <paramref name="databaseConfig"/>.
            It converts the database configuration from an <see cref="T:SnapDB.Snap.Services.IToServerDatabaseSettings"/> object to
            a <see cref="T:SnapDB.Snap.Services.ServerDatabaseSettings"/> object before adding it to the server.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.AddDatabase(SnapDB.Snap.Services.ServerDatabaseSettings)">
            <summary>
            Adds a database to the server
            </summary>
            <param name="databaseConfig">The configuration settings for the database.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.AddSocketListener(SnapDB.Snap.Services.Net.SnapSocketListenerSettings)">
            <summary>
            Adds the socket interface to the database.
            </summary>
            <param name="socketSettings">The config data for the socket listener.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.RemoveDatabase(System.String)">
            <summary>
            Unloads the database name.
            </summary>
            <param name="database">The name of the database to be removed.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.UnloadSocket(System.Net.IPEndPoint)">
            <summary>
            Unloads the specified socket interface.
            </summary>
            <param name="socketEndpoint">The endpoint of the socket listener.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.GetFullStatus(System.Text.StringBuilder,System.Int32)">
            <summary>
            Gets the status of the server.
            </summary>
            <param name="status">Target status output <see cref="T:System.Text.StringBuilder"/>.</param>
            <param name="maxFileListing">Maximum file listing.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.GetDatabase(System.String)">
            <summary>
            Gets the database that matches <paramref name="databaseName"/>
            </summary>
            <param name="databaseName">The name of the database to retrieve.</param>
            <returns>
            A <see cref="T:SnapDB.Snap.Services.SnapServerDatabaseBase"/> instance representing the database with the specified name,
            or <c>null</c> if no database with that name exists.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.SnapServer.GetDatabase(System.String)"/> method allows you to retrieve a SnapServer database by providing its name as a parameter.
            It returns a <see cref="T:SnapDB.Snap.Services.SnapServerDatabaseBase"/> instance that represents the database with the specified name.
            If no database with that name exists, it returns <c>null</c>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.Contains(System.String)">
            <summary>
            Determines if <paramref name="databaseName"/> is contained in the database.
            </summary>
            <param name="databaseName">Name of database instance to access.</param>
            <returns>
            A <see cref="T:SnapDB.Snap.Services.SnapServerDatabaseBase"/> instance representing the database with the specified name,
            or <c>null</c> if no database with that name exists.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.SnapServer.GetDatabase(System.String)"/> method allows you to retrieve a SnapServer database by providing its name as a parameter.
            It returns a <see cref="T:SnapDB.Snap.Services.SnapServerDatabaseBase"/> instance that represents the database with the specified name.
            If no database with that name exists, it returns <c>null</c>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.GetDatabaseInfo">
            <summary>
            Gets basic information for every database connected to the server.
            </summary>
            <returns>
            A list of <see cref="T:SnapDB.Snap.Services.DatabaseInfo"/> objects representing information about each SnapServer database.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.SnapServer.GetDatabaseInfo"/> method allows you to retrieve a list of database information for all SnapServer databases.
            It returns a list of <see cref="T:SnapDB.Snap.Services.DatabaseInfo"/> objects, each containing details about a specific database.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.RegisterClient(SnapDB.Snap.Services.SnapServer.Client)">
            <summary>
            Registers a client with the server host.
            </summary>
            <param name="client"></param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.UnRegisterClient(SnapDB.Snap.Services.SnapServer.Client)">
            <summary>
            UnRegisters a client with the server host.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.SnapServer.Client">
            <summary>
            A client wrapper around a <see cref="T:SnapDB.Snap.Services.SnapServer"/>. This protects
            the server from a client being able to manipulate it.
            (For example. Call the IDispose.Dispose method)
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.Client.#ctor(SnapDB.Snap.Services.SnapServer)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.SnapServer.Client"/>
            </summary>
            <param name="server">The collection to wrap.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.Client.GetDatabase(System.String)">
            <summary>
            Gets the database that matches <paramref name="databaseName"/>.
            </summary>
            <param name="databaseName">The case insensitive name of the database.</param>
            <returns>The database that matches <paramref name="databaseName"/>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.Client.GetDatabase``2(System.String)">
            <summary>
            Accesses <see cref="T:SnapDB.Snap.Services.ClientDatabaseBase`2"/> for given <paramref name="databaseName"/>.
            </summary>
            <param name="databaseName">Name of database instance to access.</param>
            <returns><see cref="T:SnapDB.Snap.Services.ClientDatabaseBase`2"/> for given <paramref name="databaseName"/>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.Client.Contains(System.String)">
            <summary>
            Determines if <paramref name="databaseName"/> is contained in the database.
            </summary>
            <param name="databaseName">Name of database instance to access.</param>
            <returns>
            <c>true</c> if the database with the specified name exists within the server; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.Client.GetDatabaseInfo">
            <summary>
            Gets basic information for every database connected to the server.
            </summary>
            <returns>A list of <see cref="T:SnapDB.Snap.Services.DatabaseInfo"/> objects representing database information.</returns>
            <exception cref="T:System.ObjectDisposedException">Thrown if the server settings object has been disposed.</exception>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServer.Client.Unregister(SnapDB.Snap.Services.ClientDatabaseBase)">
            <summary>
            Unregisters a client database.
            </summary>
            <param name="client">The client database to unregister.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.SnapServerDatabase`2">
            <summary>
            Creates an engine for reading/writing data from a SortedTreeStore.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.#ctor(SnapDB.Snap.Services.ServerDatabaseSettings)">
            <summary>
            Initializes a new instance of the SnapServerDatabase class with the specified settings.
            </summary>
            <param name="settings">The settings used to configure the SnapServerDatabase.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="settings"/> is null.</exception>
        </member>
        <member name="P:SnapDB.Snap.Services.SnapServerDatabase`2.Info">
            <summary>
            Gets basic information about the current Database.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.SnapServerDatabase`2"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.GetFullStatus(System.Text.StringBuilder,System.Int32)">
            <summary>
            Gets status information for the SortedTreeEngine
            </summary>
            <param name="status">Target status output <see cref="T:System.Text.StringBuilder"/>.</param>
            <param name="maxFileListing">Maximum file listing.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.CreateClientDatabase(SnapDB.Snap.Services.SnapClient,System.Action{SnapDB.Snap.Services.ClientDatabaseBase})">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.ClientDatabaseBase"/>
            </summary>
            <param name="client">The SnapClient instance that will use the created database.</param>
            <param name="onDispose">An optional action to execute when the client database is disposed.</param>
            <returns>
            A new <see cref="T:SnapDB.Snap.Services.ClientDatabaseBase"/> instance associated with this SnapServer.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.AttachFilesOrPaths(System.Collections.Generic.IEnumerable{System.String})">
            <summary>
            Loads the provided files from all of the specified paths.
            </summary>
            <param name="paths">All of the paths of archive files to attach. These can either be a path, or an individual file name.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.SoftCommit">
            <summary>
            Forces a soft commit on the database. A soft commit
            only commits data to memory. This allows other clients to read the data.
            While soft committed, this data could be lost during an unexpected shutdown.
            Soft commits usually occur within microseconds.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.HardCommit">
            <summary>
            Forces a commit to the disk subsystem. Once this returns, the data will not
            be lost due to an application crash or unexpected shutdown.
            Hard commits can take 100ms or longer depending on how much data has to be committed.
            This requires two consecutive hardware cache flushes.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.SnapServerDatabase`2.ClientDatabase">
            <summary>
            A client database that is one part of a  <see cref="T:SnapDB.Snap.Services.SnapServer.Client"/> that wraps a <see cref="T:SnapDB.Snap.Services.SnapServerDatabase`2"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.SnapServerDatabase`2.ClientDatabase.Info">
            <summary>
            Gets basic information about the current Database.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.SnapServerDatabase`2.ClientDatabase.IsDisposed">
            <summary>
            Gets if has been disposed.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.ClientDatabase.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.ClientDatabase.SoftCommit">
            <summary>
            Forces a soft commit on the database. A soft commit
            only commits data to memory. This allows other clients to read the data.
            While soft committed, this data could be lost during an unexpected shutdown.
            Soft commits usually occur within microseconds.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.ClientDatabase.HardCommit">
            <summary>
            Forces a commit to the disk subsystem. Once this returns, the data will not
            be lost due to an application crash or unexpected shutdown.
            Hard commits can take 100ms or longer depending on how much data has to be committed.
            This requires two consecutive hardware cache flushes.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.ClientDatabase.Read(SnapDB.Snap.Services.Reader.SortedTreeEngineReaderOptions,SnapDB.Snap.Filters.SeekFilterBase{`0},SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads data from the SortedTreeEngine with the provided read options and server side filters.
            </summary>
            <param name="readerOptions">read options supplied to the reader. Can be null.</param>
            <param name="keySeekFilter">a seek based filter to follow. Can be null.</param>
            <param name="keyMatchFilter">a match based filer to follow. Can be null.</param>
            <returns>A stream that will read the specified data.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.ClientDatabase.Write(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Writes the tree stream to the database.
            </summary>
            <param name="stream">all of the key/value pairs to add to the database.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabase`2.ClientDatabase.Write(`0,`1)">
            <summary>
            Writes an individual key/value to the sorted tree store.
            </summary>
            <param name="key"></param>
            <param name="value"></param>
        </member>
        <member name="T:SnapDB.Snap.Services.SnapServerDatabaseBase">
            <summary>
            Represents the server side of a single database.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabaseBase.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.SnapServerDatabaseBase"/>
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.SnapServerDatabaseBase.Info">
            <summary>
            Gets basic information about the current Database.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabaseBase.CreateClientDatabase(SnapDB.Snap.Services.SnapClient,System.Action{SnapDB.Snap.Services.ClientDatabaseBase})">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.ClientDatabaseBase"/>.
            </summary>
            <param name="client">The SnapClient associated with the new client-specific database.</param>
            <param name="onDispose">An action to be executed when the client-specific database is disposed.</param>
            <returns>
            A new instance of the client-specific database derived from <see cref="T:SnapDB.Snap.Services.ClientDatabaseBase"/>.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.SnapServerDatabaseBase.CreateClientDatabase(SnapDB.Snap.Services.SnapClient,System.Action{SnapDB.Snap.Services.ClientDatabaseBase})"/> method is used to create a new instance of a client-specific database
            associated with this SnapServerDatabase. It takes a SnapClient as a parameter to associate the new database with
            a specific client. Additionally, an optional action can be provided to be executed when the client-specific database is disposed.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabaseBase.GetFullStatus(System.Text.StringBuilder,System.Int32)">
            <summary>
            Gets the full status text for the server.
            </summary>
            <param name="status">Target status output <see cref="T:System.Text.StringBuilder"/>.</param>
            <param name="maxFileListing">Maximum file listing.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabaseBase.GetSourceDetails">
            <summary>
            Retrieves source details for logging purposes, including database name, key type, and value type.
            </summary>
            <returns>A <see cref="T:Gemstone.Diagnostics.LogStackMessages"/> object containing source details if available; otherwise, an empty object.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.SnapServerDatabaseBase.CreateDatabase(SnapDB.Snap.Services.ServerDatabaseSettings)">
            <summary>
            Creates a new server database from the provided config.
            </summary>
            <param name="databaseConfig">The configuration settings for the database.</param>
            <returns>
            A new instance of SnapServerDatabaseBase derived from <see cref="T:SnapDB.Snap.Services.SnapServerDatabaseBase"/>.
            </returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.SnapServerDatabaseBase.CreateDatabase(SnapDB.Snap.Services.ServerDatabaseSettings)"/> method is used to create a new instance of a SnapServerDatabaseBase
            with the specified configuration settings. It accepts a <see cref="T:SnapDB.Snap.Services.ServerDatabaseSettings"/> object
            containing configuration parameters such as key and value types, and returns a new instance of the database.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.ArchiveInitializer`2">
            <summary>
            Creates new archive files based on user settings.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializer`2.#ctor(SnapDB.Snap.Services.Writer.ArchiveInitializerSettings)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializer`2"/>
            </summary>
            <param name="settings"></param>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.ArchiveInitializer`2.Settings">
            <summary>
            Gets current settings.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializer`2.UpdateSettings(SnapDB.Snap.Services.Writer.ArchiveInitializerSettings)">
            <summary>
            Replaces the existing settings with this new set.
            </summary>
            <param name="settings">The new settings that will replace the old settings.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializer`2.CreateArchiveFile(System.Int64)">
            <summary>
            Creates a new <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> based on the settings passed to this class.
            Once created, it is up to he caller to make sure that this class is properly disposed of.
            </summary>
            <param name="estimatedSize">
            An optional estimated size (in bytes) for the archive file. Use a negative value to indicate no specific estimation.
            </param>
            <returns>
            A new instance of <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> for archiving data.
            </returns>
            <remarks>
            This creates a new <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> instance
            for archiving data. It can create the table in-memory or in a file, depending on the <see cref="T:SnapDB.Snap.Services.ServerSettings"/>
            configuration. If the estimatedSize is specified (non-negative), the method attempts to create the table in a file
            with enough space to accommodate the estimated data size.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializer`2.CreateArchiveFile(`0,`0,System.Int64)">
            <summary>
            Creates a new <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> based on the settings passed to this class.
            Once created, it is up to he caller to make sure that this class is properly disposed of.
            </summary>
            <param name="startKey">The key to start at.</param>
            <param name="endKey">The key to end at.</param>
            <param name="estimatedSize">
            An optional estimated size (in bytes) for the archive file. Use a negative value to indicate no specific estimation.
            </param>
            <returns>
            A new instance of <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> for archiving data within the specified key range.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializer`2.CreateArchiveName(System.String)">
            <summary>
            Creates a new random file in one of the provided folders in a round robin fashion.
            </summary>
            <param name="path">The base path where the archive file will be created.</param>
            <returns>
            A unique archive file name based on the specified path, server settings, and current timestamp.
            </returns>
            <remarks>
            This method generates a unique archive file name by combining the provided base
            path, server settings prefix, a new GUID, and the current timestamp. This ensures that the created archive file
            has a distinct and recognizable name.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializer`2.CreateArchiveName(System.String,`0,`0)">
            <summary>
            Creates a new random file in one of the provided folders in a round robin fashion.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings">
            <summary>
            Settings for <see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializer`2"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.DesiredRemainingSpace">
            <summary>
            The desired number of bytes to leave on the disk after a rollover has completed.
            Otherwise, pick a different directory or throw an out of disk space exception.
            </summary>
            <remarks>
            Value must be between 100MB and 1TB.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.DirectoryMethod">
            <summary>
            Gets the method that the directory structure will follow when writing a new file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.EncodingMethod">
            <summary>
            The encoding method that will be used to write files.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.FileExtension">
            <summary>
            The extension to name the file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.Flags">
            <summary>
            The flags that will be added to any created archive files.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.IsMemoryArchive">
            <summary>
            Gets if the archive file is a memory archive or a file archive.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.Prefix">
            <summary>
            Gets or sets the file prefix. Can be String.Empty for no prefix.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.WritePath">
            <summary>
            The list of all available paths to write files to.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.ConfigureInMemory(SnapDB.Snap.EncodingDefinition,System.Guid[])">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializer`2"/> that will reside in memory.
            </summary>
            <param name="encodingMethod">The encoding method to use for data storage.</param>
            <param name="flags">Additional flags to apply to the archive configuration.</param>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.ConfigureInMemory(SnapDB.Snap.EncodingDefinition,System.Guid[])"/> method allows configuring the archive to use an in-memory storage format.
            This method sets the <see cref="P:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.IsMemoryArchive"/> property to <c>true</c>, specifies the encoding method for
            data storage, and allows adding additional flags to the archive configuration. Once configured as an in-memory
            archive, data is stored in RAM instead of on disk, which can improve read/write performance at the cost of
            data persistence.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.ConfigureOnDisk(System.Collections.Generic.IEnumerable{System.String},System.Int64,SnapDB.Snap.Services.ArchiveDirectoryMethod,SnapDB.Snap.EncodingDefinition,System.String,System.String,System.Guid[])">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializer`2"/> that will reside on the disk.
            </summary>
            <param name="paths">The paths to place the files.</param>
            <param name="desiredRemainingSpace">The desired free space to leave on the disk before moving to another disk.</param>
            <param name="directoryMethod">The method for storing files in a directory.</param>
            <param name="encodingMethod">The encoding method to use for the archive file.</param>
            <param name="prefix">The prefix to affix to the files created.</param>
            <param name="extension">The extension file name.</param>
            <param name="flags">Flags to include in the archive that is created.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration of an archive stream to the specified stream.
            </summary>
            <param name="stream">The stream where the configuration data will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration of an archive stream from the specified stream.
            </summary>
            <param name="stream">The stream from which the configuration data will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.Validate">
            <summary>
            Validates the configuration of the archive stream.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings.Initialize">
            <summary>
            Initializes the configuration of the archive stream with default values.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.CombineFiles`2">
            <summary>
            Represents a series of stages that an archive file progresses through
            in order to properly condition the data.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.CombineFiles`2.#ctor(SnapDB.Snap.Services.Writer.CombineFilesSettings,SnapDB.Snap.Services.ArchiveList{`0,`1},SnapDB.Snap.Services.Writer.RolloverLog)">
            <summary>
            Creates a stage writer.
            </summary>
            <param name="settings">the settings for this stage</param>
            <param name="archiveList">the archive list</param>
            <param name="rolloverLog">the rollover log</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.CombineFiles`2.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the log source base object and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.CombineFilesSettings">
            <summary>
            A collection of settings for <see cref="T:SnapDB.Snap.Services.Writer.CombineFiles`2"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.CombineFilesSettings.ArchiveSettings">
            <summary>
            The settings for the archive initializer. This value cannot be null.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.CombineFilesSettings.CombineOnFileCount">
            <summary>
            The number of files with the specified <see cref="P:SnapDB.Snap.Services.Writer.CombineFilesSettings.MatchFlag"/>
            before they will be combined.
            </summary>
            <remarks>
            Must be between 2 and 1000.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.CombineFilesSettings.CombineOnFileSize">
            <summary>
            The size at which to create a rolled over file.
            </summary>
            <remarks>
            Must be between 1MB and 100GB.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.CombineFilesSettings.ExecuteTimer">
            <summary>
            Gets the rate a which a rollover check is executed
            Time is in milliseconds.
            </summary>
            <remarks>
            Default is every 60,000 milliseconds.
            Must be between 1 second and 10 minutes.
            Anything outside this range will substitute for the closest valid value.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.CombineFilesSettings.LogPath">
            <summary>
            The path to write the log file for the rollover process.
            </summary>
            <remarks>
            A value of String.Empty means that rollover logs will not be created.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.CombineFilesSettings.MatchFlag">
            <summary>
            The archive flag to do the file combination on.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.CombineFilesSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration of the archive writer to the specified stream.
            </summary>
            <param name="stream">The stream where the configuration data will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.CombineFilesSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration of the archive writer from the specified stream.
            </summary>
            <param name="stream">The stream from which the configuration data will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.CombineFilesSettings.Validate">
            <summary>
            Validates the configuration of the archive writer.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.FirstStageWriter`2">
            <summary>
            Handles how data is initially taken from pre-stage chunks and serialized to the disk.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="E:SnapDB.Snap.Services.Writer.FirstStageWriter`2.SequenceNumberCommitted">
            <summary>
            Event that notifies that a certain sequence number has been committed.
            </summary>
        </member>
        <member name="E:SnapDB.Snap.Services.Writer.FirstStageWriter`2.RolloverComplete">
            <summary>
            Occurs after a rollover operation has completed and provides the sequence number associated with
            the rollover.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.FirstStageWriter`2.#ctor(SnapDB.Snap.Services.Writer.FirstStageWriterSettings,SnapDB.Snap.Services.ArchiveList{`0,`1})">
            <summary>
            Initializes a new instance of the FirstStageWriter class with the provided settings and archive list.
            </summary>
            <param name="settings">The settings to configure the FirstStageWriter.</param>
            <param name="list">The archive list to associate with the FirstStageWriter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when <paramref name="settings"/> is null.</exception>
            <remarks>
            This constructor initializes a new instance of the FirstStageWriter class with the specified <paramref name="settings"/> and
            associates it with the given <paramref name="list"/>.
            It creates necessary internal objects, such as archive initializers, reset events, and task schedulers, to manage the first stage of writing.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.FirstStageWriter`2.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.Writer.FirstStageWriter`2"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.FirstStageWriter`2.AppendData(SnapDB.Snap.Services.Writer.PrebufferRolloverArgs{`0,`1})">
            <summary>
            Appends this data to this stage. Also queues up for deletion if necessary.
            </summary>
            <param name="args">
            arguments handed to this class from either the
            Pre-stage writer or another stage writer of a previous generation
            </param>
            <remarks>
            This method must be called in a single threaded manner.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.FirstStageWriter`2.Stop">
            <summary>
            Stops the archive's write operations and performs necessary cleanup.
            </summary>
            <returns>The last committed sequence number before stopping.</returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.Writer.FirstStageWriter`2.Stop"/> method is used to stop the archive's write operations gracefully. It sets an internal flag
            to indicate that the archive has stopped writing, cancels any scheduled rollover tasks, and performs necessary cleanup.
            After stopping, the method returns the last committed sequence number before the archive was stopped.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.FirstStageWriter`2.Commit(System.Int64)">
            <summary>
            Triggers a rollover if the provided sequence ID has not yet been committed.
            </summary>
            <param name="sequenceId">The provided sequence ID to commit.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.FirstStageWriterSettings">
            <summary>
            The settings for the <see cref="T:SnapDB.Snap.Services.Writer.FirstStageWriter`2"/>
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.EncodingMethod">
            <summary>
            The encoding method that will be used to write files.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.FinalSettings">
            <summary>
            The settings that will be used for the rolled over files.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.MaximumAllowedMb">
            <summary>
            The size after which the incoming write queue will pause
            to wait for rollovers to complete.
            </summary>
            <remarks>
            It is recommended to make this value larger than <see cref="P:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.RolloverSizeMb"/>.
            If this value is smaller than <see cref="P:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.RolloverSizeMb"/> then <see cref="P:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.RolloverSizeMb"/> will be used.
            Must be at least 1MB. Upper Limit should be Memory Constrained, but not larger than 1024MB.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.RolloverInterval">
            <summary>
            The number of milliseconds before data is flushed to the disk.
            </summary>
            <remarks>
            Must be between 1,000 ms and 60,000 ms.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.RolloverSizeMb">
            <summary>
            The size at which a rollover will be signaled
            </summary>
            <remarks>
            Must be at least 1MB. Upper Limit should be Memory Constrained, but not larger than 1024MB.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration of the archive settings to the specified stream.
            </summary>
            <param name="stream">The stream where the configuration data will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration of the archive settings from the specified stream.
            </summary>
            <param name="stream">The stream from which the configuration data will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.FirstStageWriterSettings.Validate">
            <summary>
            Validates the configuration of the archive writer by delegating validation to its FinalSettings.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Services.Writer"/> namespace organizes all common SnapDB library functionality related to writing capabilities,
            e.g., the <see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializer`2"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.PrebufferRolloverArgs`2">
            <summary>
            A set of variables that are generated in the prebuffer stage that are provided to the onRollover
            <see cref="T:System.Action"/> passed to the constructor of <see cref="T:SnapDB.Snap.Services.Writer.PrebufferWriter`2"/>.
            </summary>
            <typeparam name="TKey">The key</typeparam>
            <typeparam name="TValue">The value</typeparam>
        </member>
        <member name="F:SnapDB.Snap.Services.Writer.PrebufferRolloverArgs`2.Stream">
            <summary>
            The stream of points that need to be rolled over.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Writer.PrebufferRolloverArgs`2.TransactionId">
            <summary>
            The transaction id assoicated with the points in this buffer.
            This is the id of the last point in this buffer.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferRolloverArgs`2.#ctor(SnapDB.Snap.TreeStream{`0,`1},System.Int64)">
            <summary>
            Creates a set of args
            </summary>
            <param name="stream">the stream to specify</param>
            <param name="transactionId">the number to specify</param>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.PrebufferWriter`2">
            <summary>
            Where uncommitted data is collected before it is
            inserted into an archive file in a bulk operation.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
            <remarks>
            This class is thread safe
            </remarks>
        </member>
        <member name="F:SnapDB.Snap.Services.Writer.PrebufferWriter`2.m_latestTransactionId">
            <summary>
            The point sequence number assigned to points when they are added to the prebuffer.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Writer.PrebufferWriter`2.m_stopped">
            <summary>
            Specifies that the prebuffer has been requested to stop processing data.
            This occurs when gracefully shutting down the Engine,
            allowing for all points to be rolled over and written to the underlying disk.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Writer.PrebufferWriter`2.m_disposed">
            <summary>
            Specifies that this class has been disposed.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferWriter`2.#ctor(SnapDB.Snap.Services.Writer.PrebufferWriterSettings,System.Action{SnapDB.Snap.Services.Writer.PrebufferRolloverArgs{`0,`1}})">
            <summary>
            Creates a pre-stage writer.
            </summary>
            <param name="settings">The settings to use for this prebuffer writer</param>
            <param name="onRollover">delegate to call when a file is done with this stage.</param>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.PrebufferWriter`2.LatestTransactionId">
            <summary>
            Gets the latest transaction id which is a sequential counter
            based on the number of insert operations that have occured.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferWriter`2.Dispose(System.Boolean)">
            <summary>
            Disposes the underlying queues contained in this class.
            This method is not thread safe.
            It is assumed this will be called after <see cref="M:SnapDB.Snap.Services.Writer.PrebufferWriter`2.Stop"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferWriter`2.Commit(System.Int64)">
            <summary>
            Triggers a rollover if the provided transaction id has not yet been triggered.
            This method does not block
            </summary>
            <param name="transactionId">the transaction id to execute the commit on.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferWriter`2.Write(`0,`1)">
            <summary>
            Writes the provided key/value to the prebuffer
            </summary>
            <param name="key">the key to write</param>
            <param name="value">the value to write</param>
            <returns>the transaction id identifying this point</returns>
            <remarks>Calls to this function are thread safe</remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferWriter`2.Stop">
            <summary>
            Stop all writing to this class.
            Once stopped, it cannot be resumed.
            All data is then immediately flushed to the output.
            This method calls Dispose()
            </summary>
            <returns>the transaction number of the last point that written</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferWriter`2.m_rolloverTask_Running(System.Object,Gemstone.EventArgs{Gemstone.Threading.ScheduledTaskRunningReason})">
            <summary>
            Processes the rollover of this file.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.PrebufferWriterSettings">
            <summary>
            All of the settings for the prebuffer writer
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.PrebufferWriterSettings.MaximumPointCount">
            <summary>
            The maximum number of points to have in the prebuffer before rolling this into the Stage 0 Archive.
            </summary>
            <remarks>
            Must be between 1,000 and 100,000
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.PrebufferWriterSettings.RolloverInterval">
            <summary>
            The maximum interval to wait in milliseconds before taking the prebuffer and rolling it into a Stage 0 Archive.
            </summary>
            <remarks>
            Must be between 1 and 1,000
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.PrebufferWriterSettings.RolloverPointCount">
            <summary>
            The number of points before a rollover is queued. This should be before the maximum point
            count since once the maximum point count has been reached, a thread pause will result.
            </summary>
            <remarks>
            Must be between 1,000 and 100,000
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferWriterSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration of the point count rollover settings to the specified stream.
            </summary>
            <param name="stream">The stream where the configuration data will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferWriterSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration of the point count rollover settings from the specified stream.
            </summary>
            <param name="stream">The stream from which the configuration data will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.PrebufferWriterSettings.Validate">
            <summary>
            Validates the configuration of the point count rollover settings.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.RolloverLog">
            <summary>
            The log file that describes the rollover process so if the service crashes during the rollover process,
            it can properly be recovered from.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLog.#ctor(SnapDB.Snap.Services.Writer.RolloverLogSettings,SnapDB.Snap.Services.ArchiveList)">
            <summary>
            Creates a new <see cref="T:SnapDB.Snap.Services.Writer.RolloverLog"/>
            </summary>
            <param name="settings">the settings</param>
            <param name="list">the list</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLog.Create(System.Collections.Generic.List{System.Guid},System.Guid)">
            <summary>
            Creates a new <see cref="T:SnapDB.Snap.Services.Writer.RolloverLogFile"/> for specified source files and a destination file.
            </summary>
            <param name="sourceFiles">The list of source file identifiers to include in the rollover log.</param>
            <param name="destinationFile">The identifier of the destination file for the rollover operation.</param>
            <returns>A new instance of <see cref="T:SnapDB.Snap.Services.Writer.RolloverLogFile"/> representing the rollover log.</returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.Writer.RolloverLog.Create(System.Collections.Generic.List{System.Guid},System.Guid)"/> method generates a new unique file name using the archive's settings, and then creates a
            <see cref="T:SnapDB.Snap.Services.Writer.RolloverLogFile"/> instance to represent the rollover log for the specified source files and destination file.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.RolloverLogFile">
            <summary>
            Logs the rollover process so that it can be properly finished in the event of a power outage or process crash
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Writer.RolloverLogFile.DestinationFile">
            <summary>
            Gets the destination file
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Writer.RolloverLogFile.FileName">
            <summary>
            Gets the filename of this log file. String.Empty if not currently associated with a file.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Writer.RolloverLogFile.IsValid">
            <summary>
            Gets if the file is valid and not corrupt.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Services.Writer.RolloverLogFile.SourceFiles">
            <summary>
            Gets all of the source files.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLogFile.#ctor(System.String,System.Collections.Generic.List{System.Guid},System.Guid)">
            <summary>
            Creates a new rollover log
            </summary>
            <param name="fileName">the name of the file to save</param>
            <param name="sourceFiles">the source files in the rollover process</param>
            <param name="destinationFile">the destination file in the rollover process.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLogFile.#ctor(System.String)">
            <summary>
            Resumes a rollover log
            </summary>
            <param name="fileName">the name of the log file to load.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLogFile.Recover(SnapDB.Snap.Services.ArchiveList)">
            <summary>
            Recovers this rollover during an application crash.
            </summary>
            <param name="list">The archive list to recover.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLogFile.Delete">
            <summary>
            Deletes the file associated with this ArchiveLog
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.RolloverLogSettings">
            <summary>
            The settings for a <see cref="T:SnapDB.Snap.Services.Writer.RolloverLogFile"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.RolloverLogSettings.IsFileBacked">
            <summary>
            Gets if this archive log will be file backed.
            This is true as long as <see cref="P:SnapDB.Snap.Services.Writer.RolloverLogSettings.LogPath"/> is assigned
            a value.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.RolloverLogSettings.LogFileExtension">
            <summary>
            The file extension to write the log files.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.RolloverLogSettings.LogFilePrefix">
            <summary>
            The prefix to assign to all log files. Can be string.empty
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.RolloverLogSettings.LogPath">
            <summary>
            The path to store all log files. Can be an empty string to
            not enable file based logging.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.RolloverLogSettings.SearchPattern">
            <summary>
            Gets the wildcard search string for a log file.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLogSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration of the log settings to the specified stream.
            </summary>
            <param name="stream">The stream where the configuration data will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLogSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration of the log settings from the specified stream.
            </summary>
            <param name="stream">The stream from which the configuration data will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLogSettings.Validate">
            <summary>
            Validates the configuration of the log settings.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.RolloverLogSettings.GenerateNewFileName">
            <summary>
            Generates a new unique file name for the log.
            </summary>
            <returns>A new file name based on the log's settings and a unique identifier.</returns>
            <exception cref="T:System.Exception">Thrown when attempting to generate a file name for a non-file backed log.</exception>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.Writer.RolloverLogSettings.GenerateNewFileName"/> method creates a unique file name for the log based on the log's settings,
            including the log file prefix, path, and file extension. If the log is not file-backed, an exception is thrown.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializer`2">
            <summary>
            Creates new archive files based on user settings.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializer`2.#ctor(SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializer`2"/>
            </summary>
            <param name="settings">The settings to apply to the ne w<see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializer`2"/>.</param>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializer`2.Settings">
            <summary>
            Gets current settings.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializer`2.UpdateSettings(SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings)">
            <summary>
            Replaces the existing settings with this new set.
            </summary>
            <param name="settings">The new set of settings.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializer`2.CreateArchiveFile(`0,`0,System.Int64,SnapDB.Snap.TreeStream{`0,`1},System.Action{System.Guid})">
            <summary>
            Creates an archive file with specified keys, estimated size, and data.
            </summary>
            <param name="startKey">The first key of the archive file.</param>
            <param name="endKey">The last key of the archive file.</param>
            <param name="estimatedSize">The estimated size of the archive file.</param>
            <param name="data">The data to be written to the archive file.</param>
            <param name="archiveIdCallback">A callback function to handle the archive file's unique identifier.</param>
            <returns>A sorted tree table representing the created archive file.</returns>
            <remarks>
            The <see cref="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializer`2.CreateArchiveFile(`0,`0,System.Int64,SnapDB.Snap.TreeStream{`0,`1},System.Action{System.Guid})"/> method creates an archive file with the specified start and end keys, estimated size,
            and data. It uses a pending file to write the data and then renames it to the final file. The archive file is opened and
            returned as a sorted tree table.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializer`2.CreateArchiveName(System.String)">
            <summary>
            Creates a new random file in one of the provided folders in a round robin fashion.
            </summary>
            <param name="path">The base path for the archive file.</param>
            <returns>A unique archive file name.</returns>
            <remarks>
            This method generates a unique archive file name based on the specified path and includes
            a timestamp, a unique identifier, and the specified file extension.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializer`2.CreateArchiveName(System.String,`0,`0)">
            <summary>
            Creates a new random file in one of the provided folders in a round robin fashion.
            </summary>
            <param name="path">The base path for the archive file.</param>
            <param name="startKey">The start key for the archive data range.</param>
            <param name="endKey">The end key for the archive data range.</param>
            <returns>A unique archive file name.</returns>
            <remarks>
            This method generates a unique archive file name based on the specified path,
            start key, end key, and includes a timestamp, a unique identifier, and the specified file extension.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings">
            <summary>
            Settings for <see cref="T:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializer`2"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializerSettings"/>.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.DesiredRemainingSpace">
            <summary>
            The desired number of bytes to leave on the disk after a rollover has completed.
            Otherwise, pick a different directory or throw an out of disk space exception.
            </summary>
            <remarks>
            Value must be between 100MB and 1TB.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.DirectoryMethod">
            <summary>
            Gets the method that the directory structure will follow when writing a new file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.EncodingMethod">
            <summary>
            The encoding method that will be used to write files.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.FinalExtension">
            <summary>
            The extension to name the file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.Flags">
            <summary>
            The flags that will be added to any created archive files.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.PendingExtension">
            <summary>
            The extension to name the file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.Prefix">
            <summary>
            Gets or sets the file prefix. Can be String.Empty for no prefix.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.WritePath">
            <summary>
            The list of all available paths to write files to.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.Metadata">
            <summary>
            Gets or sets the metadata to be written to the archive.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.ConfigureOnDisk(System.Collections.Generic.IEnumerable{System.String},System.Int64,SnapDB.Snap.Services.ArchiveDirectoryMethod,SnapDB.Snap.EncodingDefinition,System.String,System.String,System.String,System.Guid[])">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Writer.ArchiveInitializer`2"/> that will reside on the disk.
            </summary>
            <param name="paths">The paths to place the files.</param>
            <param name="desiredRemainingSpace">The desired free space to leave on the disk before moving to another disk.</param>
            <param name="directoryMethod">The method for storing files in a directory.</param>
            <param name="encodingMethod">The encoding method to use for the archive file.</param>
            <param name="prefix">The prefix to affix to the files created.</param>
            <param name="pendingExtension">The extension file name.</param>
            <param name="finalExtension">The final extension to specify.</param>
            <param name="flags">Flags to include in the archive that is created.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration settings of the SnapServer to a stream.
            </summary>
            <param name="stream">The stream to which the configuration will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration of the archive settings from the specified stream.
            </summary>
            <param name="stream">The stream from which the configuration data will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.SimplifiedArchiveInitializerSettings.Validate">
            <summary>
            Validates the configuration of the archive settings.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.TransactionTracker`2">
            <summary>
            Handles the transactions and any waits/notifications associated with transaction numbers.
            </summary>
            <typeparam name="TKey">The key</typeparam>
            <typeparam name="TValue">The value</typeparam>
            <remarks>
            Transaction IDs are long values, starting with zero. The reason behind this, even if 2 billion transactions
            could happen per second, it would still take over 100 years without an application restart to loop around.
            Realistically a therotical peak would be 200 million transactions per second (An Interlocked.Increment).
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.TransactionTracker`2.WaitForCommit">
            <summary>
            An internal class created for each thread that is waiting for a transaction to committ.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.TransactionTracker`2.WaitForCommit.#ctor(System.Int64)">
            <summary>
            Initializes a new instance of the WaitForCommit class with the specified transaction ID.
            </summary>
            <param name="transactionId">The transaction ID to wait for.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.TransactionTracker`2.#ctor(SnapDB.Snap.Services.Writer.PrebufferWriter{`0,`1},SnapDB.Snap.Services.Writer.FirstStageWriter{`0,`1})">
            <summary>
            Creates a new transaction tracker that monitors the provided buffers.
            </summary>
            <param name="prebuffer">The prebuffer to track transactions.</param>
            <param name="firstStageWriter">The first stage writer to monitor for transaction commits.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.TransactionTracker`2.WaitForSoftCommit(System.Int64)">
            <summary>
            Wait for the specified transaction to commit to memory.
            </summary>
            <param name="transactionId">The transaction ID to wait for.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.TransactionTracker`2.WaitForHardCommit(System.Int64)">
            <summary>
            Waits for the specified transaction to commit to the disk.
            </summary>
            <param name="transactionId">The transaction ID to wait for.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.TransactionTracker`2.TransactionSoftCommitted(System.Int64)">
            <summary>
            Event handler.
            </summary>
            <param name="transactionId">The transaction ID to wait for.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.TransactionTracker`2.TransactionHardCommitted(System.Int64)">
            <summary>
            Event handler.
            </summary>
            <param name="transactionId">The transaction ID to wait for.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.WriteProcessor`2">
            <summary>
            Houses all of the write operations for the historian.
            </summary>
            <typeparam name="TKey">The type of key.</typeparam>
            <typeparam name="TValue">The type of value associated with the key.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessor`2.#ctor(SnapDB.Snap.Services.ArchiveList{`0,`1},SnapDB.Snap.Services.Writer.WriteProcessorSettings,SnapDB.Snap.Services.Writer.RolloverLog)">
            <summary>
            Creates a <see cref="T:SnapDB.Snap.Services.Writer.WriteProcessor`2"/>.
            </summary>
            <param name="list">the master list of archive files</param>
            <param name="settings">the settings</param>
            <param name="rolloverLog">the rollover log value</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessor`2.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Services.Writer.WriteProcessor`2"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessor`2.Write(`0,`1)">
            <summary>
            Writes the provided key-value pair to the engine.
            </summary>
            <param name="key">The key to be written to the engine.</param>
            <param name="value">The value associated with the key to be written to the engine.</param>
            <returns>the transaction code so this write can be tracked.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessor`2.Write(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Writes the provided stream to the engine.
            </summary>
            <param name="stream">The stream to be written to the engine.</param>
            <returns>The transaction code so this write can be tracked.</returns>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessor`2.SoftCommit(System.Int64)">
            <summary>
            Blocks until the specified point has progressed beyond the pre-stage level and can be queried by the user.
            </summary>
            <param name="transactionId">The sequence number representing the desired point that was committed.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessor`2.HardCommit(System.Int64)">
            <summary>
            Blocks until the specified point has been committed to the disk subsystem. If running in a In-Memory mode, will return
            as soon as it has been moved beyond the pre-stage level and can be queried by the user.
            </summary>
            <param name="transactionId">The sequence number representing the desired point that was committed.</param>
        </member>
        <member name="T:SnapDB.Snap.Services.Writer.WriteProcessorSettings">
            <summary>
            The settings for the write processor.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessorSettings.#ctor">
            <summary>
            The default write processor settings.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.WriteProcessorSettings.FirstStageWriter">
            <summary>
            The settings for the first stage writer.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.WriteProcessorSettings.IsEnabled">
            <summary>
            Gets or sets if writing will be enabled.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.WriteProcessorSettings.PrebufferWriter">
            <summary>
            The settings for the prebuffer.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Services.Writer.WriteProcessorSettings.StagingRollovers">
            <summary>
            Contains all of the staging rollovers.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessorSettings.Save(System.IO.Stream)">
            <summary>
            Saves the configuration of the file combine settings to the specified stream.
            </summary>
            <param name="stream">The stream where the configuration data will be saved.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessorSettings.Load(System.IO.Stream)">
            <summary>
            Loads the configuration of the file combine settings from the specified stream.
            </summary>
            <param name="stream">The stream from which the configuration data will be loaded.</param>
        </member>
        <member name="M:SnapDB.Snap.Services.Writer.WriteProcessorSettings.Validate">
            <summary>
            Validates the configuration of the file combine settings.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.SnapTypeBase">
            <summary>
            Represents the base class for Snap types, providing methods for serialization, comparison, and manipulation.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.#ctor">
            <summary>
            Ensures that only <see cref="T:SnapDB.Snap.SnapTypeBase`1"/> inherits from this class.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.SnapTypeBase.GenericTypeGuid">
            <summary>
            The GUID uniquely defining this type.
            It is important to uniquely tie 1 type to 1 GUID.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.SnapTypeBase.Size">
            <summary>
            Gets the size of this class when serialized.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.SetMin">
            <summary>
            Sets the provided key to its minimum value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.SetMax">
            <summary>
            Sets the provided key to its maximum value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.Clear">
            <summary>
            Clears the key.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.Read(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Reads the provided key from the stream.
            </summary>
            <param name="stream">The stream to read from.</param>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.Write(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Writes the provided data to the BinaryWriter.
            </summary>
            <param name="stream">The stream to write to.</param>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.Read(System.IO.Stream)">
            <summary>
            Reads the provided key from the stream.
            </summary>
            <param name="stream">The stream to read from.</param>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.Write(System.IO.Stream)">
            <summary>
            Writes the provided key to the stream.
            </summary>
            <param name="stream">The stream to write to.</param>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.Read(System.Byte*)">
            <summary>
            Reads the key from the stream.
            </summary>
            <param name="stream">The stream to read from.</param>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.Write(System.Byte*)">
            <summary>
            Writes the key to the stream.
            </summary>
            <param name="stream">The stream to write to.</param>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase.MethodCopy(System.Byte*,System.Byte*)">
            <summary>
            Executes a copy command without modifying the current class.
            </summary>
            <param name="source">The source buffer to copy from.</param>
            <param name="destination">The destination buffer to copy to.</param>
        </member>
        <member name="T:SnapDB.Snap.SnapTypeBase`1">
            <summary>
            The interface that is required to use as a value in the sorted tree.
            </summary>
            <typeparam name="T">A class that has a default constructor</typeparam>
            <remarks>
            It is highly recommended to override many of the base class methods as many of these methods are slow.
            The following methods should be overriden if possible:
            Read(byte*)
            Write(byte*)
            IsLessThan(T)
            IsEqualTo(T)
            IsGreaterThan(T)
            IsLessThanOrEqualTo(T)
            IsBetween(T,T)
            CompareTo(byte*)
            IsLessThanOrEqualTo(byte*, byte*)
            For better random I/O inserts, it is also a good idea to implement a custom
            <see cref="T:SnapDB.Snap.SnapTypeCustomMethods`1"/> that overrides
            the <see cref="M:SnapDB.Snap.SnapTypeCustomMethods`1.BinarySearch(System.Byte*,`0,System.Int32,System.Int32)"/> method.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.CopyTo(`0)">
            <summary>
            Copies the source to the destination.
            </summary>
            <param name="destination">The destination for the source to be copied to.</param>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.CompareTo(System.Byte*)">
            <summary>
            Compares the current <typeparamref name="T"/> object with the data in the provided byte stream.
            </summary>
            <param name="stream">A pointer to a byte stream containing data to compare against.</param>
            <returns>
            A value that indicates the relative order of the current <typeparamref name="T"/> object and the data in the stream.
            - Less than zero: The current object is less than the data in the stream.
            - Zero: The current object is equal to the data in the stream.
            - Greater than zero: The current object is greater than the data in the stream.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.CreateValueMethods">
            <summary>
            Creates and returns an instance of custom methods for handling values of the <typeparamref name="T"/> type.
            </summary>
            <returns>
            An instance of <see cref="T:SnapDB.Snap.SnapTypeCustomMethods`1"/> for custom value handling.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.IsEqualTo(`0)">
            <summary>
            Compares the current instance with another instance of the same type and determines whether they are equal.
            </summary>
            <param name="right">The instance to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current instance is equal to the <paramref name="right"/> instance; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.IsNotEqualTo(`0)">
            <summary>
            Compares the current instance with another instance of the same type and determines whether they are not equal.
            </summary>
            <param name="right">The instance to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current instance is not equal to the <paramref name="right"/> instance; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.IsBetween(`0,`0)">
            <summary>
            Determines whether the current instance falls within a specified range defined by lower and upper bounds.
            </summary>
            <param name="lowerBounds">The lower bounds of the range (inclusive).</param>
            <param name="upperBounds">The upper bounds of the range (exclusive).</param>
            <returns>
            <c>true</c> if the current instance is greater than or equal to <paramref name="lowerBounds"/> (inclusive)
            and less than <paramref name="upperBounds"/> (exclusive); otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.IsLessThanOrEqualTo(`0)">
            <summary>
            Determines whether the current instance is less than or equal to a specified value.
            </summary>
            <param name="right">The value to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current instance is less than or equal to <paramref name="right"/>; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.IsLessThan(`0)">
            <summary>
            Determines whether the current instance is less than a specified value.
            </summary>
            <param name="right">The value to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current instance is less than <paramref name="right"/>; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.IsGreaterThan(`0)">
            <summary>
            Determines whether the current instance is greater than a specified value.
            </summary>
            <param name="right">The value to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current instance is greater than <paramref name="right"/>; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.IsGreaterThanOrEqualTo(`0)">
            <summary>
            Determines whether the current instance is greater than or equal to a specified value.
            </summary>
            <param name="right">The value to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current instance is greater than or equal to <paramref name="right"/>; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.Clone">
            <summary>
            Creates a new instance that is a copy of the current instance.
            </summary>
            <returns>A new instance that is a copy of the current instance.</returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.CompareTo(`0)">
            <summary>
            Compares the current instance to <paramref name="other"/>.
            </summary>
            <param name="other">the key to compare to</param>
            <returns>
            A value that indicates the relative order of the objects being compared.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.Compare(`0,`0)">
            <summary>
            Compares two objects and returns a value indicating whether one is less than, equal to, or greater than the other.
            </summary>
            <returns>
            A signed integer that indicates the relative values of <paramref name="x"/> and <paramref name="y"/>, as shown in the following table.Value Meaning Less than zero<paramref name="x"/> is less than <paramref name="y"/>.Zero<paramref name="x"/> equals <paramref name="y"/>.Greater than zero<paramref name="x"/> is greater than <paramref name="y"/>.
            </returns>
            <param name="x">The first object to compare.</param>
            <param name="y">The second object to compare.</param>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeBase`1.Equals(`0)">
            <summary>
            Indicates whether the current object is equal to another object of the same type.
            </summary>
            <returns>
            <c>true</c> if the current object is equal to the <paramref name="other"/> parameter; otherwise, <c>false</c>.
            </returns>
            <param name="other">An object to compare with this object.</param>
        </member>
        <member name="T:SnapDB.Snap.SnapTypeCustomMethods`1">
            <summary>
            Provides custom methods for working with SnapTypeBase-derived types.
            </summary>
            <typeparam name="T">The SnapTypeBase-derived type.</typeparam>
        </member>
        <member name="F:SnapDB.Snap.SnapTypeCustomMethods`1.LastFoundIndex">
            <summary>
            The last found index.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.SnapTypeCustomMethods`1.TempKey">
            <summary>
            A temporary key instance of type <typeparamref name="T"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeCustomMethods`1.BinarySearch(System.Byte*,`0,System.Int32,System.Int32)">
            <summary>
            Performs a binary search within a memory block pointed to by <paramref name="pointer"/>.
            </summary>
            <param name="pointer">A pointer to the memory block where the search will be performed.</param>
            <param name="key">The key to search for.</param>
            <param name="recordCount">The number of records in the memory block.</param>
            <param name="keyValueSize">The size of each key-value pair in bytes.</param>
            <returns>
            The index of the found key-value pair if it exists; otherwise, a negative value representing the bitwise complement
            of the index at which the key-value pair should be inserted to maintain sorted order.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeCustomMethods`1.IsGreaterThan(`0,System.Byte*)">
            <summary>
            Gets if <paramref name="left"/> is greater than or equal to <paramref name="right"/>.
            </summary>
            <param name="left">The left operand to compare.</param>
            <param name="right">The right operand to compare.</param>
            <returns><c>true</c> if <paramref name="left"/> is greater than or equal to <paramref name="right"/>; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeCustomMethods`1.IsGreaterThan(System.Byte*,`0)">
            <summary>
            Gets if <paramref name="left"/> is greater than <paramref name="right"/>.
            </summary>
            <param name="left">The left operand to compare.</param>
            <param name="right">The right operand to compare.</param>
            <returns><c>true</c> if <paramref name="left"/> is greater than <paramref name="right"/>; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeCustomMethods`1.CompareTo(`0,System.Byte*)">
            <summary>
            Compares <paramref name="left"/> to <paramref name="right"/>.
            </summary>
            <param name="left">The left operand to compare.</param>
            <param name="right">The right operand to compare.</param>
            <returns>A value indicating the relative order of <paramref name="left"/> and <paramref name="right"/>.</returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeCustomMethods`1.CompareTo(System.Byte*,`0)">
            <summary>
            Compares <paramref name="left"/> to <paramref name="right"/>.
            </summary>
            <param name="left">The left operand to compare.</param>
            <param name="right">The right operand to compare.</param>
            <returns>A value indicating the relative order of <paramref name="left"/> and <paramref name="right"/>.</returns>
        </member>
        <member name="M:SnapDB.Snap.SnapTypeCustomMethods`1.BinarySearch2(System.Byte*,`0,System.Int32,System.Int32)">
            <summary>
            Performs a binary search within a memory block pointed to by <paramref name="pointer"/>.
            </summary>
            <param name="pointer">A pointer to the memory block where the search will be performed.</param>
            <param name="key">The key to search for.</param>
            <param name="recordCount">The number of records in the memory block.</param>
            <param name="keyPointerSize">The size of each key-value pair in bytes.</param>
            <returns>
            The index of the found key-value pair if it exists; otherwise, a negative value representing the bitwise complement
            of the index at which the key-value pair should be inserted to maintain sorted order.
            </returns>
        </member>
        <member name="T:SnapDB.Snap.Stats">
            <summary>
            Provides statistical information related to various operations.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Stats.ChecksumCount">
            <summary>
            Checks how many times the checksum was computed. This is used to see IO amplification.
            It is currently a debug term that will soon disappear.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Stats.LookupKeys">
            <summary>
            Gets or sets the count of lookup keys used.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Stats.PointsReturned">
            <summary>
            Gets or sets the count of points returned.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Stats.PointsScanned">
            <summary>
            Gets or sets the count of points scanned.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Stats.QueriesExecuted">
            <summary>
            Gets or sets the count of queries executed.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Stats.SeeksRequested">
            <summary>
            Gets or sets the count of seeks requested.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Stats.Clear">
            <summary>
            Clears all statistical counters.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Storage.FileFlags">
            <summary>
            A set of flags that are in the archive files.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage0">
            <summary>
            Indicates that the file is in Stage 0. These files are in memory only and not compressed.
            These files may be created multiple times per second, but typically are incrementally added to 10-100 times per second.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage1">
            <summary>
            Indicates that the file is in Stage 1. These files usually have been written to the disk, and they are compressed.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage2">
            <summary>
            Indicates that the file is in Stage 2.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage3">
            <summary>
            Indicates that the file is in Stage 3.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage4">
            <summary>
            Indicates that the file is in Stage 4.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage5">
            <summary>
            Indicates that the file is in Stage 5.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage6">
            <summary>
            Indicates that the file is in Stage 6.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage7">
            <summary>
            Indicates that the file is in Stage 7.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage8">
            <summary>
            Indicates that the file is in Stage 8.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.Stage9">
            <summary>
            Indicates that the file is in Stage 9.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.ManualRollover">
            <summary>
            Indicates that the user requested this file to be rolled over, and therefore it should not be automatically recombined.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.FileFlags.IntermediateFile">
            <summary>
            Indicates that this is an intermediate file that can still be automatically rolled over.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.FileFlags.GetStage(System.Int32)">
            <summary>
            Gets the flag associated with the supplied stage.
            </summary>
            <param name="stageNumber">The stage number for which to retrieve the <see cref="T:System.Guid"/>.</param>
            <returns>
            A predefined <see cref="T:System.Guid"/> corresponding to the specified stage number.
            </returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown when the <paramref name="stageNumber"/> is not between 0 and 9.
            </exception>
            <remarks>
            The <see cref="M:SnapDB.Snap.Storage.FileFlags.GetStage(System.Int32)"/> method returns a predefined <see cref="T:System.Guid"/> associated with a specific stage number.
            Stages are typically used in multi-stage processes to represent different phases of an operation.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Storage.FileFlags.GetStageNumber(System.Guid)">
            <summary>
            Gets the number of the supplied stage <paramref name="flag"/>.
            </summary>
            <param name="flag">Stage flag.</param>
            <returns>Number of specified stage <paramref name="flag"/>; otherwise, -1 if flag is not a stage flag.</returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.FileFlags.GetStageNumber(System.Guid[])">
            <summary>
            Gets the stage number from the set of supplied file <paramref name="flags"/>.
            </summary>
            <param name="flag">File flags.</param>
            <returns>Stage number from the set of supplied file <paramref name="flags"/>; otherwise, -1 if none of the flags is a stage flag.</returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.FileFlags.IsStageFlag(System.Guid)">
            <summary>
            Determines if the supplied flag is a stage flag.
            </summary>
            <param name="flag">Flag to test.</param>
            <returns><c>true</c> if <paramref name="flag"/> is a stage flag; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:SnapDB.Snap.Storage.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Storage"/> namespace organizes all common SnapDB library functionality related to storing data,
            e.g., the <see cref="T:SnapDB.Snap.Storage.SortedTreeFile"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Storage.SortedTreeFile">
            <summary>
            Represents a individual self-contained archive file.
            </summary>
            <remarks>
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeFile.ArchiveSize">
            <summary>
            Gets the size of the file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeFile.FileName">
            <summary>
            Gets the name of the file, but only the file, not the entire path.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeFile.FilePath">
            <summary>
            Returns the name of the file.  Returns <see cref="F:System.String.Empty"/> if this is a memory archive.
            This is the name of the entire path.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeFile.IsDisposed">
            <summary>
            Determines if the archive file has been disposed.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeFile.IsMemoryFile">
            <summary>
            Gets if the file is a memory file.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeFile.Snapshot">
            <summary>
            Gets the last committed read-only snapshot associated with this instance.
            </summary>
            <remarks>
            The <see cref="P:SnapDB.Snap.Storage.SortedTreeFile.Snapshot"/> property provides access to the read-only snapshot of the associated data.
            This snapshot allows for querying and reading data but does not support write operations.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.Dispose">
            <summary>
            Closes the archive file. If there is a current transaction,
            that transaction is immediately rolled back and disposed.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.ChangeExtension(System.String,System.Boolean,System.Boolean)">
            <summary>
            Changes the extension of the current file.
            </summary>
            <param name="extension">the new extension</param>
            <param name="isReadOnly">If the file should be reopened as readonly</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.ChangeShareMode(System.Boolean,System.Boolean)">
            <summary>
            Reopens the file with different permissions.
            </summary>
            <param name="isReadOnly">If the file should be reopened as readonly</param>
            <param name="isSharingEnabled">If the file should share read privileges.</param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.OpenTable``2">
            <summary>
            Opens the default table for this TKey and TValue.
            </summary>
            <typeparam name="TKey">The key</typeparam>
            <typeparam name="TValue">The value</typeparam>
            <remarks>
            Every Key and Value have their uniquely mapped file, therefore a different file is opened if TKey and TValue are different.
            </remarks>
            <returns>null if table does not exist</returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.OpenTable``2(System.String)">
            <summary>
            Opens the default table for this TKey and TValue.
            </summary>
            <typeparam name="TKey">The key</typeparam>
            <typeparam name="TValue">The value</typeparam>
            <param name="tableName">the name of an internal table</param>
            <remarks>
            Every Key and Value have their uniquely mapped file, therefore a different file is opened if TKey and TValue are different.
            </remarks>
            <returns>null if table does not exist</returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.OpenOrCreateTable``2(SnapDB.Snap.EncodingDefinition,System.String,System.Int32)">
            <summary>
            Opens the default table for this TKey and TValue. If it does not exists,
            it will be created with the provided compression method.
            </summary>
            <typeparam name="TKey">The type of the keys in the table.</typeparam>
            <typeparam name="TValue">The type of the values in the table.</typeparam>
            <param name="storageMethod">The encoding method used for storage.</param>
            <param name="tableName">The name of the table.</param>
            <param name="maxSortedTreeBlockSize">The maximum block size for the sorted tree (default is 4096).</param>
            <returns>An instance of <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.OpenOrCreateTable``2(SnapDB.Snap.EncodingDefinition,System.Int32)">
            <summary>
            Opens the default table for this TKey and TValue. If it does not exists,
            it will be created with the provided compression method.
            </summary>
            <typeparam name="TKey">The type parameter specifying the data type for keys.</typeparam>
            <typeparam name="TValue">The type parameter specifying the data type for values.</typeparam>
            <param name="storageMethod">The encoding method used to store data.</param>
            <param name="maxSortedTreeBlockSize">The maximum block size for the created <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/>.</param>
            <returns>
            A <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> instance associated with the specified storage method and options.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.GetMetadata``2">
            <summary>
            Gets the metadata from the archive file associated with the specified key and value types.
            </summary>
            <typeparam name="TKey">The type parameter specifying the data type for keys.</typeparam>
            <typeparam name="TValue">The type parameter specifying the data type for values.</typeparam>
            <returns>Metadata extracted from archive file; otherwise, <c>null</c> if no metadata exists.</returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.Delete">
            <summary>
            Closes and deletes the Archive File. Also calls dispose.
            If this is a memory archive, it will release the memory space to the buffer pool.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.OpenTable``2(SnapDB.IO.FileStructure.SubFileName)">
            <summary>
            Opens the table for the provided file name.
            </summary>
            <typeparam name="TKey"></typeparam>
            <typeparam name="TValue"></typeparam>
            <param name="fileName">the filename to open</param>
            <returns>null if table does not exist</returns>
        </member>
        <member name="F:SnapDB.Snap.Storage.SortedTreeFile.FileType">
            <summary>
            The main type of the archive file.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.SortedTreeFile.PrimaryArchiveType">
            <summary>
            The guid where the primary archive component exists
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Storage.SortedTreeFile.MetadataArchiveType">
            <summary>
            The guid where the primary archive component exists
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.CreateInMemory(System.Int32,System.Guid[])">
            <summary>
            Creates a new in memory archive file.
            </summary>
            <param name="blockSize">The number of bytes per block in the file.</param>
            <param name="flags">Flags to write to the file</param>
            <returns>The new in-memory archive file.</returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.CreateFile(System.String,System.Int32,System.Guid[])">
            <summary>
            Creates an archive file.
            </summary>
            <param name="file">the path for the file.</param>
            <param name="blockSize">The number of bytes per block in the file.</param>
            <param name="flags">Flags to write to the file</param>
            <returns>
            The newly created <see cref="T:SnapDB.Snap.Storage.SortedTreeFile"/>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFile.OpenFile(System.String,System.Boolean)">
            <summary>
            Opens an archive file.
            </summary>
            <param name="file">The path to the SortedTreeFile to open.</param>
            <param name="isReadOnly">True if the file should be opened in read-only mode; otherwise, false.</param>
            <returns>
            A new instance of <see cref="T:SnapDB.Snap.Storage.SortedTreeFile"/> representing the opened SortedTreeFile.
            </returns>
        </member>
        <member name="T:SnapDB.Snap.Storage.SortedTreeFileSimpleWriter`2">
            <summary>
            Will write a file.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFileSimpleWriter`2.Create(System.String,System.String,System.Int32,System.Action{System.Guid},SnapDB.Snap.EncodingDefinition,SnapDB.Snap.TreeStream{`0,`1},System.Guid[])">
            <summary>
            Creates a new archive file using the specified parameters and writes data to it.
            </summary>
            <param name="pendingFileName">The name of the pending archive file.</param>
            <param name="completeFileName">The name of the complete archive file.</param>
            <param name="blockSize">The size of data blocks in the archive.</param>
            <param name="archiveIdCallback">An optional callback to invoke with the archive ID.</param>
            <param name="treeNodeType">The encoding definition for tree nodes.</param>
            <param name="treeStream">The tree stream containing data to be written to the archive.</param>
            <param name="flags">Optional flags associated with the archive.</param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFileSimpleWriter`2.CreateWithMetadata(System.String,System.String,System.Int32,System.Action{System.Guid},SnapDB.Snap.EncodingDefinition,SnapDB.Snap.TreeStream{`0,`1},System.Byte[],System.Guid[])">
            <summary>
            Creates a new archive file using the specified parameters and writes data to it.
            </summary>
            <param name="pendingFileName">The name of the pending archive file.</param>
            <param name="completeFileName">The name of the complete archive file.</param>
            <param name="blockSize">The size of data blocks in the archive.</param>
            <param name="archiveIdCallback">An optional callback to invoke with the archive ID.</param>
            <param name="treeNodeType">The encoding definition for tree nodes.</param>
            <param name="treeStream">The tree stream containing data to be written to the archive.</param>
            <param name="metadata">The metadata to be written to the archive.</param>
            <param name="flags">Optional flags associated with the archive.</param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeFileSimpleWriter`2.CreateNonSequential(System.String,System.String,System.Int32,System.Action{System.Guid},SnapDB.Snap.EncodingDefinition,SnapDB.Snap.TreeStream{`0,`1},System.Guid[])">
            <summary>
            Creates a new archive file for non-sequential data using the specified parameters and writes data to it.
            </summary>
            <param name="pendingFileName">The name of the pending archive file.</param>
            <param name="completeFileName">The name of the complete archive file.</param>
            <param name="blockSize">The size of data blocks in the archive.</param>
            <param name="archiveIdCallback">An optional callback to invoke with the archive ID.</param>
            <param name="treeNodeType">The encoding definition for tree nodes.</param>
            <param name="treeStream">The tree stream containing non-sequential data to be written to the archive.</param>
            <param name="flags">Optional flags associated with the archive.</param>
        </member>
        <member name="T:SnapDB.Snap.Storage.SortedTreeTable`2">
            <summary>
            Represents an individual table contained within the file.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.#ctor(SnapDB.IO.FileStructure.TransactionalFileStructure,SnapDB.IO.FileStructure.SubFileName,SnapDB.Snap.Storage.SortedTreeFile)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2"/> class
            with the specified file structure, file name, and base file.
            </summary>
            <param name="fileStructure">The transactional file structure associated with the table.</param>
            <param name="fileName">The subfile name of the table.</param>
            <param name="baseFile">The base file associated with the table.</param>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeTable`2.ArchiveId">
            <summary>
            Gets the unique identifier (ID) of the archive associated with this table.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeTable`2.BaseFile">
            <summary>
            Gets the archive file where this table exists.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeTable`2.FirstKey">
            <summary>
            The first key.  Note: Values only update on commit.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeTable`2.IsDisposed">
            <summary>
            Determines if the archive file has been disposed.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeTable`2.LastKey">
            <summary>
            The last key.  Note: Values only update on commit.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.Dispose">
            <summary>
            Closes the archive file. If there is a current transaction,
            that transaction is immediately rolled back and disposed.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.AcquireReadSnapshot">
            <summary>
            Acquires a read snapshot of the current archive file.
            </summary>
            <returns>
            A new instance of <see cref="T:SnapDB.Snap.Storage.SortedTreeTableSnapshotInfo`2"/> representing the acquired read snapshot.
            </returns>
            <remarks>
            Once the snapshot has been acquired, any future commits
            will not effect this snapshot. The snapshot has a tiny footprint
            and allows an unlimited number of reads that can be created.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.BeginRead">
            <summary>
            Allows the user to get a read snapshot on the table.
            </summary>
            <returns>
            A new instance of <see cref="T:SnapDB.Snap.Storage.SortedTreeTableReadSnapshot`2"/> representing the read snapshot.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.BeginEdit">
            <summary>
            Begins an edit of the current archive table.
            </summary>
            <remarks>
            Concurrent editing of a file is not supported. Subsequent calls will
            throw an exception rather than blocking. This is to encourage
            proper synchronization at a higher layer.
            Wrap the return value of this function in a Using block so the dispose
            method is always called.
            </remarks>
            <example>
            using (ArchiveFile.ArchiveFileEditor editor = archiveFile.BeginEdit())
            {
            editor.AddPoint(key, value);
            editor.AddPoint(key, value);
            editor.Commit();
            }
            </example>
            <returns>The current status of the edit of the archive table.</returns>
        </member>
        <member name="T:SnapDB.Snap.Storage.SortedTreeTable`2.Editor">
            <summary>
            A single instance editor that is used
            to modifiy an archive file.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.Editor.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Storage.SortedTreeTable`2.Editor"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.Editor.Commit">
            <summary>
            Commits the edits to the current archive file and disposes of this class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.Editor.Rollback">
            <summary>
            Rolls back all edits that are made to the archive file and disposes of this class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.Editor.GetKeyRange(`0,`0)">
            <summary>
            Gets the lower and upper bounds of this tree.
            </summary>
            <param name="firstKey">The first key in the tree</param>
            <param name="lastKey">The final key in the tree</param>
            <remarks>
            If the tree contains no data. <paramref name="firstKey"/> is set to it's maximum value
            and <paramref name="lastKey"/> is set to it's minimum value.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.Editor.AddPoint(`0,`1)">
            <summary>
            Adds a single point to the archive file.
            </summary>
            <param name="key">The key</param>
            <param name="value">the value</param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.Editor.AddPoints(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Adds all of the points to this archive file.
            </summary>
            <param name="stream"></param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTable`2.Editor.GetRange">
            <summary>
            Opens a tree scanner for this archive file
            </summary>
            <summary>
            Gets a new instance of <see cref="T:SnapDB.Snap.Tree.SortedTreeScannerBase`2"/> to scan the entire range of the SortedTreeTable.
            </summary>
            <returns>
            A new instance of <see cref="T:SnapDB.Snap.Tree.SortedTreeScannerBase`2"/> for scanning the entire range.
            </returns>
        </member>
        <member name="T:SnapDB.Snap.Storage.SortedTreeTableEditor`2">
            <summary>
            A single instance editor that is used to modify an archive file.
            </summary>
            <typeparam name="TKey">The key type for the sorted tree table editor.</typeparam>
            <typeparam name="TValue">The value type for the sorted tree table editor.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableEditor`2.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.Snap.Storage.SortedTreeTableEditor`2"/> object.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableEditor`2.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.Storage.SortedTreeTableEditor`2"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableEditor`2.Commit">
            <summary>
            Commits the edits to the current archive file and disposes of this class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableEditor`2.Rollback">
            <summary>
            Rolls back all edits that are made to the archive file and disposes of this class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableEditor`2.GetKeyRange(`0,`0)">
            <summary>
            Gets the lower and upper bounds of this tree.
            </summary>
            <param name="firstKey">The first key in the tree</param>
            <param name="lastKey">The final key in the tree</param>
            <remarks>
            If the tree contains no data. <paramref name="firstKey"/> is set to it's maximum value
            and <paramref name="lastKey"/> is set to it's minimum value.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableEditor`2.AddPoint(`0,`1)">
            <summary>
            Adds a single point to the archive file.
            </summary>
            <param name="key">The key to be added.</param>
            <param name="value">The value associated with the key to be added.</param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableEditor`2.AddPoints(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Adds all of the points to this archive file.
            </summary>
            <param name="stream">The stream of points to be added to the archive file.</param>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableEditor`2.GetRange">
            <summary>
            Opens a tree scanner for this archive file
            </summary>
            <returns>
            A new instance of <see cref="T:SnapDB.Snap.Tree.SortedTreeScannerBase`2"/> for scanning a specific range of keys.
            </returns>
        </member>
        <member name="T:SnapDB.Snap.Storage.SortedTreeTableReadSnapshot`2">
            <summary>
            Provides a user with a read-only instance of an archive.
            This class is not thread safe.
            </summary>
            <typeparam name="TKey">The key type used in the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.Storage.SortedTreeTableReadSnapshot`2.IsDisposed">
            <summary>
            Determines if this read snapshot has been disposed.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableReadSnapshot`2.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableReadSnapshot`2.GetTreeScanner">
            <summary>
            Gets a reader that can be used to parse an archive file.
            </summary>
            <returns>
            A new instance of <see cref="T:SnapDB.Snap.Tree.SortedTreeScannerBase`2"/> for scanning the entire SortedTreeTable.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableReadSnapshot`2.GetKeyRange(`0,`0)">
            <summary>
            Returns the lower and upper bounds of the tree
            </summary>
            <param name="lowerBounds">the first key in the tree</param>
            <param name="upperBounds">the last key in the tree</param>
            <remarks>
            If the tree is empty, lowerBounds will be greater than upperBounds
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Storage.SortedTreeTableSnapshotInfo`2">
            <summary>
            Acquires a read transaction on the current archive partition. This will allow all user created
            transactions to have snapshot isolation of the entire data set.
            </summary>
            <typeparam name="TKey">The key type for the sorted tree table.</typeparam>
            <typeparam name="TValue">The value type used in the sorted tree table.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Storage.SortedTreeTableSnapshotInfo`2.CreateReadSnapshot">
            <summary>
            Opens an instance of the archive file to allow for concurrent reading of a snapshot.
            </summary>
            <returns>
            A new <see cref="T:SnapDB.Snap.Storage.SortedTreeTableReadSnapshot`2"/> instance for reading data from the table.
            </returns>
        </member>
        <member name="T:SnapDB.Snap.Streaming.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Streaming"/> namespace organizes all common SnapDB library functionality related to stream encoding,
            e.g., the <see cref="T:SnapDB.Snap.Streaming.StreamEncodingBase`2"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Streaming.StreamEncodingBase`2">
            <summary>
            An abstract base class for defining stream encoding methods used to encode and decode
            key-value pairs of types <typeparamref name="TKey"/> and <typeparamref name="TValue"/>.
            </summary>
            <typeparam name="TKey">The type of the keys to be encoded and decoded.</typeparam>
            <typeparam name="TValue">The type of the values to be encoded and decoded.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.Streaming.StreamEncodingBase`2.EncodingMethod">
            <summary>
            Gets the definition of the encoding used.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Streaming.StreamEncodingBase`2.WriteEndOfStream(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Writes the end of the stream symbol to the <paramref name="stream"/>.
            </summary>
            <param name="stream">The stream to write to.</param>
        </member>
        <member name="M:SnapDB.Snap.Streaming.StreamEncodingBase`2.Encode(SnapDB.IO.BinaryStreamBase,`0,`1)">
            <summary>
            Encodes the current key-value to the stream.
            </summary>
            <param name="stream">The stream to write to.</param>
            <param name="currentKey">The key to write.</param>
            <param name="currentValue">The value to write.</param>
        </member>
        <member name="M:SnapDB.Snap.Streaming.StreamEncodingBase`2.TryDecode(SnapDB.IO.BinaryStreamBase,`0,`1)">
            <summary>
            Attempts to read the next point from the stream.
            </summary>
            <param name="stream">The stream to read from</param>
            <param name="key">The key to store the value to.</param>
            <param name="value">The value to store to.</param>
            <returns><c>true</c> if successful; <c>false</c> if end of the stream has been reached.</returns>
        </member>
        <member name="M:SnapDB.Snap.Streaming.StreamEncodingBase`2.ResetEncoder">
            <summary>
            Resets the encoder. Some encoders maintain streaming state data that should
            be reset when reading from a new stream.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Streaming.StreamEncodingGeneric`2">
            <summary>
            Allows any generic encoding definition to be wrapped to support stream encoding.
            </summary>
            <typeparam name="TKey">The type of the key.</typeparam>
            <typeparam name="TValue">The type of the value.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Streaming.StreamEncodingGeneric`2.#ctor(SnapDB.Snap.EncodingDefinition)">
            <summary>
            Creates a new <see cref="T:SnapDB.Snap.Streaming.StreamEncodingGeneric`2"/> based on the supplied <paramref name="encodingMethod"/>
            </summary>
            <param name="encodingMethod">the encoding method to use for the streaming</param>
        </member>
        <member name="P:SnapDB.Snap.Streaming.StreamEncodingGeneric`2.EncodingMethod">
            <summary>
            Gets the definition of the encoding used.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Streaming.StreamEncodingGeneric`2.WriteEndOfStream(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Writes the end of the stream symbol to the <paramref name="stream"/>.
            </summary>
            <param name="stream">the stream to write to</param>
        </member>
        <member name="M:SnapDB.Snap.Streaming.StreamEncodingGeneric`2.Encode(SnapDB.IO.BinaryStreamBase,`0,`1)">
            <summary>
            Encodes the current key-value pair to the stream.
            </summary>
            <param name="stream">The stream to write to.</param>
            <param name="currentKey">The key to write.</param>
            <param name="currentValue">The value to write.</param>
        </member>
        <member name="M:SnapDB.Snap.Streaming.StreamEncodingGeneric`2.TryDecode(SnapDB.IO.BinaryStreamBase,`0,`1)">
            <summary>
            Attempts to read the next point from the stream.
            </summary>
            <param name="stream">The stream to read from.</param>
            <param name="key">The key to store the value to.</param>
            <param name="value">The value to store to.</param>
            <returns><c>true</c> if successful; <c>false</c> if end of the stream has been reached.</returns>
        </member>
        <member name="M:SnapDB.Snap.Streaming.StreamEncodingGeneric`2.ResetEncoder">
            <summary>
            Resets the encoder. Some encoders maintain streaming state data that should
            be reset when reading from a new stream.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.TreeStream`2">
            <summary>
            Represents a stream of KeyValues.
            </summary>
            <typeparam name="TKey">The key associated with the point.</typeparam>
            <typeparam name="TValue">The value associated with the point.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.TreeStream`2.Eos">
            <summary>
            Boolean indicating that the end of the stream has been read or class has been disposed.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.TreeStream`2.IsAlwaysSequential">
            <summary>
            Gets if the stream is always in sequential order. Do not return true unless it is guaranteed that
            the data read from this stream is sequential.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.TreeStream`2.NeverContainsDuplicates">
            <summary>
            Gets if the stream will never return duplicate keys. Do not return true unless it is guaranteed that
            the data read from this stream will never contain duplicates.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.TreeStream`2.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.TreeStream`2.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:SnapDB.Snap.TreeStream`2"/> object and optionally releases the managed resources.
            </summary>
            <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        </member>
        <member name="M:SnapDB.Snap.TreeStream`2.Read(`0,`1)">
            <summary>
            Advances the stream to the next value.
            If before the beginning of the stream, advances to the first value
            </summary>
            <param name="key">The key to be advanced to.</param>
            <param name="value">The value associated with the key to be advanced to.</param>
            <returns><c>true</c> if the advance was successful; otherwise, <c>false</c> if the end of the stream was reached.</returns>
        </member>
        <member name="M:SnapDB.Snap.TreeStream`2.ReadAsync(`0,`1)">
            <summary>
            Advances the stream to the next value. 
            If before the beginning of the stream, advances to the first value
            </summary>
            <returns>True if the advance was successful. False if the end of the stream was reached.</returns>
        </member>
        <member name="M:SnapDB.Snap.TreeStream`2.EndOfStreamReached">
            <summary>
            Occurs when the end of the stream has been reached. The default behavior is to call Dispose.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.TreeStream`2.SetEos(System.Boolean)">
            <summary>
            Sets the end-of-stream (EOS) flag, indicating whether the stream has reached its end.
            </summary>
            <param name="value">The value to set for the EOS flag.</param>
            <exception cref="T:System.ObjectDisposedException">
            Thrown if <paramref name="value"/> is <c>false</c> and this class
            has already been disposed.
            </exception>
        </member>
        <member name="M:SnapDB.Snap.TreeStream`2.ReadNext(`0,`1)">
            <summary>
            Advances the stream to the next value.
            If before the beginning of the stream, advances to the first value
            </summary>
            <param name="key">The key to be advanced to.</param>
            <param name="value">The value associated with the key to be advanced to.</param>
            <returns>
            <c>true</c> if the advance was successful; <c>false</c> if the end of the stream was reached.
            </returns>
        </member>
        <member name="T:SnapDB.Snap.TreeStreamExtensions">
            <summary>
            Provides extension methods for <see cref="T:SnapDB.Snap.TreeStream`2"/> instances.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.TreeStreamExtensions.Count``2(SnapDB.Snap.TreeStream{``0,``1})">
            <summary>
            Parses an entire stream to count the number of items. Notice, this will
            enumerate the stream, and the stream will have to be reset to be enumerated again.
            </summary>
            <typeparam name="TKey">The key type.</typeparam>
            <typeparam name="TValue">The value type.</typeparam>
            <param name="stream">The stream to enumerate.</param>
            <returns>The number of items in the stream.</returns>
        </member>
        <member name="T:SnapDB.Snap.Tree.FixedSizeNode`2">
            <summary>
            A node for a <see cref="T:SnapDB.Snap.Tree.SortedTree"/> that is encoded in a fixed width.
            This allows binary searches and faster writing.
            </summary>
            <typeparam name="TKey">The type of keys stored in the nodes.</typeparam>
            <typeparam name="TValue">The type of values stored in the nodes.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.#ctor(System.Byte)">
            <summary>
            Creates a new class.
            </summary>
            <param name="level">The level of this node.</param>
        </member>
        <member name="P:SnapDB.Snap.Tree.FixedSizeNode`2.MaxOverheadWithCombineNodes">
            <summary>
            Gets the maximum overhead (additional space used) when combining nodes.
            </summary>
            <remarks>
            This property specifies the maximum additional space that can be used when nodes are combined during tree operations.
            The value is typically 0, indicating that combining nodes doesn't introduce any additional overhead.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.Clone(System.Byte)">
            <summary>
            Creates a new instance of the same node type as a clone with the specified <paramref name="level"/>.
            </summary>
            <param name="level">The level of the new node.</param>
            <returns>A new node instance with the same type and the specified level.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.CreateTreeScanner">
            <summary>
            Returns a <see cref="T:SnapDB.Snap.Tree.SortedTreeScannerBase`2"/>
            </summary>
            <returns>A new tree scanner instance.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.InitializeType">
            <summary>
            Initializes the type-specific properties of the node, such as the maximum records per node.
            </summary>
            <remarks>
            This method calculates the maximum number of records that can be stored in a node based on the block size and key-value size.
            It checks if the tree meets the minimum requirement of having at least 4 records per node and throws an exception if not.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.Read(System.Int32,`1)">
            <summary>
            Reads the value at the specified index in the node.
            </summary>
            <param name="index">The index at which to read the value.</param>
            <param name="value">The value to be read from the node.</param>
            <remarks>
            This method reads the value stored at the specified index within the node's storage.
            It is typically used during tree operations to retrieve values associated with keys.
            </remarks>
            <exception cref="T:System.IndexOutOfRangeException">Thrown if the provided index is out of range.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.Read(System.Int32,`0,`1)">
            <summary>
            Reads the key-value pair at the specified index in the node.
            </summary>
            <param name="index">The index at which to read the key-value pair.</param>
            <param name="key">The key to be read from the node.</param>
            <param name="value">The value to be read from the node.</param>
            <remarks>
            This method reads both the key and value stored at the specified index within the node's storage.
            It is typically used during tree operations to retrieve key-value pairs.
            </remarks>
            <exception cref="T:System.IndexOutOfRangeException">Thrown if the provided index is out of range.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.RemoveUnlessOverflow(System.Int32)">
            <summary>
            Removes a key-value pair at the specified index unless it would cause an overflow.
            </summary>
            <param name="index">The index of the key-value pair to be removed.</param>
            <returns>
            <c>true</c> if the key-value pair was successfully removed; otherwise, <c>false</c>.
            </returns>
            <remarks>
            This method removes the key-value pair at the specified index unless removing it would result in an overflow,
            in which case, it will not remove the pair. Overflow occurs when the node can't accommodate the removal
            while maintaining its size constraints.
            </remarks>
            <exception cref="T:System.IndexOutOfRangeException">Thrown if the provided index is out of range.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.InsertUnlessFull(System.Int32,`0,`1)">
            <summary>
            Inserts a key-value pair at the specified index unless the node is already full.
            </summary>
            <param name="index">The index at which to insert the key-value pair.</param>
            <param name="key">The key to insert.</param>
            <param name="value">The value to insert.</param>
            <returns>
            <c>true</c> if the key-value pair was successfully inserted; otherwise, <c>false</c>.
            </returns>
            <remarks>
            This method inserts the specified key-value pair at the specified index within the node, unless
            the node is already full and can't accommodate the insertion while maintaining its size constraints.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.AppendSequentialStream(SnapDB.Snap.Tree.InsertStreamHelper{`0,`1},System.Boolean@)">
            <summary>
            Appends a sequential stream of key-value pairs to the node.
            </summary>
            <param name="stream">The stream containing key-value pairs to append.</param>
            <param name="isFull">A boolean indicating whether the node is full after the append operation.</param>
            <remarks>
            This method appends a sequential stream of key-value pairs to the node. It keeps adding pairs
            until the node reaches its maximum capacity. If the node becomes full, the <paramref name="isFull"/>
            parameter is set to <c>true</c>; otherwise, it's set to <c>false</c>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.GetIndexOf(`0)">
            <summary>
            Searches for the index of the specified key within the node.
            </summary>
            <param name="key">The key to search for.</param>
            <returns>
            The index of the specified key within the node, or a negative value if the key is not found.
            </returns>
            <remarks>
            This method performs a binary search to find the index of the specified key within the node's keys.
            If the key is found, its index is returned; otherwise, a negative value is returned to indicate that
            the key is not present in the node.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.Split(System.UInt32,`0)">
            <summary>
            Splits the node into two nodes and redistributes its key-value pairs.
            </summary>
            <param name="newNodeIndex">The index of the new node created during the split.</param>
            <param name="dividingKey">The key that determines the split point.</param>
            <remarks>
            This method splits the current node into two nodes and redistributes its key-value pairs.
            The splitting point is determined by the <paramref name="dividingKey"/>. Half of the records
            remain in the original node, and the other half is moved to the new node.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.TransferRecordsFromRightToLeft(SnapDB.Snap.Tree.Node{`0},SnapDB.Snap.Tree.Node{`0},System.Int32)">
            <summary>
            Transfers a specified number of key-value records from the right node to the left node during a redistribution operation.
            </summary>
            <param name="left">The left node to which records are transferred.</param>
            <param name="right">The right node from which records are transferred.</param>
            <param name="bytesToTransfer">The total number of bytes to transfer, including header bytes.</param>
            <remarks>
            This method is used during a redistribution operation between two nodes. It transfers a specified number of key-value
            records, as well as updates record counts and valid bytes for both nodes. The records are moved from the right node
            to the left node while preserving their order.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNode`2.TransferRecordsFromLeftToRight(SnapDB.Snap.Tree.Node{`0},SnapDB.Snap.Tree.Node{`0},System.Int32)">
            <summary>
            Transfers a specified number of key-value records from the left node to the right node during a redistribution operation.
            </summary>
            <param name="left">The left node from which records are transferred.</param>
            <param name="right">The right node to which records are transferred.</param>
            <param name="bytesToTransfer">The total number of bytes to transfer, including header bytes.</param>
            <remarks>
            This method is used during a redistribution operation between two nodes. It transfers a specified number of key-value
            records, as well as updates record counts and valid bytes for both nodes. The records are moved from the left node
            to the right node while preserving their order.
            </remarks>
        </member>
        <member name="T:SnapDB.Snap.Tree.FixedSizeNodeScanner`2">
            <summary>
            The treescanner for a fixed size node.
            </summary>
            <typeparam name="TKey">The type of keys in the node.</typeparam>
            <typeparam name="TValue">The type of values associated with keys in the node.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNodeScanner`2.#ctor(System.Byte,System.Int32,SnapDB.IO.BinaryStreamPointerBase,System.Func{`0,System.Byte,System.UInt32})">
            <summary>
            Creates a new class.
            </summary>
            <param name="level">The level of the fixed-size node in the sorted tree.</param>
            <param name="blockSize">The size of the block containing the fixed-size node.</param>
            <param name="stream">The binary stream pointer for navigating the tree structure.</param>
            <param name="lookupKey">A delegate function for looking up keys in the tree.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNodeScanner`2.InternalRead(`0,`1)">
            <summary>
            Reads the next key-value pair from the internal byte buffer and advances the read pointer.
            </summary>
            <param name="key">The key to read the value into.</param>
            <param name="value">The value to read from the buffer.</param>
            <remarks>
            This method reads the next key-value pair from the internal byte buffer.
            It deserializes the key and value, advances the read pointer, and increments the index of the next key-value pair.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNodeScanner`2.InternalRead(`0,`1,SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads and filters key-value pairs from the internal byte buffer, advancing the read pointer.
            </summary>
            <param name="key">The key to read the value into.</param>
            <param name="value">The value to read from the buffer.</param>
            <param name="filter">Optional filter to determine if the key-value pair is accepted.</param>
            <returns>
            <c>true</c> if a matching key-value pair is found; otherwise, <c>false</c>.
            </returns>
            <remarks>
            This method reads key-value pairs from the internal byte buffer.
            It deserializes the key and value, advances the read pointer, and increments the index of the next key-value pair.
            If a <paramref name="filter"/> is provided, it is used to determine if the key-value pair should be accepted.
            If a matching pair is found, the method returns <c>true</c>; otherwise, it continues reading until a match is found or the end of the buffer is reached, returning <c>false</c>.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNodeScanner`2.InternalPeek(`0,`1)">
            <summary>
            Peeks at the next key-value pair in the internal byte buffer without advancing the read pointer.
            </summary>
            <param name="key">The key to read the value into.</param>
            <param name="value">The value to read from the buffer.</param>
            <remarks>
            This method reads the key and value of the next key-value pair in the internal byte buffer.
            It deserializes the key and value without changing the state of the read pointer or index.
            The method is used for inspecting the next key-value pair in the buffer without consuming it.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNodeScanner`2.InternalReadWhile(`0,`1,`0)">
            <summary>
            Using <see cref="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.Pointer"/> to advance to the next KeyValue.
            </summary>
            <param name="key">The key read from the stream.</param>
            <param name="value">The value read from the stream.</param>
            <param name="upperBounds">The upper bounds for key comparison.</param>
            <returns><c>true</c> if search can still be advanced; otherwise, <c>false</c> if the upper bound has been reached.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNodeScanner`2.InternalReadWhile(`0,`1,`0,SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Using <see cref="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.Pointer"/> to advance to the next KeyValue.
            </summary>
            <param name="key">The next key to advance to.</param>
            <param name="value">The next value to advance to.</param>
            <param name="upperBounds">The highest key that can be advanced to - stop when reached.</param>
            <param name="filter">The filter to abide by during the advancement for matching key-value pairs.</param>
            <returns><c>true</c> if advancement can still be made; otherwise, <c>false</c> if iterations reached the end.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.FixedSizeNodeScanner`2.FindKey(`0)">
            <summary>
            Using <see cref="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.Pointer"/> to advance to the search location of the provided <paramref name="key"/>.
            </summary>
            <param name="key">The key to advance to.</param>
        </member>
        <member name="T:SnapDB.Snap.Tree.GenericEncodedNode`2">
            <summary>
            A TreeNode abstract class that is used for linearly encoding a class.
            </summary>
            <typeparam name="TKey">The type of keys stored in the nodes.</typeparam>
            <typeparam name="TValue">The type of values stored in the nodes.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.#ctor(SnapDB.Snap.Encoding.PairEncodingBase{`0,`1},System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Tree.GenericEncodedNode`2"/> class.
            </summary>
            <param name="encoding">The encoding method used for key-value pairs in the node.</param>
            <param name="level">The level of the node within the tree structure.</param>
            <remarks>
            This constructor creates a new node with the specified level and initializes key and value instances for use in the node.
            It associates the provided encoding method with the node and sets up event handlers for node index changes and cache clearing.
            The level should typically be 0, as this type of node is typically used at the leaf level of the tree.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Tree.GenericEncodedNode`2.MaximumStorageSize">
            <summary>
            Gets the maximum storage size, in bytes, required for encoding a single key-value pair.
            </summary>
            <remarks>
            This property returns the maximum storage size, in bytes, required to encode a single key-value pair
            using the configured encoding method. It reflects the maximum amount of space that a single pair
            can occupy in the data store, which can be useful for calculating storage requirements.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Tree.GenericEncodedNode`2.MaxOverheadWithCombineNodes">
            <summary>
            Gets the maximum overhead expected when combining two nodes of this type.
            </summary>
            <remarks>
            The maximum overhead includes the storage required for the data in both nodes, plus one additional byte.
            This property is used in node combining operations to estimate the maximum storage needed for the resulting node.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.Clone(System.Byte)">
            <summary>
            Creates a new instance of <see cref="T:SnapDB.Snap.Tree.GenericEncodedNode`2"/> as a clone of the current node.
            </summary>
            <param name="level">The level of the new node within the tree structure.</param>
            <returns>A new node instance cloned from the current node with the specified level.</returns>
            <remarks>
            This method is used to create a clone of the current node, replicating its contents and configuration.
            The clone has the same encoding method as the original node, and the specified level within the tree structure.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.CreateTreeScanner">
            <summary>
            Creates a tree scanner specific to <see cref="T:SnapDB.Snap.Tree.GenericEncodedNode`2"/> nodes.
            </summary>
            <returns>A new instance of a tree scanner designed to work with nodes of the current type.</returns>
            <remarks>
            This method is used to create a tree scanner specifically tailored to work with nodes of the <see cref="T:SnapDB.Snap.Tree.GenericEncodedNode`2"/> type.
            The scanner is configured with the current node's encoding method, level, block size, associated stream, and sparse index retrieval function.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.EncodeRecord(System.Byte*,`0,`1,`0,`1)">
            <summary>
            Encodes a key-value record into a binary stream.
            </summary>
            <param name="stream">A pointer to the binary stream where the record will be encoded.</param>
            <param name="prevKey">The previous key in the sequence.</param>
            <param name="prevValue">The previous value in the sequence.</param>
            <param name="currentKey">The current key to be encoded.</param>
            <param name="currentValue">The current value to be encoded.</param>
            <returns>The number of bytes written to the binary stream as a result of the encoding.</returns>
            <remarks>
            This method encodes a key-value record into the specified binary stream using the configured encoding method.
            It takes the previous key and value as well as the current key and value, which can be used for delta encoding.
            The method returns the number of bytes written to the stream during encoding.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.DecodeRecord(System.Byte*,`0,`1,`0,`1)">
            <summary>
            Decodes a key-value record from a binary stream.
            </summary>
            <param name="stream">A pointer to the binary stream containing the encoded record.</param>
            <param name="prevKey">The previous key in the sequence.</param>
            <param name="prevValue">The previous value in the sequence.</param>
            <param name="currentKey">The current key to be decoded.</param>
            <param name="currentValue">The current value to be decoded.</param>
            <returns>The number of bytes read from the binary stream as a result of the decoding.</returns>
            <remarks>
            This method decodes a key-value record from the specified binary stream using the configured decoding method.
            It takes the previous key and value as well as the current key and value, which can be used for delta decoding.
            The method returns the number of bytes read from the stream during decoding.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.InitializeType">
            <summary>
            Initializes the node type, including buffer allocation and storage size calculation.
            </summary>
            <remarks>
            This method initializes the node type by calculating the maximum storage size required for encoding a single
            key-value pair, allocating two byte buffers for encoding and decoding operations, and verifying that the tree
            has a sufficient number of records per node to ensure efficient operation. If the required records per node
            condition is not met, an exception is thrown.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.Read(System.Int32,`1)">
            <summary>
            Reads the value at the specified index within the node.
            </summary>
            <param name="index">The index of the value to read.</param>
            <param name="value">The value object where the read value will be copied.</param>
            <exception cref="T:System.Exception">Thrown if the provided index is equal to the record count, indicating an invalid access.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.Read(System.Int32,`0,`1)">
            <summary>
            Reads the key and value at the specified index within the node.
            </summary>
            <param name="index">The index of the key and value to read.</param>
            <param name="key">The key object where the read key will be copied.</param>
            <param name="value">The value object where the read value will be copied.</param>
            <exception cref="T:System.Exception">Thrown if the provided index is equal to the record count, indicating an invalid access.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.RemoveUnlessOverflow(System.Int32)">
            <summary>
            Removes the key and value at the specified index within the node, unless doing so causes underflow (i.e., less than the minimum required records).
            </summary>
            <param name="index">The index of the key and value to remove.</param>
            <returns><c>true</c> if the removal was successful without causing underflow; otherwise, <c>false</c>.</returns>
            <exception cref="T:System.NotImplementedException">Thrown if this method is not implemented in the derived class.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.AppendSequentialStream(SnapDB.Snap.Tree.InsertStreamHelper{`0,`1},System.Boolean@)">
            <summary>
            Requests that the current stream is inserted into the tree. Sequential insertion can only occur while the stream
            is in order and is entirely past the end of the tree.
            </summary>
            <param name="stream">the stream data to insert</param>
            <param name="isFull">
            if returning from this function while the node is not yet full, this means the stream
            can no longer be inserted sequentially and we must break out to the root and insert one at a time.
            </param>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.InsertUnlessFull(System.Int32,`0,`1)">
            <summary>
            Inserts a point before the current position.
            </summary>
            <param name="index">The index at which to insert the key-value pair.</param>
            <param name="key">The key to insert.</param>
            <param name="value">The value to insert.</param>
            <returns>
            <c>true</c> if the key-value pair was inserted successfully; otherwise, <c>false</c> if the tree is already full.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.GetIndexOf(`0)">
            <summary>
            Searches for the index of a specific key within the node.
            </summary>
            <param name="key">The key to search for.</param>
            <returns>
            The index of the key if found within the node; otherwise, the bitwise complement of the index where the key should be inserted
            (if not found, the insertion point to maintain sorted order).
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.Split(System.UInt32,`0)">
            <summary>
            Splits the current node into two nodes to accommodate a new entry with the specified dividing key.
            </summary>
            <param name="newNodeIndex">The index of the new node created as a result of the split.</param>
            <param name="dividingKey">The key that determines the split point between the two nodes.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.TransferRecordsFromRightToLeft(SnapDB.Snap.Tree.Node{`0},SnapDB.Snap.Tree.Node{`0},System.Int32)">
            <summary>
            Transfers records from the right sibling node to the left sibling node during a node merge operation.
            </summary>
            <param name="left">The left sibling node that receives the transferred records.</param>
            <param name="right">The right sibling node from which records are transferred.</param>
            <param name="bytesToTransfer">The total number of bytes to transfer from the right to the left sibling node.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.TransferRecordsFromLeftToRight(SnapDB.Snap.Tree.Node{`0},SnapDB.Snap.Tree.Node{`0},System.Int32)">
            <summary>
            Transfers records from the left sibling node to the right sibling node during a node split operation.
            </summary>
            <param name="left">The left sibling node from which records are transferred.</param>
            <param name="right">The right sibling node that receives the transferred records.</param>
            <param name="bytesToTransfer">The total number of bytes to transfer from the left to the right sibling node.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.SeekTo(`0,System.Byte*)">
            <summary>
            Continue to seek until the end of the list is found or
            until the <see cref="F:SnapDB.Snap.Tree.GenericEncodedNode`2.m_currentKey"/> >= <paramref name="key"/>
            </summary>
            <param name="key"></param>
            <param name="buffer"></param>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNode`2.SeekTo(System.Int32)">
            <summary>
            Seeks to a specific record index within the node and loads the corresponding key and value into the node's current key and value.
            </summary>
            <param name="index">The index of the record to seek to within the node.</param>
        </member>
        <member name="T:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2">
            <summary>
            Base class for reading from a node that is encoded and must be read sequentially through the node.
            </summary>
            <typeparam name="TKey">The type of keys stored in the nodes.</typeparam>
            <typeparam name="TValue">The type of values stored in the nodes.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2.#ctor(SnapDB.Snap.Encoding.PairEncodingBase{`0,`1},System.Byte,System.Int32,SnapDB.IO.BinaryStreamPointerBase,System.Func{`0,System.Byte,System.UInt32})">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2"/> class with the specified encoding, node level, block size, binary stream, and key lookup function.
            </summary>
            <param name="encoding">The encoding method used for key and value pairs.</param>
            <param name="level">The level of the node (0 for leaf nodes).</param>
            <param name="blockSize">The size of a block or node in bytes.</param>
            <param name="stream">The binary stream from which to read data.</param>
            <param name="lookupKey">A function for looking up keys based on an input key and direction.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2.InternalPeek(`0,`1)">
            <summary>
            Reads and decodes the next key-value pair at the current position for peeking without advancing the position.
            </summary>
            <param name="key">The key to be populated with the peeked key data.</param>
            <param name="value">The value to be populated with the peeked value data.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2.InternalRead(`0,`1)">
            <summary>
            Reads and decodes the next key-value pair at the current position and advances the position.
            </summary>
            <param name="key">The key to be populated with the read key data.</param>
            <param name="value">The value to be populated with the read value data.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2.InternalRead(`0,`1,SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads and decodes the next key-value pair at the current position, advances the position, and checks if it matches the specified filter.
            </summary>
            <param name="key">The key to be populated with the read key data.</param>
            <param name="value">The value to be populated with the read value data.</param>
            <param name="filter">An optional filter to check if the key-value pair matches certain criteria.</param>
            <returns><c>true</c> if the key-value pair matches the filter; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2.InternalReadWhile(`0,`1,`0)">
            <summary>
            Reads and decodes the next key-value pair at the current position, advances the position,
            and continues reading as long as the key is less than the specified upper bounds.
            </summary>
            <param name="key">The key to be populated with the read key data.</param>
            <param name="value">The value to be populated with the read value data.</param>
            <param name="upperBounds">The upper bounds for keys, reading continues as long as the key is less than this value.</param>
            <returns><c>true</c> if the key-value pair matches the condition; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2.InternalReadWhile(`0,`1,`0,SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads and decodes the next key-value pair at the current position, advances the position,
            and continues reading as long as the key is less than the specified upper bounds and matches the filter condition.
            </summary>
            <param name="key">The key to be populated with the read key data.</param>
            <param name="value">The value to be populated with the read value data.</param>
            <param name="upperBounds">The upper bounds for keys, reading continues as long as the key is less than this value.</param>
            <param name="filter">An optional filter to apply to the read key-value pairs.</param>
            <returns>True if the key-value pair matches the condition; otherwise, false.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2.FindKey(`0)">
            <summary>
            Finds the specified key within the node and positions the scanner at the first key-value pair that matches or is greater than the specified key.
            </summary>
            <param name="key">The key to find within the node.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2.OnNoadReload">
            <summary>
            Occurs when a node's data is reset.
            Derived classes can override this
            method if fields need to be reset when a node is loaded.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Tree.InsertStreamHelper`2">
            <summary>
            Helper class for inserting key-value pairs into a tree stream.
            </summary>
            <typeparam name="TKey">The type of the keys in the tree stream.</typeparam>
            <typeparam name="TValue">The type of the values in the tree stream.</typeparam>
        </member>
        <member name="F:SnapDB.Snap.Tree.InsertStreamHelper`2.IsKvp1">
            <summary>
            Gets or sets a value indicating whether the current operation involves Key-Value Pair 1 (KVP1).
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.InsertStreamHelper`2.IsStillSequential">
            <summary>
            Gets or sets a value indicating whether the stream is still sequential.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.InsertStreamHelper`2.IsValid">
            <summary>
            Gets or sets a value indicating whether the current state is valid.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.InsertStreamHelper`2.Key1">
            <summary>
            Gets or sets the first key.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.InsertStreamHelper`2.Key2">
            <summary>
            Gets or sets the second key.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.InsertStreamHelper`2.Stream">
            <summary>
            Gets or sets the tree stream for insertion.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.InsertStreamHelper`2.Value1">
            <summary>
            Gets or sets the first value.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.InsertStreamHelper`2.Value2">
            <summary>
            Gets or sets the second value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.InsertStreamHelper`2.#ctor(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Tree.InsertStreamHelper`2"/> class.
            </summary>
            <param name="stream">The input TreeStream to initialize the helper.</param>
        </member>
        <member name="P:SnapDB.Snap.Tree.InsertStreamHelper`2.Key">
            <summary>
            Gets the current key.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.InsertStreamHelper`2.PrevKey">
            <summary>
            Gets the previous key.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.InsertStreamHelper`2.PrevValue">
            <summary>
            Gets the previous value.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.InsertStreamHelper`2.Value">
            <summary>
            Gets the current value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.InsertStreamHelper`2.Next">
            <summary>
            Advances to the next key-value pair.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.InsertStreamHelper`2.NextDoNotCheckSequential">
            <summary>
            Advances to the next key-value pair without checking for sequential order.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Tree.KeyValueMethods">
            <summary>
            Allows combined operations on key/value methods. If a substantial amount of copying is occuring,
            overriding this method to support the specific copy can make things faster.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.KeyValueMethods.KeyType">
            <summary>
            The type of the key.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.KeyValueMethods.ValueType">
            <summary>
            The type of the value.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Tree.KeyValueMethods`2">
            <summary>
            Allows combined operations on key/value methods. If a substantial amount of copying is occuring,
            overriding this method to support the specific copy can make things faster.
            </summary>
            <typeparam name="TKey">The key to be operated on.</typeparam>
            <typeparam name="TValue">The value associated with the key to be operated on.</typeparam>
        </member>
        <member name="P:SnapDB.Snap.Tree.KeyValueMethods`2.KeyType">
            <summary>
            The type of the key.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.KeyValueMethods`2.ValueType">
            <summary>
            The type of the value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.KeyValueMethods`2.Copy(`0,`1,`0,`1)">
            <summary>
            Copies the source values to the destination.
            </summary>
            <param name="srcKey">The source key to be copied to the destination.</param>
            <param name="srcValue">The source value associated with the key to be copied to the destination.</param>
            <param name="destKey">The copy key after it has reached the destination.</param>
            <param name="dstValue">The copy value associated with the key after it has reached the destination.</param>
        </member>
        <member name="T:SnapDB.Snap.Tree.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Tree"/> namespace organizes all common SnapDB library functionality related to sorted binary trees,
            e.g., the <see cref="T:SnapDB.Snap.Tree.SortedTree`2"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Tree.Node`1">
            <summary>
            Contains basic data about a node in the SortedTree.
            </summary>
            <typeparam name="TKey">The key that the SortedTree contains.</typeparam>
        </member>
        <member name="E:SnapDB.Snap.Tree.Node`1.NodeIndexChanged">
            <summary>
            Occurs when the node index is changed or cleared.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.IndexSize">
            <summary>
            The size in bytes of an index value within the node's header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.OffsetOfLeftSibling">
            <summary>
            Offset within a node's header where the left sibling node's index is stored.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.OffsetOfLowerBounds">
            <summary>
            Offset within a node's header where the lower bounds of the node are stored.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.OffsetOfNodeLevel">
            <summary>
            Offset within a node's header where the level of the node is stored.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.OffsetOfRecordCount">
            <summary>
            Offset within a node's header where the record count is stored.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.OffsetOfRightSibling">
            <summary>
            Offset within a node's header where the right sibling node's index is stored.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.OffsetOfValidBytes">
            <summary>
            Offset within a node's header where the number of valid bytes is stored.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.OffsetOfVersion">
            <summary>
            Offset within a node's header where the version information is stored.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.Version">
            <summary>
            Version constant representing the current version of the object.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.BlockSize">
            <summary>
            Block size of the node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.KeyMethods">
            <summary>
            Custom methods for handling keys of type TKey.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.KeySize">
            <summary>
            Size of a key in bytes.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.Level">
            <summary>
            Level of the node within the tree hierarchy.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.Stream">
            <summary>
            Binary stream pointer used for reading and writing data.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_initialized">
            <summary>
            Flag indicating whether the object has been initialized.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_leftSiblingNodeIndex">
            <summary>
            Index of the left sibling node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_lowerKey">
            <summary>
            The lower key bound for the node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_pointer">
            <summary>
            Pointer to the start of the node's data.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_pointerAfterHeader">
            <summary>
            Pointer to the position immediately after the node's header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_pointerReadVersion">
            <summary>
            Version number for reading from the pointer.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_pointerWriteVersion">
            <summary>
            Version number for writing to the pointer.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_recordCount">
            <summary>
            Number of records in the node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_rightSiblingNodeIndex">
            <summary>
            Index of the right sibling node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_upperKey">
            <summary>
            The upper key bound for the node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Node`1.m_validBytes">
            <summary>
            Number of valid bytes in the node.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.#ctor(System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Tree.Node`1"/> class with the specified level.
            </summary>
            <param name="level">The level of the node within the tree hierarchy.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.#ctor(SnapDB.IO.BinaryStreamPointerBase,System.Int32,System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Tree.Node`1"/> class by reading node data from the specified <paramref name="stream"/>.
            </summary>
            <param name="stream">The binary stream containing node data.</param>
            <param name="blockSize">The size of the node's block within the stream.</param>
            <param name="level">The level of the node within the tree hierarchy.</param>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.LeftSiblingNodeIndex">
            <summary>
            The index of the left sibling. <see cref="F:System.UInt32.MaxValue"/> is the null case.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.LowerKey">
            <summary>
            The lower bounds of the node. This is an inclusive bounds and always valid.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.NodeIndex">
            <summary>
            Gets the node index of this current node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.NodePosition">
            <summary>
            Gets the first position for the current node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.RecordCount">
            <summary>
            Gets or sets the number of records in this node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.RightSiblingNodeIndex">
            <summary>
            The index of the right sibling. <see cref="F:System.UInt32.MaxValue"/> is the null case.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.UpperKey">
            <summary>
            The upper bounds of the node. This is an exclusive bounds and is valid
            when there is a sibling to the right. If there is no sibling to the right,
            it should still be valid except for the maximum key value condition.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.ValidBytes">
            <summary>
            The number of bytes that are used in this node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.HeaderSize">
            <summary>
            Gets the byte offset of the header size.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.IsLeftSiblingIndexNull">
            <summary>
            Is the index of the left sibling null, i.e., equal to <see cref="F:System.UInt32.MaxValue"/>
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.IsRightSiblingIndexNull">
            <summary>
            Is the index of the right sibling null, i.e., equal to <see cref="F:System.UInt32.MaxValue"/>
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.RemainingBytes">
            <summary>
            Gets or sets the number of unused bytes in the node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.StartOfDataPosition">
            <summary>
            The position that points to the location right after the header which is the
            start of the data within the node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Node`1.OffsetOfUpperBounds">
            <summary>
            Gets the byte offset of the upper bounds key.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.Clear">
            <summary>
            Invalidates the current node.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.SetNodeIndex(System.UInt32)">
            <summary>
            Sets the node index to the specified value, updating the node's internal state.
            </summary>
            <param name="nodeIndex">The new node index to set.</param>
            <exception cref="T:System.Exception">Thrown when an invalid node index is provided or when the node is not supposed to access the underlying node level.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.CreateEmptyNode(System.UInt32)">
            <summary>
            Creates an empty node with the specified node index.
            </summary>
            <param name="newNodeIndex">The index of the new node to create.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.IsKeyInsideBounds(`0)">
            <summary>
            Checks if the specified key falls within the bounds of this node.
            </summary>
            <param name="key">The key to check.</param>
            <returns>
            <c>true</c> if the key is within the node's bounds; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.SeekToRightSibling">
            <summary>
            Seeks the current node to the right sibling node. Throws an exception if the navigation fails.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.SeekToLeftSibling">
            <summary>
            Seeks the current node to the left sibling node. Throws an exception if the navigation fails.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.GetReadPointerAfterHeader">
            <summary>
            Gets a read pointer positioned immediately after the node header.
            </summary>
            <returns>A pointer to the location after the node header in the data stream.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.InitializeNode(SnapDB.IO.BinaryStreamPointerBase,System.Int32)">
            <summary>
            Initializes the node with the given binary stream and block size.
            </summary>
            <param name="stream">The binary stream containing the node data.</param>
            <param name="blockSize">The size of the node's data block.</param>
            <exception cref="T:System.Exception">Thrown if the method is called multiple times (duplicate initialization).</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.IncrementOneRecord(System.Int32)">
            <summary>
            Modifies both the <see cref="P:SnapDB.Snap.Tree.Node`1.RecordCount"/> and <see cref="P:SnapDB.Snap.Tree.Node`1.ValidBytes"/> in one function call.
            </summary>
            <param name="additionalValidBytes">The number of bytes to increase <see cref="P:SnapDB.Snap.Tree.Node`1.ValidBytes"/> by.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.IncrementRecordCounts(System.Int32,System.Int32)">
            <summary>
            Increments the record counts and valid bytes of the node by the specified amounts.
            </summary>
            <param name="recordCount">The number of records to add to the node's record count.</param>
            <param name="additionalValidBytes">The number of additional valid bytes to add to the node's valid bytes count.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.CreateNewNode(System.UInt32,System.UInt16,System.UInt16,System.UInt32,System.UInt32,`0,`0)">
            <summary>
            Creates a new node with the provided data.
            </summary>
            <param name="nodeIndex">The index of the new node.</param>
            <param name="recordCount">The record count for the new node.</param>
            <param name="validBytes">The valid bytes count for the new node.</param>
            <param name="leftSibling">The index of the left sibling node.</param>
            <param name="rightSibling">The index of the right sibling node.</param>
            <param name="lowerKey">The lower key for the new node.</param>
            <param name="upperKey">The upper key for the new node.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.SetLeftSiblingProperty(System.UInt32,System.UInt32,System.UInt32)">
            <summary>
            Sets the left sibling property of a node with the specified index to a new value.
            </summary>
            <param name="nodeIndex">The index of the node whose left sibling property is being set.</param>
            <param name="oldValue">The expected old value of the left sibling property.</param>
            <param name="newValue">The new value to set for the left sibling property.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.GetValidBytes(System.UInt32)">
            <summary>
            Retrieves the valid bytes count from the specified node's header.
            </summary>
            <param name="nodeIndex">The index of the node from which to retrieve valid bytes.</param>
            <returns>The count of valid bytes stored in the specified node's header.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.GetReadPointer">
            <summary>
            Retrieves a read pointer to the current node's data.
            </summary>
            <returns>A pointer to the current node's data for reading.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.GetWritePointer">
            <summary>
            Retrieves a write pointer to the current node's data.
            </summary>
            <returns>A pointer to the current node's data for writing.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.Node`1.GetWritePointerAfterHeader">
            <summary>
            Retrieves a write pointer to the data area after the node's header.
            </summary>
            <returns>A pointer to the data area after the node's header for writing.</returns>
        </member>
        <member name="T:SnapDB.Snap.Tree.SortedTree">
            <summary>
            A static class for some basic functions of the sortedtree.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree.ReadHeader(SnapDB.IO.BinaryStreamBase,SnapDB.Snap.EncodingDefinition@,System.Int32@)">
            <summary>
            Reads the header data.
            </summary>
            <param name="stream"></param>
            <param name="treeNodeType"></param>
            <param name="blockSize"></param>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeHeader.IsDirty">
            <summary>
            Gets if the sorted tree needs to be flushed to the disk.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeHeader.LoadHeader(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Loads the header.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeHeader.SaveHeader(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Writes the first page of the SortedTree as long as the <see cref="P:SnapDB.Snap.Tree.SortedTreeHeader.IsDirty"/> flag is set.
            After returning, the IsDirty flag is cleared.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Tree.SortedTreeNodeBase`2">
            <summary>
            An abstract base class for sorted tree nodes, used in SortedTree structures.
            </summary>
            <typeparam name="TKey">The type of keys in the tree.</typeparam>
            <typeparam name="TValue">The type of values associated with keys in the tree.</typeparam>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeNodeBase`2.KeyValueSize">
            <summary>
            The size in bytes of a key-value pair.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeNodeBase`2.SparseIndex">
            <summary>
            The sparse index used for navigation.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.#ctor(System.Byte)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Tree.SortedTreeNodeBase`2"/> class with the specified level.
            </summary>
            <param name="level">The level of the tree node.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.Clone(System.Byte)">
            <summary>
            Creates a clone of the tree node with the specified level.
            </summary>
            <param name="level">The level of the cloned node.</param>
            <returns>A new instance of the cloned tree node.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.Initialize(SnapDB.IO.BinaryStreamPointerBase,System.Int32,System.Func{System.UInt32},SnapDB.Snap.Tree.SparseIndex{`0})">
            <summary>
            Initializes the required parameters for this tree to function. Must be called once.
            </summary>
            <param name="stream">The binary stream to use.</param>
            <param name="blockSize">The size of each block.</param>
            <param name="getNextNewNodeIndex">A function to get the next new node index.</param>
            <param name="sparseIndex">The sparse index to use.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.CanCombineWithSiblings(`0,System.Boolean@,System.Boolean@)">
            <summary>
            Determines which sibling node that this node can be combined with.
            </summary>
            <param name="key">The key of the child node that needs to be checked.</param>
            <param name="canCombineLeft">Outputs <c>true</c> if combining with the left child is supported; otherwise, <c>false</c>.</param>
            <param name="canCombineRight">Outputs <c>true</c> if combining with the right child is supported; otherwise, <c>false</c>.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.CreateTreeScanner">
            <summary>
            Returns a tree scanner class for this tree node.
            </summary>
            <returns>A tree scanner instance.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.NavigateToNode(`0)">
            <summary>
            Navigates to the node that contains the specified key.
            </summary>
            <param name="key">The key of concern.</param>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeNodeBase`2.MaxOverheadWithCombineNodes">
            <summary>
            Gets the maximum overhead allowed when combining nodes during tree operations.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.InitializeType">
            <summary>
            Initializes the specific type of tree node.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.Read(System.Int32,`1)">
            <summary>
            Reads the value at the specified index and stores it in the provided <paramref name="value"/>.
            </summary>
            <param name="index">The index of the value to read.</param>
            <param name="value">The value to store the read data.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.Read(System.Int32,`0,`1)">
            <summary>
            Reads both the key and value at the specified index and stores them in the provided <paramref name="key"/> and <paramref name="value"/>.
            </summary>
            <param name="index">The index of the key-value pair to read.</param>
            <param name="key">The key to store the read key data.</param>
            <param name="value">The value to store the read value data.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.RemoveUnlessOverflow(System.Int32)">
            <summary>
            Removes the element at the specified index unless it causes an overflow in the node.
            </summary>
            <param name="index">The index of the element to remove.</param>
            <returns><c><c>true</c></c> if the element was removed; otherwise, <c><c>false</c></c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.InsertUnlessFull(System.Int32,`0,`1)">
            <summary>
            Inserts the provided key and value into the current node unless it is full.
            Note: A duplicate key has already been detected and will never be passed to this function.
            </summary>
            <param name="index">The index where the key-value pair should be inserted.</param>
            <param name="key">The key to insert.</param>
            <param name="value">The value to insert.</param>
            <returns><c><c>true</c></c> if the insertion was successful; otherwise, <c><c>false</c></c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.AppendSequentialStream(SnapDB.Snap.Tree.InsertStreamHelper{`0,`1},System.Boolean@)">
            <summary>
            Requests the insertion of the current stream into the tree. Sequential insertion can only occur while the stream
            is in order and entirely past the end of the tree.
            </summary>
            <param name="stream">The stream data to insert.</param>
            <param name="isFull">
            If returning from this function while the node is not yet full, this means the stream
            can no longer be inserted sequentially, and we must break out to the root and insert one at a time.
            </param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.GetIndexOf(`0)">
            <summary>
            Gets the index of the specified key in the node.
            </summary>
            <param name="key">The key to search for.</param>
            <returns>The index of the key if found; otherwise, a negative value.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.Split(System.UInt32,`0)">
            <summary>
            Splits the node into two nodes, creating a new node with the specified <paramref name="newNodeIndex"/> and <paramref name="dividingKey"/>.
            </summary>
            <param name="newNodeIndex">The index of the new node.</param>
            <param name="dividingKey">The key that divides the node during the split.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TransferRecordsFromRightToLeft(SnapDB.Snap.Tree.Node{`0},SnapDB.Snap.Tree.Node{`0},System.Int32)">
            <summary>
            Transfers records from the right node to the left node, moving <paramref name="bytesToTransfer"/> bytes.
            </summary>
            <param name="left">The left node.</param>
            <param name="right">The right node.</param>
            <param name="bytesToTransfer">The number of bytes to transfer from right to left.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TransferRecordsFromLeftToRight(SnapDB.Snap.Tree.Node{`0},SnapDB.Snap.Tree.Node{`0},System.Int32)">
            <summary>
            Transfers records from the left node to the right node, moving <paramref name="bytesToTransfer"/> bytes.
            </summary>
            <param name="left">The left node.</param>
            <param name="right">The right node.</param>
            <param name="bytesToTransfer">The number of bytes to transfer from left to right.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.SeekToFirstNode">
            <summary>
            Seeks to the first node at this level of the tree.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.SeekToLastNode">
            <summary>
            Seeks to the last node at this level of the tree.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryGetFirstRecord(`0,`1)">
            <summary>
            Gets the first record contained in the current node of the tree.
            </summary>
            <param name="key">Where to write the key.</param>
            <param name="value">Where to write the value.</param>
            <returns><c>true</c> if a value was found; otherwise, <c>false</c> if the tree is empty.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryGetFirstRecord(`1)">
            <summary>
            Gets the first record contained in the current node of the tree.
            </summary>
            <param name="value">Where to write the value.</param>
            <returns><c>true</c> if a value was found; <c>false</c> if the tree is empty.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryGetLastRecord(`0,`1)">
            <summary>
            Gets the last record contained in the current node of the tree.
            </summary>
            <param name="key">Where to write the key.</param>
            <param name="value">Where to write the value.</param>
            <returns><c>true</c> if a value was found; otherwise, <c>false</c> if the tree is empty.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryGetLastRecord(`1)">
            <summary>
            Gets the last record contained in the current node of the tree.
            </summary>
            <param name="value">Where to write the value.</param>
            <returns><c>true</c> if a value was found; otherwise, <c>false</c> if the tree is empty.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.GetOrGetNext(`0,`1)">
            <summary>
            Gets the provided key or the key that is directly to the right of this key.
            </summary>
            <param name="key">The key to find. This value is not modifed.</param>
            <param name="value">Where to write the value.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryGet(`0,`1)">
            <summary>
            Gets the value for the provided key if it exists.
            </summary>
            <param name="key">The key to search for.</param>
            <param name="value">Where to write the value if found.</param>
            <returns><c>true</c> if the value exists, <c>false</c> if not found.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryGet2(`0,`1)">
            <summary>
            Gets the value for the provided key if it exists.
            </summary>
            <param name="key">The key to search for.</param>
            <param name="value">where to write the value if found.</param>
            <returns><c>true</c> if the value exists, <c>false</c> if not found.</returns>
            <remarks>
            This is a slower but more complete implementation of <see cref="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryGet(`0,`1)"/>.
            Overriding classes can call this method after implementing their own high speed TryGet method.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryInsert(`0,`1)">
            <summary>
            Inserts the following value to the tree if it does not exist.
            </summary>
            <param name="key">The key to add</param>
            <param name="value">The value to add</param>
            <returns><c>true</c> if added, <c>false</c> on a duplicate key error.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryInsertSequentialStream(SnapDB.Snap.Tree.InsertStreamHelper{`0,`1})">
            <summary>
            Attempts to insert a sequential stream of key-value pairs into the tree.
            </summary>
            <param name="stream">The sequential stream of key-value pairs to insert.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryInsert2(`0,`1)">
            <summary>
            Inserts the following value to the tree if it does not exist.
            </summary>
            <param name="key">The key to add.</param>
            <param name="value">The value to add.</param>
            <returns><c>true</c> if added; <c>false</c> on a duplicate key error</returns>
            <remarks>
            This is a slower but more complete implementation of <see cref="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryInsert(`0,`1)"/>.
            Overriding classes can call this method after implementing their own high speed TryGet method.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.NewNodeThenInsert(`0,`1)">
            <summary>
            Creates an empty right sibling node and inserts the provided key in this node.
            Note: This should only be called if there is no right sibling and the key should go in
            that node.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.SplitNodeThenInsert(`0,`1)">
            <summary>
            Splits the current node and then inserts the provided key-value into the correct node.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryRemove(`0)">
            <summary>
            Tries to remove the specified key from the node.
            </summary>
            <param name="key">The key to remove.</param>
            <returns><c>true</c> if the key was successfully removed; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.TryRemove2(`0)">
            <summary>
            Tries to remove the specified key from the node or performs additional actions if needed.
            </summary>
            <param name="key">The key to remove.</param>
            <returns>True if the key was successfully removed or handled; otherwise, false.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.UpdateKey(`0,`0)">
            <summary>
            Updates the key of a non-leaf node.
            </summary>
            <param name="oldKey">The old key to be updated.</param>
            <param name="newKey">The new key to replace the old key.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.UpdateValue(`0,`1)">
            <summary>
            Updates the value associated with a key in a non-leaf node.
            </summary>
            <param name="key">The key associated with the value to update.</param>
            <param name="value">The new value to replace the old value.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeNodeBase`2.InternalUpdateKey(`0,`0)">
            <summary>
            Performs the internal update of a key in a non-leaf node.
            </summary>
            <param name="oldKey">The old key to be updated.</param>
            <param name="newKey">The new key to replace the old key.</param>
        </member>
        <member name="T:SnapDB.Snap.Tree.SortedTree`2">
            <summary>
            Provides the basic user methods with any derived B+Tree.
            This base class translates all of the core methods into simple methods
            that must be implemented by classes derived from this base class.
            </summary>
            <typeparam name="TKey">The key type for the sorted tree.</typeparam>
            <typeparam name="TValue">The value type for the sorted tree.</typeparam>
            <remarks>
            This class does not support concurrent read operations.  This is due to the caching method of each tree.
            If concurrent read operations are desired, clone the tree.
            Trees cannot be cloned if the user plans to write to the tree.
            </remarks>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTree`2.Indexer">
            <summary>
            Gets or sets the sparse index associated with this node. It provides a mapping between keys and node indices.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTree`2.LeafStorage">
            <summary>
            Gets or sets the storage for leaf nodes. Leaf nodes store key-value pairs in the sorted tree.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTree`2.AutoFlush">
            <summary>
            The sorted tree will not continually call the <see cref="M:SnapDB.Snap.Tree.SortedTree`2.Flush"/> method every time the header is changed.
            When setting this to false, flushes must be manually invoked. Failing to do this can corrupt the SortedTree.
            Only set if you can guarantee that <see cref="M:SnapDB.Snap.Tree.SortedTree`2.Flush"/> will be called before disposing this class.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTree`2.IsDirty">
            <summary>
            Gets if the sorted tree needs to be flushed to the disk.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTree`2.BlockSize">
            <summary>
            Contains the block size that the tree nodes will be aligned on.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTree`2.Stream">
            <summary>
            Contains the stream for reading and writing.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.Flush">
            <summary>
            Flushes any header data that may have changed to the main stream.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.SetDirtyFlag">
            <summary>
            Sets a flag that requires that the header data is no longer valid.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.Add(`0,`1)">
            <summary>
            Adds the provided key/value to the Tree.
            </summary>
            <param name="key">the key to add</param>
            <param name="value">the value to add</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.TryAdd(`0,`1)">
            <summary>
            Attempts to add the provided key/value to the Tree.
            </summary>
            <param name="key">the key to add</param>
            <param name="value">the value to add</param>
            <returns>returns true if successful, false if a duplicate key was found</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.AddRange(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Adds all of the points in the stream to the Tree
            </summary>
            <param name="stream">stream to add</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.TryAddRange(SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Adds all of the items in the stream to this tree. Skips any duplicate entries.
            </summary>
            <param name="stream">the stream to add.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.TryRemove(`0)">
            <summary>
            Tries to remove the following key from the tree.
            </summary>
            <param name="key">the key to remove</param>
            <returns>true if successful, false otherwise.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.Get(`0,`1)">
            <summary>
            Gets the following key from the Tree. Assigns to the value.
            </summary>
            <param name="key">the key to look for</param>
            <param name="value">the place to store the value</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.TryGet(`0,`1)">
            <summary>
            Attempts to get the following key from the Tree. Assigns to the value.
            </summary>
            <param name="key">the key to look for</param>
            <param name="value">the place to store the value</param>
            <returns><c>true</c> if successful; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.GetKeyRange(`0,`0)">
            <summary>
            Gets the lower and upper bounds of this tree.
            </summary>
            <param name="lowerBounds">The first key in the tree</param>
            <param name="upperBounds">The final key in the tree</param>
            <remarks>
            If the tree contains no data. <paramref name="lowerBounds"/> is set to it's maximum value
            and <paramref name="upperBounds"/> is set to it's minimum value.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.CreateTreeScanner">
            <summary>
            Creates a tree scanner that can be used to seek this tree.
            </summary>
            <returns>A tree scanner instance for the sorted tree.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.GetNextNewNodeIndex">
            <summary>
            Returns the node index address for a freshly allocated block.
            </summary>
            <returns>Node index address for a freshly allocated block.</returns>
            <remarks>Also saves the header data.</remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.Open(SnapDB.IO.BinaryStreamPointerBase)">
            <summary>
            Opens a sorted tree using the provided stream.
            </summary>
            <param name="stream">Source stream to open.</param>
            <returns>Sorted tree using the provided stream.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.Create(SnapDB.IO.BinaryStreamPointerBase,System.Int32)">
            <summary>
            Creates a new fixed size SortedTree using the provided stream.
            </summary>
            <param name="stream">Source stream.</param>
            <param name="blockSize">Block size.</param>
            <returns>New fixed size SortedTree using the provided stream.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTree`2.Create(SnapDB.IO.BinaryStreamPointerBase,System.Int32,SnapDB.Snap.EncodingDefinition)">
            <summary>
            Creates a new SortedTree writing to the provided streams and using the specified compression method for the tree node.
            </summary>
            <param name="stream">Source stream.</param>
            <param name="blockSize">Block size.</param>
            <param name="treeNodeType">Encoding definition.</param>
            <returns>New SortedTree writing to the provided streams and using the specified compression method for the tree node.</returns>
        </member>
        <member name="T:SnapDB.Snap.Tree.SortedTreeScannerBase`2">
            <summary>
            Base class for reading from any implementation of a sorted trees.
            </summary>
            <typeparam name="TKey">The key type to use in the <see cref="T:SnapDB.Snap.Tree.SortedTreeScannerBase`2"/>.</typeparam>
            <typeparam name="TValue">The value type to use in the <see cref="T:SnapDB.Snap.Tree.SortedTreeScannerBase`2"/>.</typeparam>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeScannerBase`2.BlockSize">
            <summary>
            Represents the size of the block within the node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeScannerBase`2.IndexOfNextKeyValue">
            <summary>
            The index number of the next key/value that needs to be read.
            The valid range of this field is [0, RecordCount - 1].
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeScannerBase`2.KeyMethods">
            <summary>
            Represents the custom methods for the keys used in this context.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeScannerBase`2.KeySize">
            <summary>
            Represents the size, in bytes, of the keys used in this context.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeScannerBase`2.LowerKey">
            <summary>
            Represents the lower bound key used in this context.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeScannerBase`2.Stream">
            <summary>
            Represents the stream used in this context.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeScannerBase`2.UpperKey">
            <summary>
            Represents the upper bound key used in this context.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.SortedTreeScannerBase`2.ValueSize">
            <summary>
            Represents the size, in bytes, of the values used in this context.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.#ctor(System.Byte,System.Int32,SnapDB.IO.BinaryStreamPointerBase,System.Func{`0,System.Byte,System.UInt32})">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Tree.GenericEncodedNodeScanner`2"/> class.
            </summary>
            <param name="level">The level of the node within the tree.</param>
            <param name="blockSize">The size of each block within the node.</param>
            <param name="stream">The binary stream to read data from.</param>
            <param name="lookupKey">A function for looking up a key.</param>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.IsAlwaysSequential">
            <summary>
            Gets if the stream is always in sequential order. Do not return <c>true</c> unless it is guaranteed that
            the data read from this stream is sequential.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.NeverContainsDuplicates">
            <summary>
            Gets if the stream will never return duplicate keys. Do not return true unless it is guaranteed that
            the data read from this stream will never contain duplicates.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.HeaderSize">
            <summary>
            The number of bytes in the header of any given node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.LeftSiblingNodeIndex">
            <summary>
            The node index of the previous sibling.
            uint.MaxValue means there is no sibling to the right.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.NodeIndex">
            <summary>
            The index of the current node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.Pointer">
            <summary>
            The pointer that is right after the header of the node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.PointerVersion">
            <summary>
            The pointer version of the <see cref="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.Pointer"/>.
            Compare to Stream.PointerVersion to find out if
            this pointer is current.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.RecordCount">
            <summary>
            The number of records in the current node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.RightSiblingNodeIndex">
            <summary>
            The node index of the next sibling.
            uint.MaxValue means there is no sibling to the right.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.OffsetOfUpperBounds">
            <summary>
            Gets the byte offset of the upper bounds key.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.SeekToStart">
            <summary>
            Seeks to the start of SortedTree.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.SeekToKey(`0)">
            <summary>
            Seeks the stream to the first value greater than or equal to <paramref name="key"/>.
            </summary>
            <param name="key">The key to seek to.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.Peek(`0,`1)">
            <summary>
            Reads the next point, but doees not advance the position of the stream.
            </summary>
            <param name="key">the key to write the results to</param>
            <param name="value">the value to write the results to</param>
            <returns>
            <c>true</c> if a point is found; otherwise, the end of the stream has been encountered and <c>false</c> is returned.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.ReadWhile(`0,`1,`0)">
            <summary>
            Continues to advance the stream
            but stops short of returning the point that is equal to
            the provided key.
            </summary>
            <param name="key">Where to store the key.</param>
            <param name="value">Where to store the value.</param>
            <param name="upperBounds">
            The test condition. Will return <c>false</c> if the returned point would have
            exceeded this value.
            </param>
            <returns>
            Returns <c>true</c> if the point returned is valid; otherwise, <c>false</c> if:
            The point read is greater than or equal to <paramref name="upperBounds"/> or 
            The end of the stream is reached or 
            The end of the current node has been reached.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.ReadWhile(`0,`1,`0,SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Using the provided filter, continues to advance the stream
            but stops short of returning the point that is equal to
            the provided key.
            </summary>
            <param name="key">Where to store the key.</param>
            <param name="value">Where to store the value.</param>
            <param name="upperBounds">
            the test condition. Will return <c>false</c> if the returned point would have
            exceedd this value
            </param>
            <param name="filter">The filter to apply to the reading.</param>
            <returns>
            Returns <c>true</c> if the point returned is valid; otherwise, <c>false</c> if:
            The point read is greater than or equal to <paramref name="upperBounds"/> or  
            The end of the stream is reached or 
            The end of the current node has been reached.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.ReadBackwardish(`0,`1)">
            <summary>
            Reads the key-value pair backwardish (in reverse order) from the tree node.
            </summary>
            <param name="key">The key to read.</param>
            <param name="value">The value to read.</param>
            <returns>
              <c>true</c> if there are more records to read; otherwise, <c>false</c>.
            </returns>
            <remarks>
            Note: This method will read each leaf node in reverse order. However, each leaf itself will be sorted
            ascending, only when moving from leaf node to leave node will this occur in reverse order.
            Note: This functionality should be used only to inspect the contests of a file, and not be
            used to attempt supporting reverse readings of files.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.InternalPeek(`0,`1)">
            <summary>
            Peeks at the next key and value in the node without advancing the cursor.
            </summary>
            <param name="key">The key to peek into.</param>
            <param name="value">The value to peek into.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.InternalRead(`0,`1)">
            <summary>
            Reads the next key and value from the node and advances the cursor.
            </summary>
            <param name="key">The key to read into.</param>
            <param name="value">The value to read into.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.InternalRead(`0,`1,SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads the next key and value from the node while applying a filter and advances the cursor.
            </summary>
            <param name="key">The key to read into.</param>
            <param name="value">The value to read into.</param>
            <param name="filter">The filter to apply during reading.</param>
            <returns><c>true</c> if the read key and value pass the filter; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.InternalReadWhile(`0,`1,`0)">
            <summary>
            Reads the next key and value from the node while the key is less than the upper bounds and advances the cursor.
            </summary>
            <param name="key">The key to read into.</param>
            <param name="value">The value to read into.</param>
            <param name="upperBounds">The upper bounds for key comparison.</param>
            <returns><c>true</c> if the read key and value meet the condition; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.InternalReadWhile(`0,`1,`0,SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads the next key and value from the node while applying a filter and the key is less than the upper bounds, and advances the cursor.
            </summary>
            <param name="key">The key to read into.</param>
            <param name="value">The value to read into.</param>
            <param name="upperBounds">The upper bounds for key comparison.</param>
            <param name="filter">The filter to apply during reading.</param>
            <returns><c>true</c> if the read key and value pass the filter and meet the condition; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.FindKey(`0)">
            <summary>
            Using <see cref="P:SnapDB.Snap.Tree.SortedTreeScannerBase`2.Pointer"/> advance to the search location of the provided <paramref name="key"/>.
            </summary>
            <param name="key">The key to advance to.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.FindLeafNodeAddress(`0)">
            <summary>
            Gets the block index when seeking for the provided key.
            </summary>
            <param name="key">The key to start the search from.</param>
            <returns>The resultant block index found after seeking for the provided key.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.OnNoadReload">
            <summary>
            Occurs when a node's data is reset.
            Derived classes can override this
            method if fields need to be reset when a node is loaded.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.PeekCatchAll(`0,`1)">
            <summary>
            Peeks at the next key and value in the node without advancing the cursor and handles various cases.
            </summary>
            <param name="key">The key to peek into.</param>
            <param name="value">The value to peek into.</param>
            <returns>True if the peek was successful and there are more records; otherwise, false.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.ReadWhileCatchAll(`0,`1,`0)">
            <summary>
            Reads key-value pairs in the node while the key is less than the upper bounds,
            handling various cases and advancing the cursor.
            </summary>
            <param name="key">The key to read into.</param>
            <param name="value">The value to read into.</param>
            <param name="upperBounds">The upper bounds for key comparison.</param>
            <returns><c>true</c> if there are more records matching the condition; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.ReadWhileCatchAll(`0,`1,`0,SnapDB.Snap.Filters.MatchFilterBase{`0,`1})">
            <summary>
            Reads key-value pairs in the node while the key is less than the upper bounds,
            applying an optional filter, and advancing the cursor.
            </summary>
            <param name="key">The key to read into.</param>
            <param name="value">The value to read into.</param>
            <param name="upperBounds">The upper bounds for key comparison.</param>
            <param name="filter">An optional filter to apply to matching records.</param>
            <returns><c>true</c> if there are more records matching the condition; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.ReadNext(`0,`1)">
            <summary>
            Advances the stream to the next value.
            If before the beginning of the stream, advances to the first value.
            </summary>
            <param name="key">The key to advance to.</param>
            <param name="value">The value associated with the key to advance to.</param>
            <returns><c>true</c> if the advance was successful; otherwise, <c>false</c> if the end of the stream was reached.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.ReadCatchAll(`0,`1)">
            <summary>
            A catch all read function.
            </summary>
            <param name="key">The key to read.</param>
            <param name="value">The value associated with the key to read.</param>
            <returns><c>true</c> if the advance was successful; otherwise, <c>false</c> to indicate that the end of stream has been reached.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.LoadNode(System.UInt32)">
            <summary>
            Loads the header data for the provided node.
            </summary>
            <param name="index">The node index.</param>
            <exception cref="T:System.ArgumentNullException">
            occurs when <paramref name="index"/>
            is equal to uint.MaxValue.
            </exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.SortedTreeScannerBase`2.RefreshPointer">
            <summary>
            Gets the pointer for the provided block.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Tree.SparseIndex`1">
            <summary>
            Contains information on how to parse the index nodes of the SortedTree.
            </summary>
            <typeparam name="TKey">The key type for the sparse index.</typeparam>
        </member>
        <member name="E:SnapDB.Snap.Tree.SparseIndex`1.RootHasChanged">
            <summary>
            Event raised when the root of the tree changes,
            thus <see cref="P:SnapDB.Snap.Tree.SparseIndex`1.RootNodeIndexAddress"/> and <see cref="P:SnapDB.Snap.Tree.SparseIndex`1.RootNodeLevel"/>
            need to be saved to the header.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.#ctor">
            <summary>
            Creates a new sparse index. Be sure to initialize this class by calling <see cref="M:SnapDB.Snap.Tree.SparseIndex`1.Initialize(SnapDB.IO.BinaryStreamPointerBase,System.Int32,System.Func{System.UInt32},System.Byte,System.UInt32)"/> before using this.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SparseIndex`1.RootNodeIndexAddress">
            <summary>
            Gets the indexed address for the root node.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.SparseIndex`1.RootNodeLevel">
            <summary>
            Gets the level of the root node. If this is zero, there is only 1 leaf node.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.Initialize(SnapDB.IO.BinaryStreamPointerBase,System.Int32,System.Func{System.UInt32},System.Byte,System.UInt32)">
            <summary>
            Creates a sparse index on the tree.
            </summary>
            <param name="stream">The stream to use to write the index</param>
            <param name="blockSize">The size of each node that will be used by this index.</param>
            <param name="getNextNewNodeIndex">A method to use when additional nodes must be allocated.</param>
            <param name="rootNodeLevel">the level of the root node.</param>
            <param name="rootNodeIndexAddress">the address location for the root node.</param>
            <exception cref="T:System.Exception">Throw of duplicate calls are made to this function</exception>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown if the block size is not large enough to store at least 4 elements.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.GetFirstIndex(System.Byte)">
            <summary>
            Gets the node index of the first leaf node in the tree.
            </summary>
            <param name="level">The level of the node requesting the lookup.</param>
            <returns>The index of the first leaf node.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.GetLastIndex(System.Byte)">
            <summary>
            Gets the node index of the last leaf node in the tree.
            </summary>
            <param name="level">The level of the node to find.</param>
            <returns>The index address of the last node at the specified level.</returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.Get(`0,System.Byte)">
            <summary>
            Gets the data for the following key.
            </summary>
            <param name="key">The key to look up. Only uses the key portion of the TKeyValue</param>
            <param name="level">The level in the sorted tree that the search is at.</param>
            <returns>
            The value associated with the specified key at the given level, or a default value
            if the key is not found in the sorted tree.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.UpdateKey(`0,`0,System.Byte)">
            <summary>
            Updates the specified leaf node to the provided key.
            </summary>
            <param name="oldKey">The old key that is to be updated.</param>
            <param name="newKey">The new key to replace the old key.</param>
            <param name="level">The level of the node.</param>
            <exception cref="T:System.Exception">Thrown if key of root cannot be updated.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.UpdateValue(`0,SnapDB.Snap.Types.SnapUInt32,System.Byte)">
            <summary>
            Updates the value for the provided key.
            </summary>
            <param name="key">The key whose value is to be updated.</param>
            <param name="value">The value to be updated associated with the key.</param>
            <param name="level">The level of the node.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.Remove(`0,System.Byte)">
            <summary>
            Removes the specified leaf node from the sparse index
            </summary>
            <param name="key">The leaf node to remove.</param>
            <param name="level">The level of the node being removed.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.CanCombineWithSiblings(`0,System.Byte,System.Boolean@,System.Boolean@)">
            <summary>
            When attempting to remove or combine a node, we must check the parent to find which one will be supported to remove.
            </summary>
            <param name="key">The lower key of the node that is being combined or removed.</param>
            <param name="level">The level of the node where combination is occurring.</param>
            <param name="canCombineLeft">Outputs <c>true</c> if this node may be combined with the left node; otherwise, <c>false</c>.</param>
            <param name="canCombineRight">Outputs <c>true</c> if this node may be combined with the right node; otherwise, <c>false</c>.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.Add(`0,System.UInt32,System.Byte)">
            <summary>
            Adds the following node pointer to the sparse index.
            </summary>
            <param name="nodeKey">the first key in the <paramref name="pointer"/>. Only uses the key portion of the TKeyValue</param>
            <param name="pointer">the index of the later node</param>
            <param name="level">the level of the node being added</param>
            <remarks>
            This class will add the new node data to the parent node,
            or create a new root if the current root is split.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.CreateNewRootNode(`0,System.UInt32)">
            <summary>
            Creates a new root node by combining the current root node with the provided node data.
            </summary>
            <param name="leafKey">The type of leaf being combined.</param>
            <param name="leafNodeIndex">The index that specifies location of the leaf node.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.SetCapacity(System.Int32)">
            <summary>
            Sets the capacity to the following number of levels.
            </summary>
            <param name="count">The number of levels to include.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.OnRootHasChanged">
            <summary>
            Raises the event
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.SparseIndex`1.FindNode(`0,System.Int32)">
            <summary>
            Gets the node at the provided <paramref name="level"/> where the provided <paramref name="key"/> fits.
            </summary>
            <param name="key">The key to find or insert.</param>
            <param name="level">The level of the node to find.</param>
            <returns>The node at the specified level that contains or should contain the given key.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">
            Thrown if <paramref name="level"/> is less than or equal to 0, or greater than the root node level.
            </exception>
        </member>
        <member name="T:SnapDB.Snap.Tree.Specialized.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Tree.Specialized"/> namespace organizes all common SnapDB library functionality related to sorted binary tree nodes,
            e.g., the <see cref="T:SnapDB.Snap.Tree.Specialized.SequentialSortedTreeWriter`2"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Tree.Specialized.NodeHeader`1">
            <summary>
            Contains basic data about a node in the SortedTree.
            </summary>
            <typeparam name="TKey">The key that the SortedTree contains.</typeparam>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.Version">
            <summary>
            The version of the node header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.IndexSize">
            <summary>
            The size, in bytes, of an index field.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.OffsetOfLeftSibling">
            <summary>
            The offset of the left sibling node index field within the node header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.OffsetOfLowerBounds">
            <summary>
            The offset of the lower bounds field within the node header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.OffsetOfNodeLevel">
            <summary>
            The offset of the node level field within the node header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.OffsetOfRecordCount">
            <summary>
            The offset of the record count field within the node header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.OffsetOfRightSibling">
            <summary>
            The offset of the right sibling node index field within the node header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.OffsetOfValidBytes">
            <summary>
            The offset of the valid bytes field within the node header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.OffsetOfVersion">
            <summary>
            The offset of the version field within the node header.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.BlockSize">
            <summary>
            The size, in bytes, of the node block.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.KeySize">
            <summary>
            The size, in bytes, of a key.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.LeftSiblingNodeIndex">
            <summary>
            The index of the left sibling node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.Level">
            <summary>
            The level of the node within the B-tree structure.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.LowerKey">
            <summary>
            The lower key associated with the node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.NodeIndex">
            <summary>
            The index of the node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.RecordCount">
            <summary>
            The number of records within the node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.RightSiblingNodeIndex">
            <summary>
            The index of the right sibling node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.UpperKey">
            <summary>
            The upper key associated with the node.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Tree.Specialized.NodeHeader`1.ValidBytes">
            <summary>
            The number of valid bytes within the node.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.NodeHeader`1.#ctor(System.Byte,System.Int32)">
            <summary>
            The constructor that is used for inheriting. Must call Initialize before using it.
            </summary>
            <param name="level">The level of the node.</param>
            <param name="blockSize">The size of the block.</param>
        </member>
        <member name="P:SnapDB.Snap.Tree.Specialized.NodeHeader`1.HeaderSize">
            <summary>
            Gets the byte offset of the header size.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Specialized.NodeHeader`1.RemainingBytes">
            <summary>
            Gets the number of remaining bytes in the current data block.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Specialized.NodeHeader`1.OffsetOfUpperBounds">
            <summary>
            Gets the byte offset of the upper bounds key.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.NodeHeader`1.Save(System.Byte*)">
            <summary>
            Saves the node header data to a memory location pointed to by a byte pointer.
            </summary>
            <param name="ptr">A pointer to the memory location where the node header data should be saved.</param>
        </member>
        <member name="T:SnapDB.Snap.Tree.Specialized.NodeWriter`2">
            <summary>
            Provides methods for writing sequential-order nodes in a tree structure.
            </summary>
            <typeparam name="TKey">The type of keys stored in the nodes.</typeparam>
            <typeparam name="TValue">The type of values stored in the nodes.</typeparam>
            <remarks>
            This class is designed for writing nodes in a tree structure, and it is typically used to create or modify tree nodes.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.NodeWriter`2.Create(SnapDB.Snap.EncodingDefinition,SnapDB.IO.BinaryStreamPointerBase,System.Int32,System.Byte,System.UInt32,System.Func{System.UInt32},SnapDB.Snap.Tree.Specialized.SparseIndexWriter{`0},SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Creates a new node with the specified parameters and initializes its header and encoding.
            </summary>
            <param name="encodingMethod">The encoding method to be used for the node.</param>
            <param name="stream">The binary stream where the node will be created.</param>
            <param name="blockSize">The size of the node's data block.</param>
            <param name="level">The level of the node in the tree.</param>
            <param name="startingNodeIndex">The index of the starting node.</param>
            <param name="getNextNewNodeIndex">A function to get the next new node index.</param>
            <param name="sparseIndex">The sparse index writer for the tree.</param>
            <param name="treeStream">The tree stream.</param>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.NodeWriter`2.NewNodeThenInsert(SnapDB.Snap.Tree.Specialized.NodeHeader{`0},SnapDB.Snap.Tree.Specialized.SparseIndexWriter{`0},System.UInt32,System.Byte*,`0)">
            <summary>
            Closes the current node and prepares a new node with the supplied key.
            </summary>
            <param name="sparseIndex"></param>
            <param name="newNodeIndex">the index for the next node.</param>
            <param name="writePointer">the pointer to the start of the block</param>
            <param name="key">the key to use.</param>
            <param name="header"></param>
        </member>
        <member name="T:SnapDB.Snap.Tree.Specialized.SequentialSortedTreeWriter`2">
            <summary>
            A specialized serialization method for writing data to a disk in the SortedTreeStore method.
            </summary>
            <typeparam name="TKey">The type of keys stored in the tree.</typeparam>
            <typeparam name="TValue">The type of values stored in the tree.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.SequentialSortedTreeWriter`2.Create(SnapDB.IO.BinaryStreamPointerBase,System.Int32,SnapDB.Snap.EncodingDefinition,SnapDB.Snap.TreeStream{`0,`1})">
            <summary>
            Writes the supplied stream to the binary stream.
            </summary>
            <param name="stream">The stream to store the sorted tree structure.</param>
            <param name="blockSize">The size of each block in the stream.</param>
            <param name="treeNodeType">The encoding definition for tree node data.</param>
            <param name="treeStream">The tree stream to initialize the sorted tree structure.</param>
            <exception cref="T:System.ArgumentNullException">Thrown if <paramref name="stream"/>, <paramref name="treeStream"/>, or <paramref name="treeNodeType"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown if <paramref name="treeStream"/> does not guarantee sequential reads or contains duplicates.</exception>
        </member>
        <member name="T:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1">
            <summary>
            Contains information on how to parse the index nodes of the SortedTree.
            </summary>
            <typeparam name="TKey">The key type.</typeparam>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.#ctor">
            <summary>
            Creates a new sparse index.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.Count">
            <summary>
            Gets the number of nodes in the sparse index.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.IsAlwaysSequential">
            <summary>
            Gets a value indicating whether the data source is always sequential.
            </summary>
            <remarks>
            When this property is <c>true</c>, it means that the data source maintains a sequential order for its elements.
            In other words, the elements are stored and retrieved in a fixed order that does not change.
            </remarks>
        </member>
        <member name="P:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.NeverContainsDuplicates">
            <summary>
            Gets a value indicating whether the data source never contains duplicate elements.
            </summary>
            <remarks>
            When this property is <c>true</c>, it means that the data source does not allow duplicate elements.
            Each key in the data source is unique, and attempts to add duplicate keys may be ignored or overwritten.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.Dispose(System.Boolean)">
            <summary>
            Releases the resources used by the current instance of the class.
            </summary>
            <param name="disposing">A flag indicating whether to release both managed and unmanaged resources (<c>true</c>), or only unmanaged resources (<c>false</c>).</param>
            <remarks>
            This method is called by the <see cref="M:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.Dispose(System.Boolean)"/> method and the finalizer to release the resources used by the current instance of the class.
            It disposes of the underlying stream.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.Add(System.UInt32,`0,System.UInt32)">
            <summary>
            Adds the following node pointer to the sparse index.
            </summary>
            <param name="leftPointer">The pointer to the left element, Only used to prime the list.</param>
            <param name="nodeKey">the first key in the <paramref name="pointer"/>. Only uses the key portion of the TKeyValue</param>
            <param name="pointer">the index of the later node</param>
            <remarks>
            This class will add the new node data to the parent node,
            or create a new root if the current root is split.
            </remarks>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.SwitchToReading">
            <summary>
            Switches the stream to reading mode.
            </summary>
            <remarks>
            This method sets the stream position to the beginning and marks it as reading mode.
            </remarks>
            <exception cref="T:System.Exception">Thrown if this method is called more than once.</exception>
        </member>
        <member name="M:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.ReadNext(`0,SnapDB.Snap.Types.SnapUInt32)">
            <summary>
            Reads the next key-value pair from the data source.
            </summary>
            <returns>
            <c>true</c> if a key-value pair was successfully read; otherwise, <c>false</c> if the end of the data source is reached.
            </returns>
            <remarks>
            This method is used to sequentially read key-value pairs from the data source.
            It should be called after switching to reading mode using <see cref="M:SnapDB.Snap.Tree.Specialized.SparseIndexWriter`1.SwitchToReading"/> method.
            </remarks>
            <paramref name="key">The key to read.</paramref>
            <paramref name="value">The value to read.</paramref>
        </member>
        <member name="T:SnapDB.Snap.Types.IHasTimestampField">
            <summary>
            A point that has a timestamp field that may be extracted.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.IHasTimestampField.TryGetDateTime(System.DateTime@)">
            <summary>
            Attempts to get the timestamp field of a point. This function might fail if the datetime field
            is not able to be converted.
            </summary>
            <param name="timestamp">An output field of the timestamp.</param>
            <returns><c>true</c> if a timestamp could be parsed; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:SnapDB.Snap.Types.Int32.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Types.Int32"/> namespace organizes all common SnapDB library functionality related to signed 32-bit integers,
            e.g., the <see cref="T:SnapDB.Snap.Types.SnapInt32"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Types.SnapInt32">
            <summary>
            Represents a 32-bit integer value that can be serialized.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Types.SnapInt32.Value">
            <summary>
            Gets or sets the integer value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Types.SnapInt32"/> class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.#ctor(System.Int32)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Snap.Types.SnapInt32"/> class with the specified value.
            </summary>
            <param name="value">The integer value to initialize with.</param>
        </member>
        <member name="P:SnapDB.Snap.Types.SnapInt32.GenericTypeGuid">
            <summary>
            Gets the globally unique identifier (GUID) representing the SnapInt32 data type.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Types.SnapInt32.Size">
            <summary>
            Gets the size of the SnapInt32 data type in bytes.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.CopyTo(SnapDB.Snap.Types.SnapInt32)">
            <summary>
            Copies the value of this SnapInt32 to the specified destination SnapInt32.
            </summary>
            <param name="destination">The destination SnapInt32 to copy to.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.CompareTo(SnapDB.Snap.Types.SnapInt32)">
            <summary>
            Compares this SnapInt32 to another SnapInt32 and returns an integer that indicates their relative values.
            </summary>
            <param name="other">The SnapInt32 to compare with.</param>
            <returns>A signed integer that indicates the relative values of this instance and the other SnapInt32.</returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.CompareTo(System.Byte*)">
            <summary>
            Compares this SnapInt32 to a memory stream and returns an integer that indicates their relative values.
            </summary>
            <param name="stream">A pointer to the memory stream to compare with.</param>
            <returns>A signed integer that indicates the relative values of this instance and the memory stream.</returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.SetMin">
            <summary>
            Sets the value of this SnapInt32 to the minimum possible value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.SetMax">
            <summary>
            Sets the value of this SnapInt32 to the maximum possible value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.Clear">
            <summary>
            Clears the value of this SnapInt32, setting it to 0.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.Read(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Reads the value of this SnapInt32 from a binary stream.
            </summary>
            <param name="stream">The binary stream from which to read the value.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.Write(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Writes the value of this SnapInt32 to a binary stream.
            </summary>
            <param name="stream">The binary stream to which to write the value.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.Read(System.Byte*)">
            <summary>
            Reads the value of this SnapInt32 from a memory stream.
            </summary>
            <param name="stream">A pointer to the memory stream from which to read the value.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.Write(System.Byte*)">
            <summary>
            Writes the value of this SnapInt32 to a memory stream.
            </summary>
            <param name="stream">A pointer to the memory stream to which to write the value.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.IsLessThan(SnapDB.Snap.Types.SnapInt32)">
            <summary>
            Determines whether this SnapInt32 is less than the specified SnapInt32.
            </summary>
            <param name="right">The SnapInt32 to compare to.</param>
            <returns><c>true</c> if this SnapInt32 is less than the specified SnapInt32; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.IsEqualTo(SnapDB.Snap.Types.SnapInt32)">
            <summary>
            Determines whether this SnapInt32 is equal to the specified SnapInt32.
            </summary>
            <param name="right">The SnapInt32 to compare to.</param>
            <returns><c>true</c> if this SnapInt32 is equal to the specified SnapInt32; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.IsGreaterThan(SnapDB.Snap.Types.SnapInt32)">
            <summary>
            Determines whether this SnapInt32 is greater than the specified SnapInt32.
            </summary>
            <param name="right">The SnapInt32 to compare to.</param>
            <returns><c>true</c> if this SnapInt32 is greater than the specified SnapInt32; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.IsGreaterThanOrEqualTo(SnapDB.Snap.Types.SnapInt32)">
            <summary>
            Determines whether this SnapInt32 is greater than or equal to the specified SnapInt32.
            </summary>
            <param name="right">The SnapInt32 to compare to.</param>
            <returns><c>true</c> if this SnapInt32 is greater than or equal to the specified SnapInt32; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.IsBetween(SnapDB.Snap.Types.SnapInt32,SnapDB.Snap.Types.SnapInt32)">
            <summary>
            Determines whether this SnapInt32 is between the specified lower and upper bounds (inclusive).
            </summary>
            <param name="lowerBounds">The lower bounds SnapInt32 to compare to.</param>
            <param name="upperBounds">The upper bounds SnapInt32 to compare to.</param>
            <returns><c>true</c> if this SnapInt32 is between the specified lower and upper bounds; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapInt32.CreateValueMethods">
            <summary>
            Creates and returns custom methods for SnapInt32 values.
            </summary>
            <returns>A <see cref="T:SnapDB.Snap.SnapTypeCustomMethods`1"/> instance for SnapInt32.</returns>
        </member>
        <member name="T:SnapDB.Snap.Types.SnapCustomMethodsInt32">
            <summary>
            Provides custom methods and algorithms for performing operations on SnapInt32 values.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapCustomMethodsInt32.BinarySearch(System.Byte*,SnapDB.Snap.Types.SnapInt32,System.Int32,System.Int32)">
            <summary>
            Performs a binary search within a memory block that is being pointed to.
            </summary>
            <param name="pointer">The pointer to the memory block where the search will be performed.</param>
            <param name="key2">The key to be compared to.</param>
            <param name="recordCount">The number of records in the memory block.</param>
            <param name="keyValueSize">The size of each key value pair in bytes.</param>
            <returns>
            The index of the found key if it exists, or the bitwise complement of the index
            where the key should be inserted if it doesn't exist.
            </returns>
        </member>
        <member name="T:SnapDB.Snap.Types.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Types"/> namespace organizes all common SnapDB library functionality related to timestamp information,
            e.g., the <see cref="T:SnapDB.Snap.Types.TimestampBase`1"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Types.TimestampBase`1">
            <summary>
            Base implementation of a historian key.
            These are the required functions that are
            necessary for the historian engine to operate
            </summary>
            <typeparam name="TKey"></typeparam>
        </member>
        <member name="F:SnapDB.Snap.Types.TimestampBase`1.Timestamp">
            <summary>
            The timestamp stored as native ticks.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.TimestampBase`1.SnapDB#Snap#Types#IHasTimestampField#TryGetDateTime(System.DateTime@)">
            <summary>
            Attempts to get the timestamp field of a point. This function might fail if the datetime field
            is not able to be converted.
            </summary>
            <param name="timestamp">an output field of the timestamp</param>
            <returns><c>true</c> if a timestamp could be parsed; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:SnapDB.Snap.Types.TimestampPointIDBase`1">
            <summary>
            Base implementation of a historian key.
            These are the required functions that are
            necessary for the historian engine to operate
            </summary>
            <typeparam name="TKey"></typeparam>
        </member>
        <member name="F:SnapDB.Snap.Types.TimestampPointIDBase`1.PointID">
            <summary>
            The ID number of the point.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Types.UInt32.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Snap.Types.UInt32"/> namespace organizes all common SnapDB library functionality related to unsigned 32-bit integers,
            e.g., the <see cref="T:SnapDB.Snap.Types.SnapUInt32"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Snap.Types.SnapUInt32">
            <summary>
            Represents an unsigned 32-bit integer in a SnapDB database.
            </summary>
        </member>
        <member name="F:SnapDB.Snap.Types.SnapUInt32.Value">
            <summary>
            The value of the SnapUInt32.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.#ctor">
            <summary>
            Initializes a new instance of the SnapUInt32 class.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.#ctor(System.UInt32)">
            <summary>
            Initializes a new instance of the SnapUInt32 class with a specified value.
            </summary>
            <param name="value">The initial value of the SnapUInt32 that will be specified.</param>
        </member>
        <member name="P:SnapDB.Snap.Types.SnapUInt32.GenericTypeGuid">
            <summary>
            Gets the GUID for the SnapUInt32 type.
            </summary>
        </member>
        <member name="P:SnapDB.Snap.Types.SnapUInt32.Size">
            <summary>
            Gets the size, in bytes, of the SnapUInt32 data type.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.CopyTo(SnapDB.Snap.Types.SnapUInt32)">
            <summary>
            Copies the SnapUInt32 value to the specified destination SnapUInt32.
            </summary>
            <param name="destination">The SnapUInt32 instance to which the value is copied.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.CompareTo(SnapDB.Snap.Types.SnapUInt32)">
            <summary>
            Compares this SnapUInt32 to another SnapUInt32 which then returns a value indicating their relative order.
            </summary>
            <param name="other">The SnapUInt32 being compared to.</param>
            <returns>A signed integer that indicates the relative order of the SnapUInt32 values.</returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.CompareTo(System.Byte*)">
            <summary>
            Compares this SnapUInt32 to a memory stream and returns a value indicating their relative order.
            </summary>
            <param name="stream">A pointer to the memory stream comtaining the SnapUInt32 value to compare to.</param>
            <returns>A signed integer that indicates the relative order of the SnapUInt32 value in the memory stream.</returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.SetMin">
            <summary>
            Sets the value of this SnapUInt32 to the minimum possible value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.SetMax">
            <summary>
            Sets the SnapUInt32 value to the maximum possible value (UInt32.MaxValue).
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.Clear">
            <summary>
            Clears (sets to zero) the SnapUInt32 value.
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.Read(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Reads a SnapUInt32 value from the specified binary stream.
            </summary>
            <param name="stream">The binary stream from which to read the SnapUInt32 value.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.Write(SnapDB.IO.BinaryStreamBase)">
            <summary>
            Writes the SnapUInt32 value to the specified binary stream.
            </summary>
            <param name="stream">The binary stream to which to write the SnapUInt32 value.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.Read(System.Byte*)">
            <summary>
            Reads a SnapUInt32 value from the specified byte stream pointer.
            </summary>
            <param name="stream">A pointer to the byte stream from which to read the SnapUInt32 value.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.Write(System.Byte*)">
            <summary>
            Writes the SnapUInt32 value to the specified byte stream pointer.
            </summary>
            <param name="stream">A pointer to the byte stream to which to write the SnapUInt32 value.</param>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.IsLessThan(SnapDB.Snap.Types.SnapUInt32)">
            <summary>
            Determines whether the current SnapUInt32 is less than the specified SnapUInt32.
            </summary>
            <param name="right">The SnapUInt32 to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current SnapUInt32 is less than the specified SnapUInt32; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.IsEqualTo(SnapDB.Snap.Types.SnapUInt32)">
            <summary>
            Determines whether the current SnapUInt32 is equal to the specified SnapUInt32.
            </summary>
            <param name="right">The SnapUInt32 to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current SnapUInt32 is equal to the specified SnapUInt32; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.IsGreaterThan(SnapDB.Snap.Types.SnapUInt32)">
            <summary>
            Determines whether the current SnapUInt32 is greater than the specified SnapUInt32.
            </summary>
            <param name="right">The SnapUInt32 to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current SnapUInt32 is greater than the specified SnapUInt32; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.IsGreaterThanOrEqualTo(SnapDB.Snap.Types.SnapUInt32)">
            <summary>
            Determines whether the current SnapUInt32 is greater than or equal to the specified SnapUInt32.
            </summary>
            <param name="right">The SnapUInt32 to compare with the current instance.</param>
            <returns>
            <c>true</c> if the current SnapUInt32 is greater than or equal to the specified SnapUInt32; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.IsBetween(SnapDB.Snap.Types.SnapUInt32,SnapDB.Snap.Types.SnapUInt32)">
            <summary>
            Determines whether the current SnapUInt32 is between the specified lower and upper bounds (inclusive lower bound, exclusive upper bound).
            </summary>
            <param name="lowerBounds">The lower bounds (inclusive).</param>
            <param name="upperBounds">The upper bounds (exclusive).</param>
            <returns>
            <c>true</c> if the current SnapUInt32 is between the specified lower and upper bounds; otherwise, <c>false</c>.
            </returns>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapUInt32.CreateValueMethods">
            <summary>
            Creates and returns a new instance of SnapCustomMethodsUInt32 to provide custom methods for SnapUInt32 values.
            </summary>
            <returns>A new instance of SnapCustomMethodsUInt32.</returns>
        </member>
        <member name="T:SnapDB.Snap.Types.SnapCustomMethodsUInt32">
            <summary>
            Provides custom methods for working with SnapDB data of type SnapUInt32 (unsigned 32-bit integer).
            </summary>
        </member>
        <member name="M:SnapDB.Snap.Types.SnapCustomMethodsUInt32.BinarySearch(System.Byte*,SnapDB.Snap.Types.SnapUInt32,System.Int32,System.Int32)">
            <summary>
            Performs a binary search for a specified key within a memory pointer containing SnapUInt32 values.
            </summary>
            <param name="pointer">A pointer to the memory stream containing the SnapUInt32 values.</param>
            <param name="key2">The SnapUInt32 key to search for.</param>
            <param name="recordCount">The total number of SnapUInt32 records in the memory stream.</param>
            <param name="keyValueSize">The size (in bytes) of each SnapUInt32 record.</param>
            <returns>
            The index of the found key if it exists, or a bitwise complement of the index where the key should be inserted if not found.
            </returns>
        </member>
        <member name="T:SnapDB.StepTimer">
            <summary>
            A utility class for measuring and analyzing the execution time of code segments.
            </summary>
        </member>
        <member name="T:SnapDB.StepTimer.ITimer">
            <summary>
            Represents an interface for measuring and recording the execution time of code segments.
            </summary>
        </member>
        <member name="M:SnapDB.StepTimer.ITimer.Stop(System.Int32)">
            <summary>
            Stops the timer and records the elapsed time for the code segment.
            </summary>
            <param name="loopCount">The number of times the code segment was executed (default is 1).</param>
        </member>
        <member name="M:SnapDB.StepTimer.Start(System.String,System.Boolean)">
            <summary>
            Starts a named timer and optionally forces garbage collection before starting.
            </summary>
            <param name="name">The name of the timer.</param>
            <param name="runGc">Indicates whether to force garbage collection before starting the timer.</param>
            <returns>An object implementing the ITimer interface that represents the started timer.</returns>
        </member>
        <member name="M:SnapDB.StepTimer.Reset">
            <summary>
            Resets all timers, clearing their recorded data.
            </summary>
        </member>
        <member name="M:SnapDB.StepTimer.GetAverage(System.String)">
            <summary>
            Calculates and returns the average execution time recorded by a timer with the specified name.
            </summary>
            <param name="name">The name of the timer for which to calculate the average.</param>
            <returns>The average execution time in seconds.</returns>
        </member>
        <member name="M:SnapDB.StepTimer.GetNanoSeconds(System.String,System.Int32)">
            <summary>
            Calculates and returns the average execution time in nanoseconds recorded by a timer with the specified name.
            </summary>
            <param name="name">The name of the timer for which to calculate the average.</param>
            <param name="loopCount">The number of iterations or loops used during measurements.</param>
            <returns>The average execution time in nanoseconds.</returns>
        </member>
        <member name="M:SnapDB.StepTimer.GetSlowest(System.String)">
            <summary>
            Calculates and returns the slowest recorded execution time (90th percentile) in seconds by a timer with the specified name.
            </summary>
            <param name="name">The name of the timer for which to calculate the slowest execution time.</param>
            <returns>The slowest recorded execution time in seconds.</returns>
        </member>
        <member name="M:SnapDB.StepTimer.GetResults">
            <summary>
            Generates a summary of recorded execution times for all timers and returns the results as a formatted string.
            </summary>
            <returns>A string containing the summary of recorded execution times for all timers.</returns>
        </member>
        <member name="M:SnapDB.StepTimer.Time(System.Int32,System.Action)">
            <summary>
            Measures the execution time of an action and returns the median execution time in microseconds.
            </summary>
            <param name="internalLoopCount">The number of internal loops used for timing.</param>
            <param name="del">The action to be timed.</param>
            <returns>The median execution time of the action in microseconds.</returns>
        </member>
        <member name="M:SnapDB.StepTimer.Time(System.Int32,System.Action{System.Diagnostics.Stopwatch})">
            <summary>
            Measures the execution time of an action that takes a Stopwatch parameter
            and returns the median execution time in microseconds.
            </summary>
            <param name="internalLoopCount">The number of internal loops used for timing.</param>
            <param name="del">The action to be timed, which takes a Stopwatch parameter.</param>
            <returns>The median execution time of the action in microseconds.</returns>
        </member>
        <member name="T:SnapDB.Text.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Text"/> namespace organizes all common SnapDB library functionality related to natural comparison mechanisms,
            e.g., the <see cref="T:SnapDB.Text.NaturalComparer"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Text.NaturalComparer">
            <summary>
            Provides a natural sorting mechanism for strings, considering embedded numeric values within the strings.
            </summary>
        </member>
        <member name="M:SnapDB.Text.NaturalComparer.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Text.NaturalComparer"/> class.
            </summary>
        </member>
        <member name="M:SnapDB.Text.NaturalComparer.Compare(System.String,System.String)">
            <summary>
            Compares two strings using natural sorting rules.
            </summary>
            <param name="x">The first string to compare.</param>
            <param name="y">The second string to compare.</param>
            <returns>
            A signed integer that indicates the relative values of <paramref name="x"/> and <paramref name="y"/>,
            as shown in the following table:
            -1 if <paramref name="x"/> is less than <paramref name="y"/>,
            0 if <paramref name="x"/> equals <paramref name="y"/>,
            1 if <paramref name="x"/> is greater than <paramref name="y"/>.
            </returns>
        </member>
        <member name="M:SnapDB.Text.NaturalComparer.PartCompare(System.String,System.String)">
            <summary>
            Compares two string parts, handling numeric values within the strings.
            </summary>
            <param name="left">The left string part to compare.</param>
            <param name="right">The right string part to compare.</param>
            <returns>
            A signed integer that indicates the relative values of <paramref name="left"/> and <paramref name="right"/>,
            as shown in the following table:
            -1 if <paramref name="left"/> is less than <paramref name="right"/>,
            0 if <paramref name="left"/> equals <paramref name="right"/>,
            1 if <paramref name="left"/> is greater than <paramref name="right"/>.
            </returns>
        </member>
        <member name="T:SnapDB.Threading.AtomicInt64">
            <summary>
            Represents an atomic 64-bit signed integer.
            </summary>
            <remarks>
            Since 64 bit reads/asignments are not atomic on a 32-bit process, this class
            wraps the <see cref="T:System.Threading.Interlocked"/> class to if using a 32-bit process to ensure
            atomic reads and writes.
            </remarks>
        </member>
        <member name="M:SnapDB.Threading.AtomicInt64.#ctor(System.Int64)">
            <summary>
            Initializes a new instance of the AtomicInt64 class with an optional initial value.
            </summary>
            <param name="value">The optional initial value for the AtomicInt64. Default is 0.</param>
        </member>
        <member name="P:SnapDB.Threading.AtomicInt64.Value">
            <summary>
            Gets or sets the value of the AtomicInt64.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.AtomicInt64.op_Implicit(SnapDB.Threading.AtomicInt64)~System.Int64">
            <summary>
            Implicitly converts an AtomicInt64 to a long.
            </summary>
            <param name="value">The AtomicInt64 instance to convert.</param>
            <returns>The long value obtained from the AtomicInt64 instance.</returns>
        </member>
        <member name="T:SnapDB.Threading.EventTimer">
            <summary>
            A timer event that occurs on a specific interval at a specific offset.
            This class is thread safe.
            </summary>
        </member>
        <member name="E:SnapDB.Threading.EventTimer.Elapsed">
            <summary>
            Occurs when the timer elapses.
            Event occurs on the ThreadPool
            </summary>
        </member>
        <member name="M:SnapDB.Threading.EventTimer.#ctor(System.TimeSpan,System.TimeSpan)">
            <summary>
            Initializes a new instance of the EventTimer class with the specified period and day offset.
            </summary>
            <param name="period">The time interval between timer ticks.</param>
            <param name="dayOffset">The time offset added to each tick.</param>
        </member>
        <member name="P:SnapDB.Threading.EventTimer.Enabled">
            <summary>
            Gets or sets a value indicating whether the timer is enabled.
            </summary>
            <remarks>
            When setting to <c>true</c>, it starts the timer; when setting to <c>false</c>, it stops the timer.
            </remarks>
        </member>
        <member name="P:SnapDB.Threading.EventTimer.TimeUntilNextExecution">
            <summary>
            Gets the time remaining until the next execution of the timer.
            </summary>
            <remarks>
            The property calculates the time remaining based on the timer's period and day offset.
            </remarks>
        </member>
        <member name="M:SnapDB.Threading.EventTimer.Dispose(System.Boolean)">
            <summary>
            Releases the resources used by the event timer and stops it.
            </summary>
            <param name="disposing">
            A Boolean value that determines whether the method was called from the
            <see cref="M:SnapDB.Threading.EventTimer.Dispose(System.Boolean)"/> method rather than from the finalizer.
            </param>
        </member>
        <member name="M:SnapDB.Threading.EventTimer.Start">
            <summary>
            Starts the event timer.
            </summary>
            <remarks>
            The method starts the event timer by creating and initializing a ScheduledTask object.
            </remarks>
        </member>
        <member name="M:SnapDB.Threading.EventTimer.Stop">
            <summary>
            Stops the event timer.
            </summary>
            <remarks>
            The method stops the event timer by disposing of the underlying ScheduledTask object and
            resetting the timer's state.
            </remarks>
        </member>
        <member name="M:SnapDB.Threading.EventTimer.m_timer_Running(System.Object,Gemstone.EventArgs{Gemstone.Threading.ScheduledTaskRunningReason})">
            <summary>
            This timer will reliably fire the directory polling every interval.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.EventTimer.Create(System.TimeSpan,System.TimeSpan)">
            <summary>
            Creates a new instance of the <see cref="T:SnapDB.Threading.EventTimer"/> class with the specified period and day offset.
            </summary>
            <param name="period">The time interval between timer events.</param>
            <param name="dayOffset">The initial offset from the start of the day (optional).</param>
            <returns>A new <see cref="T:SnapDB.Threading.EventTimer"/> instance.</returns>
        </member>
        <member name="M:SnapDB.Threading.EventTimer.CreateSeconds(System.Double,System.Double)">
            <summary>
            Creates a new instance of the <see cref="T:SnapDB.Threading.EventTimer"/> class with the specified period and day offset in seconds.
            </summary>
            <param name="periodInSecond">The time interval between timer events in seconds.</param>
            <param name="dayOffsetInSecond">The initial offset from the start of the day in seconds (optional).</param>
            <returns>A new <see cref="T:SnapDB.Threading.EventTimer"/> instance.</returns>
        </member>
        <member name="M:SnapDB.Threading.EventTimer.CreateMinutes(System.Double,System.Double)">
            <summary>
            Creates a new instance of the <see cref="T:SnapDB.Threading.EventTimer"/> class with the specified period and day offset in minutes.
            </summary>
            <param name="periodInMinutes">The time interval between timer events in minutes.</param>
            <param name="dayOffsetInMinutes">The initial offset from the start of the day in minutes (optional).</param>
            <returns>A new <see cref="T:SnapDB.Threading.EventTimer"/> instance.</returns>
        </member>
        <member name="T:SnapDB.Threading.HalfLock">
            <summary>
            Provides a light weight exclusive lock that is approximately 2.5 times faster than <see cref="T:System.Threading.Monitor"/>.
            WARNING: This lock should be used in a Using block, and duplicate calls to Lock without releasing will cause a deadlock.
            </summary>
            <remarks>
            After writing this class I did some review of the methodology.
            Reviewing this article: http://www.adammil.net/blog/v111_Creating_High-Performance_Locks_and_Lock-free_Code_for_NET_.html
            Brings up stability issues with the lock. Namely what happens when unhandled exceptions occurs when acquiring and releasing the lock.
            I have intentionally left out any kind of protection against this as it severly reduces the speed of this code. Therefore
            do not use this locking method where a Thread.Abort() might be used as a control method.
            </remarks>
        </member>
        <member name="T:SnapDB.Threading.HalfLock.HalfLockRelease">
            <summary>
            Represents a release token for a <see cref="T:SnapDB.Threading.HalfLock"/> and provides a mechanism to release the lock.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.HalfLock.HalfLockRelease.Dispose">
            <summary>
            Releases an acquired lock.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.HalfLock.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.Threading.TinyLock"/>
            </summary>
        </member>
        <member name="M:SnapDB.Threading.HalfLock.Lock">
            <summary>
            Acquires an exclusive lock on this class. Place call in a using block.
            Duplicate calls to this within the same thread will cause a deadlock.
            </summary>
            <returns>
            A structure that will release the lock.
            This struct will always be the exact same value. Therefore it can be
            stored once if desired, however, be careful when using it this way as inproper synchronization
            will be easier to occur.
            </returns>
        </member>
        <member name="M:SnapDB.Threading.HalfLock.LockSlower">
            <summary>
            Acquires the lock using a spin-wait approach with slower spinning.
            </summary>
        </member>
        <member name="T:SnapDB.Threading.NamespaceDoc">
            <summary>
            The <see cref="N:SnapDB.Threading"/> namespace organizes all SnapDB library functionality related to commonly used integrated tools,
            e.g., the <see cref="T:SnapDB.Threading.EventTimer"/> class.
            </summary>
        </member>
        <member name="T:SnapDB.Threading.DisposableReadLock">
            <summary>
            A read lock object.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.DisposableReadLock.#ctor(System.Threading.ReaderWriterLock)">
            <summary>
            Initializes a new instance of the DisposableReadLock class and acquires a reader lock.
            </summary>
            <param name="l">The ReaderWriterLock to acquire the lock from.</param>
        </member>
        <member name="M:SnapDB.Threading.DisposableReadLock.Dispose">
            <summary>
            Releases the acquired reader lock, if it was acquired.
            </summary>
        </member>
        <member name="T:SnapDB.Threading.DisposableWriteLock">
            <summary>
            A read lock object.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.DisposableWriteLock.#ctor(System.Threading.ReaderWriterLock)">
            <summary>
            Initializes a new instance of the DisposableWriteLock class and acquires a writer lock on the specified ReaderWriterLock.
            </summary>
            <param name="l">The ReaderWriterLock to acquire the writer lock on.</param>
        </member>
        <member name="M:SnapDB.Threading.DisposableWriteLock.Dispose">
            <summary>
            Releases the acquired writer lock on the associated ReaderWriterLock, allowing other threads to acquire locks.
            </summary>
        </member>
        <member name="T:SnapDB.Threading.ReaderWriterLockEasy">
            <summary>
            A simplified implementation of a <see cref="T:System.Threading.ReaderWriterLockSlim"/>. This allows for more
            user friendly code to be written.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.ReaderWriterLockEasy.EnterReadLock">
            <summary>
            Enters a read lock. Be sure to call within a using block.
            </summary>
            <returns>A DisposableReadLock object that should be disposed to release the acquired read lock.</returns>
        </member>
        <member name="M:SnapDB.Threading.ReaderWriterLockEasy.EnterWriteLock">
            <summary>
            Acquires a writer lock, preventing other threads from acquiring writer or reader locks until the writer lock is released.
            </summary>
            <returns>A DisposableWriteLock object that should be disposed to release the acquired writer lock.</returns>
        </member>
        <member name="T:SnapDB.Threading.SafeManualResetEvent">
            <summary>
            Provides a thread safe implementation of the <see cref="T:System.Threading.ManualResetEvent"/> class.
            </summary>
            <remarks>
            While <see cref="T:System.Threading.ManualResetEvent"/> is mostly thread safe, calls to Dispose
            can cause other waiting threads to throw <see cref="T:System.ObjectDisposedException"/>.
            This class makes disposing of the class thread safe as well.
            Note: Not properly disposing of this class can cause all threads waiting on this
            class to wait indefinitely.
            </remarks>
        </member>
        <member name="F:SnapDB.Threading.SafeManualResetEvent.m_waitingThreadCount">
            <summary>
            The number of threads waiting.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.SafeManualResetEvent.#ctor(System.Boolean)">
            <summary>
            Creates a new <see cref="T:SnapDB.Threading.SafeManualResetEvent"/>.
            </summary>
            <param name="signaledState"><c>true</c> to set the initial state signaled; <c>false</c> to set the initial state to nonsignaled.</param>
        </member>
        <member name="M:SnapDB.Threading.SafeManualResetEvent.Dispose">
            <summary>
            Releases all the resources used by the <see cref="T:SnapDB.Threading.SafeManualResetEvent"/> object.
            Also signals all waiting threads and ignores all calls to <see cref="M:SnapDB.Threading.SafeManualResetEvent.Reset"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.SafeManualResetEvent.Reset">
            <summary>
            Sets the state of the event to signaled, allowing one or more waiting threads to proceed.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.SafeManualResetEvent.Set">
            <summary>
            Sets the state of the event to signaled, allowing one or more waiting threads to proceed.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.SafeManualResetEvent.WaitOne">
            <summary>
            Blocks the current thread until <see cref="M:SnapDB.Threading.SafeManualResetEvent.Set"/> or <see cref="M:SnapDB.Threading.SafeManualResetEvent.Dispose"/> is called.
            </summary>
        </member>
        <member name="F:SnapDB.Threading.SafeManualResetEvent.s_log">
            <summary>
            A place to report exception logs associated with this class.
            </summary>
        </member>
        <member name="T:SnapDB.Threading.SynchronousEvent`1">
            <summary>
            Provides a way to raise events on another thread. The events
            will be raised on the thread that constructed this class.
            </summary>
            <typeparam name="T">The type of EventArgs.</typeparam>
            <remarks>
            This is useful when needing to process data on a certain thread. On instance is
            when preparing data that needs to then be processed on the UI thread. Just construct
            this class on the UI thread, then when any thread raises an event, this event will be
            queued on the UI thread.
            </remarks>
        </member>
        <member name="E:SnapDB.Threading.SynchronousEvent`1.CustomEvent">
            <summary>
            Occurs when a custom event of type <typeparamref name="T"/> is triggered.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.SynchronousEvent`1.#ctor">
            <summary>
            Initializes a new instance of the SynchronousEvent class.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.SynchronousEvent`1.Dispose">
            <summary>
            Prevents any future events from processing and
            attempts to cancel a pending operation.
            Function returns before any attempts to cancel are successful.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.SynchronousEvent`1.RaiseEvent(`0)">
            <summary>
            Raises the custom event with the provided event arguments.
            </summary>
            <param name="args">The event arguments to pass to event subscribers.</param>
        </member>
        <member name="T:SnapDB.Threading.ThreadSafeList`1">
            <summary>
            This list allows for iterating through the list
            while object can be removed from the list. Once an object has been
            removed, is garenteed not to be called again by a seperate thread.
            </summary>
            <typeparam name="T">The type of elements in the list.</typeparam>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.#ctor">
            <summary>
            Creates a new <see cref="T:SnapDB.Threading.ThreadSafeList`1"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Add(`0)">
            <summary>
            Adds the supplied item to the list.
            </summary>
            <param name="item">The item to add.</param>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.RemoveAndWait(`0)">
            <summary>
            Removes an item from the list.
            This method will block until the item has successfully been removed
            and will no longer show up in the iterator.
            DO NOT call this function from within a ForEach loop as it will block indefinately
            since the for each loop reads all items.
            </summary>
            <param name="item">The item to remove from the list.</param>
            <returns><c>true</c> if the item was successfully removed; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Remove(`0)">
            <summary>
            Removes an item from the list.
            </summary>
            <param name="item">The item to remove from the list.</param>
            <returns><c>true</c> if the item is successfully removed; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.RemoveIf(System.Func{`0,System.Boolean})">
            <summary>
            Removes the specified item if the lambda expression is true.
            </summary>
            <param name="condition">A condition delegate used to determine which items to remove.</param>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.ForEach(System.Action{`0})">
            <summary>
            Calls a foreach iterator on the supplied action.
            </summary>
            <param name="action">The action to perform on each element of the list.</param>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through the collection.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> that can be used to
            iterate through the collection.
            </returns>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through a collection.
            </summary>
            <returns>
            An <see cref="T:System.Collections.IEnumerator"/> object that can be used to iterate through the collection.
            </returns>
        </member>
        <member name="T:SnapDB.Threading.ThreadSafeList`1.Enumerator">
            <summary>
            The Enumerator for a <see cref="T:SnapDB.Threading.ThreadSafeList`1"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Enumerator.#ctor(SnapDB.Threading.ThreadSafeList{`0}.Iterator)">
            <summary>
            Initializes a new instance of the Enumerator class with the provided iterator.
            </summary>
            <param name="iterator">The iterator to associate with the enumerator.</param>
        </member>
        <member name="P:SnapDB.Threading.ThreadSafeList`1.Enumerator.Current">
            <summary>
            Gets the element in the collection at the current position of the enumerator.
            </summary>
            <returns>
            The element in the collection at the current position of the enumerator.
            </returns>
        </member>
        <member name="P:SnapDB.Threading.ThreadSafeList`1.Enumerator.System#Collections#IEnumerator#Current">
            <summary>
            Gets the current element in the collection.
            </summary>
            <returns>
            The current element in the collection.
            </returns>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Enumerator.Dispose">
            <summary>
            Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Enumerator.MoveNext">
            <summary>
            Advances the enumerator to the next element of the collection.
            </summary>
            <returns>
            <c>true</c> if the enumerator was successfully advanced to the next element; <c>false</c> if the enumerator has passed the end of the collection.
            </returns>
            <exception cref="T:System.InvalidOperationException">The collection was modified after the enumerator was created.</exception>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Enumerator.Reset">
            <summary>
            Sets the enumerator to its initial position, which is before the first element in the collection.
            </summary>
            <exception cref="T:System.InvalidOperationException">The collection was modified after the enumerator was created.</exception>
        </member>
        <member name="T:SnapDB.Threading.ThreadSafeList`1.Iterator">
            <summary>
            Parses through a list in a thread safe manner.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Iterator.#ctor(SnapDB.Threading.ThreadSafeList{`0})">
            <summary>
            Initializes a new iterator for a thread-safe list.
            </summary>
            <param name="list">The thread-safe list to iterate over.</param>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Iterator.UnsafeTryGetNextItem(`0@)">
            <summary>
            Only 1 item can be obtained at a time. Failing to call <see cref="M:SnapDB.Threading.ThreadSafeList`1.Iterator.UnsafeUnregisterItem"/> will
            result in a infinite loop. Therefore wrap each call in a Try/Finally block.
            </summary>
            <param name="item">An output parameter for the next item.</param>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Iterator.UnsafeUnregisterItem">
            <summary>
            Should be called each time after <see cref="M:SnapDB.Threading.ThreadSafeList`1.Iterator.UnsafeTryGetNextItem(`0@)"/>.
            Note, it is optional to call this function if <see cref="M:SnapDB.Threading.ThreadSafeList`1.Iterator.UnsafeTryGetNextItem(`0@)"/> returns <c>false</c>.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.ThreadSafeList`1.Iterator.Reset">
            <summary>
            Resets the enumerator's state, allowing it to start iterating from the beginning.
            </summary>
        </member>
        <member name="T:SnapDB.Threading.TimeoutOperation">
            <summary>
            Represents an operation with a timeout that can execute a callback.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.TimeoutOperation.RegisterTimeout(System.TimeSpan,System.Action)">
            <summary>
            Registers a timeout callback to be executed at specified intervals.
            </summary>
            <param name="interval">The time interval between callback executions.</param>
            <param name="callback">The callback action to be executed.</param>
            <exception cref="T:System.Exception">Thrown if a duplicate registration is attempted.</exception>
        </member>
        <member name="M:SnapDB.Threading.TimeoutOperation.Cancel">
            <summary>
            Cancels a previously registered timeout callback.
            </summary>
        </member>
        <member name="T:SnapDB.Threading.TinyLock">
            <summary>
            Provides a light weight exclusive lock that is approximately 2.5 times faster than <see cref="T:System.Threading.Monitor"/>.
            WARNING: This lock should be used in a Using block, and duplicate calls to Lock without releasing will cause a deadlock.
            </summary>
            <remarks>
            After writing this class I did some review of the methodology.
            Reviewing this article: http://www.adammil.net/blog/v111_Creating_High-Performance_Locks_and_Lock-free_Code_for_NET_.html
            Brings up stability issues with the lock. Namely what happens when unhandled exceptions occurs when acquiring and releasing the lock.
            I have intentionally left out any kind of protection against this as it severly reduces the speed of this code. Therefore
            do not use this locking method where a Thread.Abort() might be used as a control method.
            </remarks>
        </member>
        <member name="T:SnapDB.Threading.TinyLock.TinyLockRelease">
            <summary>
            A structure that will allow releasing of a lock. This is returned by <see cref="M:SnapDB.Threading.TinyLock.Lock"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.TinyLock.TinyLockRelease.Dispose">
            <summary>
            Releases an acquired lock.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.TinyLock.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.Threading.TinyLock"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.TinyLock.Lock">
            <summary>
            Acquires an exclusive lock on this class. Place call in a using block.
            Duplicate calls to this within the same thread will cause a deadlock.
            </summary>
            <returns>
            A structure that will release the lock.
            This struct will always be the exact same value. Therefore it can be
            stored once if desired, however, be careful when using it this way as inproper synchronization
            will be easier to occur.
            </returns>
        </member>
        <member name="M:SnapDB.Threading.TinyLock.LockSlower">
            <summary>
            A nested call since 99% of the time, there will not be contention. This prevents stack space being
            used for the SpinLock when its not needed.
            </summary>
        </member>
        <member name="T:SnapDB.Threading.WeakDelegateBase`1">
            <summary>
            Represents a base class for weak delegate wrappers with a specified delegate type.
            </summary>
            <typeparam name="T">The type constraint for the delegate.</typeparam>
        </member>
        <member name="M:SnapDB.Threading.WeakDelegateBase`1.#ctor(System.Delegate)">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Threading.WeakDelegateBase`1"/> class with the specified delegate target.
            </summary>
            <param name="target">The delegate target.</param>
        </member>
        <member name="M:SnapDB.Threading.WeakDelegateBase`1.Equals(System.Object)">
            <summary>
            Determines whether the current <see cref="T:SnapDB.Threading.WeakDelegateBase`1"/> instance is equal to another object.
            </summary>
            <param name="obj">The object to compare with the current instance.</param>
            <returns><c>true</c> if the objects are equal; otherwise, <c>false</c>.</returns>
        </member>
        <member name="M:SnapDB.Threading.WeakDelegateBase`1.TryInvokeInternal(System.Object[])">
            <summary>
            Tries to invoke the delegate associated with this weak reference object.
            </summary>
            <param name="parameters">An array of parameters to pass to the delegate.</param>
            <returns><c>true</c> if successful, <c>false</c> if the delegate has been garbage collected.</returns>
        </member>
        <member name="M:SnapDB.Threading.WeakDelegateBase`1.Equals(SnapDB.Threading.WeakDelegateBase{`0})">
            <summary>
            Determines whether the current <see cref="T:SnapDB.Threading.WeakDelegateBase`1"/> instance is equal to another <see cref="T:SnapDB.Threading.WeakDelegateBase`1"/> instance.
            </summary>
            <param name="obj">The <see cref="T:SnapDB.Threading.WeakDelegateBase`1"/> instance to compare with the current instance.</param>
            <returns><c>true</c> if the instances are equal; otherwise, <c>false</c>.</returns>
        </member>
        <member name="T:SnapDB.Threading.WeakEventHandler`1">
            <summary>
            Represents a weak event handler for events with <see cref="T:System.EventArgs"/> of type <typeparamref name="T"/>.
            </summary>
            <typeparam name="T">The type of <see cref="T:System.EventArgs"/> used by the event.</typeparam>
        </member>
        <member name="M:SnapDB.Threading.WeakEventHandler`1.#ctor(System.EventHandler{`0})">
            <summary>
            Initializes a new instance of the <see cref="T:SnapDB.Threading.WeakEventHandler`1"/> class with the specified event handler target.
            </summary>
            <param name="target">The event handler target.</param>
        </member>
        <member name="M:SnapDB.Threading.WeakEventHandler`1.TryInvoke(System.Object,`0)">
            <summary>
            Tries to invoke the event handler associated with this weak reference object.
            </summary>
            <param name="sender">The event sender.</param>
            <param name="e">The event arguments.</param>
            <returns><c>true</c> if successful, <c>false</c> if the event handler has been garbage collected.</returns>
        </member>
        <member name="T:SnapDB.Threading.WorkerThreadSynchronization">
            <summary>
            Creates a synchronization helper that will assist object synchronizing in a tight inner loop.
            </summary>
            <remarks>
            For streaming protocols, it is cost prohibited to tightly coordinate the inner loop. This class
            will help coordinate these efforts by signaling when a good time to perform synchronized work would be.
            For Example, when writing to a socket, calling <see cref="M:SnapDB.Threading.WorkerThreadSynchronization.BeginSafeToCallbackRegion"/> would be good to do
            when the socket makes any kind of blocking call, such as flusing to an underlying socket. Upon returning
            from this command, calling <see cref="M:SnapDB.Threading.WorkerThreadSynchronization.EndSafeToCallbackRegion"/> will return this class to a state where callback
            will not be executed.
            It is critical that <see cref="M:SnapDB.Threading.WorkerThreadSynchronization.BeginSafeToCallbackRegion"/>, <see cref="M:SnapDB.Threading.WorkerThreadSynchronization.EndSafeToCallbackRegion"/>, and
            <see cref="M:SnapDB.Threading.WorkerThreadSynchronization.PulseSafeToCallback"/> only be called by the worker thread, as these methods are not thread safe and
            control the state of the <see cref="T:SnapDB.Threading.WorkerThreadSynchronization"/>.
            In easy terms. When you (the worker) get a convenient time, I need to do something that might modify your
            current working state. Let me know when I can do that.
            </remarks>
        </member>
        <member name="T:SnapDB.Threading.WorkerThreadSynchronization.CallbackRequest">
            <summary>
            A callback request. Cancel this request when the callback is no longer needed.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.WorkerThreadSynchronization.CallbackRequest.#ctor(System.Action)">
            <summary>
            Creates a callback request.
            </summary>
            <param name="callback">The action to perform.</param>
        </member>
        <member name="M:SnapDB.Threading.WorkerThreadSynchronization.CallbackRequest.Dispose">
            <summary>
            Disposes of the callback.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.WorkerThreadSynchronization.CallbackRequest.Cancel">
            <summary>
            Cancels the callback.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.WorkerThreadSynchronization.CallbackRequest.Run">
            <summary>
            Executes the callback item.
            </summary>
        </member>
        <member name="F:SnapDB.Threading.WorkerThreadSynchronization.m_isCallbackWaiting">
            <summary>
            Only to be set within lock(m_syncRoot).
            </summary>
        </member>
        <member name="F:SnapDB.Threading.WorkerThreadSynchronization.m_isRequestCallbackMethodProcessing">
            <summary>
            Gets if this method is currently executing, which means tighter coordination is required.
            </summary>
        </member>
        <member name="F:SnapDB.Threading.WorkerThreadSynchronization.m_isSafeToCallback">
            <summary>
            Only to be set by the worker thread.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.WorkerThreadSynchronization.#ctor">
            <summary>
            Creates a <see cref="T:SnapDB.Threading.WorkerThreadSynchronization"/>.
            </summary>
        </member>
        <member name="M:SnapDB.Threading.WorkerThreadSynchronization.RequestCallback(System.Action)">
            <summary>
            Requests that the following action be completed as soon as reasonably possible.
            This will either be done immediately, or be queued for the next approriate time.
            </summary>
            <param name="callback">action to perform</param>
            <returns>
            A cancelation object. Use in a using block.
            </returns>
        </member>
        <member name="M:SnapDB.Threading.WorkerThreadSynchronization.PulseSafeToCallback">
            <summary>
            Signals that if any callbacks are pending,
            go ahead and run them now. Otherwise, wait.
            </summary>
            <remarks>
            This method will be inlined and has virtually no
            overhead so long as a callback is not waiting.
            </remarks>
        </member>
        <member name="M:SnapDB.Threading.WorkerThreadSynchronization.BeginSafeToCallbackRegion">
            <summary>
            Enters a region where a callback can occur.
            </summary>
            <remarks>
            A good place to put this is before a long
            action where it is possible that the thread
            might be blocked.
            </remarks>
        </member>
        <member name="M:SnapDB.Threading.WorkerThreadSynchronization.EndSafeToCallbackRegion">
            <summary>
            Exits a region where future callbacks cannot occur.
            </summary>
        </member>
        <member name="T:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Client">
            Implements the client side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe.
            This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper
            "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"
        </member>
        <member name="M:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Client.GenerateClientCredentials(Org.BouncyCastle.Crypto.IDigest,System.Byte[],System.Byte[],System.Byte[])">
            Generates client's credentials given the client's salt, identity and password
            @param salt The salt used in the client's verifier.
            @param identity The user's identity (eg. username)
            @param password The user's password
            @return Client's public value to send to server
        </member>
        <member name="M:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Client.CalculateSecret(Org.BouncyCastle.Crypto.IDigest,Org.BouncyCastle.Math.BigInteger)">
            Generates client's verification message given the server's credentials
            @param serverB The server's credentials
            @return Client's verification message for the server
            @throws CryptoException If server's credentials are invalid
        </member>
        <member name="T:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Server">
            Implements the server side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe.
            This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper
            "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"
        </member>
        <member name="M:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Server.#ctor(SnapDB.Security.Authentication.SrpConstants,Org.BouncyCastle.Math.BigInteger)">
            Initializes the server to accept a new client authentication attempt
            @param N The safe prime associated with the client's verifier
            @param g The group parameter associated with the client's verifier
            @param v The client's verifier
            @param digest The digest algorithm associated with the client's verifier
            @param random For key generation
        </member>
        <member name="M:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Server.GenerateServerCredentials">
            Generates the server's credentials that are to be sent to the client.
            @return The server's public value to the client
        </member>
        <member name="M:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Server.CalculateSecret(Org.BouncyCastle.Crypto.IDigest,Org.BouncyCastle.Math.BigInteger)">
            Processes the client's credentials. If valid the shared secret is generated and returned.
            @param clientA The client's credentials
            @return A shared secret BigInteger
            @throws CryptoException If client's credentials are invalid
        </member>
        <member name="M:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Utilities.HashPaddedPair(Org.BouncyCastle.Crypto.IDigest,Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.BigInteger)">
            <summary>
            Pads n1 and n2 to the same number of bytes as N. Then hashes them.
            </summary>
            <returns>The hash Mod N</returns>
        </member>
        <member name="M:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Utilities.GetPadded(Org.BouncyCastle.Math.BigInteger,System.Int32)">
            <summary>
            Pads a byte[] to the specified length,
            with zeroes at the start of the buffer.
            </summary>
        </member>
        <member name="M:Org.BouncyCastle.Crypto.Agreement.Srp.Srp6Utilities.ToPaddedArray(Org.BouncyCastle.Math.BigInteger,System.Int32)">
            <summary>
            Gets the byte representation of <paramref name="n"/> that is padded to
            match the byte length of <paramref name="length"/>.
            </summary>
            <param name="n">The <see cref="T:Org.BouncyCastle.Math.BigInteger"/> to convert.</param>
            <param name="length">The desired length of the resulting byte array.</param>
            <returns>
            A byte array containing the padded representation of the <see cref="T:Org.BouncyCastle.Math.BigInteger"/>.
            </returns>
        </member>
    </members>
</doc>
