/// <summary> /// <para>Reads a cursor entry into streams.</para> /// </summary> /// <param name="key"> /// <para>The key <see cref="DataBuffer" />. Will be read for exact or wildcard /// searches. Will be written for all exact searches.</para> /// </param> /// <param name="offset"> /// <para>The offset within the entry value to begin copying data.</para> /// </param> /// <param name="position"> /// <para>The <see cref="CursorPosition" /> specifying the position at /// which to read.</para> /// </param> /// <param name="length"> /// <para>The length of the segment within the entry value to copying data. /// Use a negative value to read to the end.</para> /// </param> /// <param name="flags"> /// <para>The <see cref="GetOpFlags" /> specifying the read options.</para> /// </param> /// <returns> /// <para>The <see cref="Streams" /> holding the key and value /// <see cref="T:System.IO.Stream" />s, as well as operation return code. The /// return code will match on of the conditional literals /// in <see cref="Lengths" />.</para> /// </returns> public abstract Streams Get(DataBuffer key, int offset, int length, CursorPosition position, GetOpFlags flags);
/// <summary> /// <para>Reads a cursor entry into user supplied buffers.</para> /// </summary> /// <param name="key"> /// <para>The key <see cref="DataBuffer" />. Will be read for exact or wildcard /// searches. Will be written for all exact searches.</para> /// </param> /// <param name="value"> /// <para>The value <see cref="DataBuffer" /> written to.</para> /// </param> /// <param name="offset"> /// <para>The offset within the entry value to begin copying data. If negative then it /// tries a full entry fetch; otherwise it does a partial fetch from this offset and /// of the length of <see paramref="value" />.</para> /// </param> /// <param name="position"> /// <para>The <see cref="CursorPosition" /> specifying the position at /// which to read.</para> /// </param> /// <param name="flags"> /// <para>The <see cref="GetOpFlags" /> specifying the read options.</para> /// </param> /// <returns> /// <para>The <see cref="Lengths" /> specifying the lengths of the key /// and value entries. These can be greater than the lengths of the data /// read if the data buffers are too small. Negative values match the /// conditional literals in <see cref="Lengths" />.</para> /// </returns> public abstract Lengths Get(DataBuffer key, DataBuffer value, int offset, CursorPosition position, GetOpFlags flags);
/// <summary> /// Gets the entry data length. /// </summary> /// <param name="key">The <see cref="DataBuffer"/> key.</param> /// <param name="flags">The <see cref="GetOpFlags"/>.</param> /// <returns>The length of the entry data; a negative value if not found.</returns> public abstract int GetLength(DataBuffer key, GetOpFlags flags);
/// <summary> /// Gets entry data. /// </summary> /// <param name="key">The <see cref="DataBuffer"/> key.</param> /// <param name="offset">The <see cref="Int32"/> offset. If greater than or equal to 0 /// then it does a partial read, starting at this offset and of the length of /// <paramref name="length"/>.</param> /// <param name="length">The <see cref="Int32"/> length. If greater than or equal to 0 /// then it does a partial read, starting at this offset and of the length of /// <paramref name="length"/>.</param> /// <param name="flags">The <see cref="GetOpFlags"/>.</param> /// <returns>If found, then a <see cref="Byte"/> array containing the entry data, or a portion thereof for /// partial reads. Otherwise, <see langword="null"/>.</returns> public abstract byte[] GetBuffer(DataBuffer key, int offset, int length, GetOpFlags flags);
/// <summary> /// Gets entry data. /// </summary> /// <param name="key">The <see cref="DataBuffer"/> key.</param> /// <param name="offset">The <see cref="Int32"/> offset. If greater than or equal to 0 /// then it does a partial read, starting at this offset and of the length of /// <paramref name="length"/>.</param> /// <param name="length">The <see cref="Int32"/> length. If greater than or equal to 0 /// then it does a partial read, starting at this offset and of the length of /// <paramref name="length"/>.</param> /// <param name="flags">The <see cref="GetOpFlags"/>.</param> /// <returns>If found, then a <see cref="Stream"/> containing the entry data, or a portion thereof for /// partial reads. Otherwise, <see langword="null"/>.</returns> public abstract Stream Get(DataBuffer key, int offset, int length, GetOpFlags flags);
/// <summary> /// Gets entry data. /// </summary> /// <param name="key">The <see cref="DataBuffer"/> key.</param> /// <param name="offset">The <see cref="Int32"/> offset. If greater than or equal to 0 /// then it does a partial read, starting at this offset and of the length of /// <paramref name="buffer"/>.</param> /// <param name="buffer">The <see cref="DataBuffer"/> that receives the entry data.</param> /// <param name="flags">The <see cref="GetOpFlags"/>.</param> /// <returns>If found, then the length of the entry. If a partial read was specified, then the entry length /// is restricted by the range specified by <paramref name="offset"/> and length of /// <paramref name="buffer"/>. Otherwise, a negative value.</returns> public abstract int Get(DataBuffer key, int offset, DataBuffer buffer, GetOpFlags flags);