/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="objectId">The object id used for store access.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="options">The options for the read.</param> /// <returns>A <see cref="Stream"/> that accesses /// the entry data via unmanaged memory allocated from BerkeleyDb.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para></para> /// <para>Return value is null if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public Stream GetEntryStream(short typeId, int objectId, DataBuffer key, GetOptions options) { options.AssertValid("options"); if (!CanProcessMessage(typeId)) { return(null); } DebugLog("GetEntry()", typeId, objectId); Database db = GetDatabase(typeId, objectId); try { return(db.Get(key, options.Offset, options.Length, options.Flags)); } catch (BdbException ex) { HandleBdbError(ex, db); return(null); } catch (Exception ex) { ErrorLog("GetEntry()", ex); throw; } }
/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="objectId">The object id used for store access.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="buffer">The buffer to which the read data is written.</param> /// <param name="options">The options for the read.</param> /// <returns>The length of the entry in the store.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="buffer"/> has an <see cref="DataBuffer.IsWritable"/> of /// <see langword="false"/>.</para> /// <para>-or-</para> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para>If the entry is longer than <paramref name="buffer"/>, then /// <paramref name="buffer"/> is written to its full capacity, but the /// entry length is still returned. /// </para> /// <para>Return value is negative if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public int GetEntry(short typeId, int objectId, DataBuffer key, DataBuffer buffer, GetOptions options) { if (!buffer.IsWritable) { throw new ArgumentOutOfRangeException("buffer"); } options.AssertValid("options"); if (!CanProcessMessage(typeId)) { return(-1); } DebugLog("GetEntry()", typeId, objectId); Database db = GetDatabase(typeId, objectId); try { return(db.Get(key, options.Offset, buffer, options.Flags)); } catch (BdbException ex) { HandleBdbError(ex, db); return(-1); } catch (Exception ex) { ErrorLog("GetEntry()", ex); throw; } }
/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="objectId">The object id used for store access.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="options">The options for the read.</param> /// <returns>A <see cref="Byte"/> array that contains the entry data.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para></para> /// <para>Return value is null if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public byte[] GetEntryBuffer(short typeId, int objectId, DataBuffer key, GetOptions options) { options.AssertValid("options"); DebugLog("GetEntryBuffer()", typeId, objectId); Database db = GetDatabase(typeId, objectId); try { return(db.GetBuffer(key, options.Offset, options.Length, options.Flags)); } catch (BdbException ex) { HandleBdbError(ex, db); return(null); } catch (Exception ex) { ErrorLog("GetEntryBuffer()", ex); throw; } }
/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="options">The options for the read.</param> /// <returns>A <see cref="Stream"/> that accesses /// the entry data via unmanaged memory allocated from BerkeleyDb.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para>Return value is null if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public Stream GetEntryStream(short typeId, DataBuffer key, GetOptions options) { return GetEntryStream(typeId, key.GetObjectId(), key, options); }
/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="buffer">The buffer to which the read data is written.</param> /// <param name="options">The options for the read.</param> /// <returns>The length of the entry in the store.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="buffer"/> has an <see cref="DataBuffer.IsWritable"/> of /// <see langword="false"/>.</para> /// <para>-or-</para> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para><see cref="DataBuffer.GetHashCode"/> of <paramref name="key"/> is used /// as the object id.</para> /// <para>If the entry is longer than <paramref name="buffer"/>, then /// <paramref name="buffer"/> is written to its full capacity, but the /// entry length is still returned. /// </para> /// <para>Return value is negative if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public int GetEntry(short typeId, DataBuffer key, DataBuffer buffer, GetOptions options) { return GetEntry(typeId, key.GetObjectId(), key, buffer, options); }
/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="objectId">The object id used for store access.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="options">The options for the read.</param> /// <returns>A <see cref="Stream"/> that accesses /// the entry data via unmanaged memory allocated from BerkeleyDb.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para></para> /// <para>Return value is null if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public Stream GetEntryStream(short typeId, int objectId, DataBuffer key, GetOptions options) { options.AssertValid("options"); if (!CanProcessMessage(typeId)) return null; DebugLog("GetEntry()", typeId, objectId); Database db = GetDatabase(typeId, objectId); try { return db.Get(key, options.Offset, options.Length, options.Flags); } catch (BdbException ex) { HandleBdbError(ex, db); return null; } catch (Exception ex) { ErrorLog("GetEntry()", ex); throw; } }
/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="objectId">The object id used for store access.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="buffer">The buffer to which the read data is written.</param> /// <param name="options">The options for the read.</param> /// <returns>The length of the entry in the store.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="buffer"/> has an <see cref="DataBuffer.IsWritable"/> of /// <see langword="false"/>.</para> /// <para>-or-</para> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para>If the entry is longer than <paramref name="buffer"/>, then /// <paramref name="buffer"/> is written to its full capacity, but the /// entry length is still returned. /// </para> /// <para>Return value is negative if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public int GetEntry(short typeId, int objectId, DataBuffer key, DataBuffer buffer, GetOptions options) { if (!buffer.IsWritable) throw new ArgumentOutOfRangeException("buffer"); options.AssertValid("options"); if (!CanProcessMessage(typeId)) return -1; DebugLog("GetEntry()", typeId, objectId); Database db = GetDatabase(typeId, objectId); try { return db.Get(key, options.Offset, buffer, options.Flags); } catch (BdbException ex) { HandleBdbError(ex, db); return -1; } catch (Exception ex) { ErrorLog("GetEntry()", ex); throw; } }
/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="options">The options for the read.</param> /// <returns>A <see cref="Stream"/> that accesses /// the entry data via unmanaged memory allocated from BerkeleyDb.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para>Return value is null if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public Stream GetEntryStream(short typeId, DataBuffer key, GetOptions options) { return(GetEntryStream(typeId, key.GetObjectId(), key, options)); }
/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="buffer">The buffer to which the read data is written.</param> /// <param name="options">The options for the read.</param> /// <returns>The length of the entry in the store.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="buffer"/> has an <see cref="DataBuffer.IsWritable"/> of /// <see langword="false"/>.</para> /// <para>-or-</para> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para><see cref="DataBuffer.GetHashCode"/> of <paramref name="key"/> is used /// as the object id.</para> /// <para>If the entry is longer than <paramref name="buffer"/>, then /// <paramref name="buffer"/> is written to its full capacity, but the /// entry length is still returned. /// </para> /// <para>Return value is negative if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public int GetEntry(short typeId, DataBuffer key, DataBuffer buffer, GetOptions options) { return(GetEntry(typeId, key.GetObjectId(), key, buffer, options)); }
/// <summary> /// Reads data from a BerkeleyDb store entry. /// </summary> /// <param name="typeId">The type of the store accessed.</param> /// <param name="key">The key of the store entry accessed.</param> /// <param name="options">The options for the read.</param> /// <returns>A <see cref="Byte"/> array that contains the entry data.</returns> /// <exception cref="ArgumentOutOfRangeException"> /// <para><paramref name="options"/> has a negative offset.</para> /// </exception> /// <remarks> /// <para></para> /// <para>Return value is null if</para> /// <para>Entry is not found in store.</para> /// <para>-or-</para> /// <para><paramref name="typeId"/> isn't valid.</para> /// <para>-or-</para> /// <para>A <see cref="BdbException"/> was thrown from the underlying store /// (Exception is logged but not rethrown).</para> /// </remarks> public byte[] GetEntryBuffer(short typeId, DataBuffer key, GetOptions options) { return(GetEntryBuffer(typeId, key.GetObjectId(), key, options)); }