示例#1
0
        /// <summary>
        /// The number of items in the database.
        /// </summary>
        /// <param name="db">The database we are counting items in.</param>
        /// <returns>The number of items.</returns>
        public long GetEntriesCount(LMDBDatabase db)
        {
            MDBStat stat;

            Lmdb.mdb_stat(_handle, db.Handle(), out stat);

            return(stat.ms_entries.ToInt64());
        }
示例#2
0
        /// <summary>
        /// Delete items from a database.
        /// This function removes key/data pairs from the database.
        /// If the database does not support sorted duplicate data items (MDB_DUPSORT) the data parameter is ignored.
        /// If the database supports sorted duplicates and the data parameter is NULL, all of the duplicate data items for the key will be deleted.
        /// Otherwise, if the data parameter is non-NULL only the matching data item will be deleted.
        /// This function will return MDB_NOTFOUND if the specified key/data pair is not in the database.
        /// </summary>
        /// <param name="db">A database handle returned by mdb_dbi_open()</param>
        /// <param name="key">The key to delete from the database</param>
        /// <param name="value">The data to delete (optional)</param>
        public void Delete(LMDBDatabase db, byte[] key, byte[] value)
        {
            if (db == null)
            {
                throw new ArgumentNullException(nameof(db));
            }

            Lmdb.mdb_del(_handle, db.Handle(), key, value);
        }
示例#3
0
        /// <summary>
        /// Put data into a database.
        /// </summary>
        /// <param name="db">Database.</param>
        /// <param name="key">Key byte array.</param>
        /// <param name="value">Value byte array.</param>
        /// <param name="options">Operation options (optional).</param>
        public void Put(LMDBDatabase db, byte[] key, byte[] value, PutOptions options = PutOptions.None)
        {
            if (db == null)
            {
                throw new ArgumentNullException(nameof(db));
            }

            Lmdb.mdb_put(_handle, db.Handle(), key, value, options);
        }
示例#4
0
        /// <summary>
        /// Tries to get a value by its key.
        /// </summary>
        /// <param name="db">Database.</param>
        /// <param name="key">Key byte array.</param>
        /// <param name="value">Value byte array if exists.</param>
        /// <returns>True if key exists, false if not.</returns>
        public bool TryGet(LMDBDatabase db, byte[] key, out byte[] value)
        {
            if (db == null)
            {
                throw new ArgumentNullException(nameof(db));
            }

            return(Lmdb.mdb_get(_handle, db.Handle(), key, out value) != Lmdb.MDB_NOTFOUND);
        }
示例#5
0
        /// <summary>
        /// Creates new instance of LMDBCursor
        /// </summary>
        /// <param name="db">Database</param>
        /// <param name="txn">Transaction</param>
        internal LMDBCursor(LMDBDatabase db, LMDBTransaction txn)
        {
            if (db == null)
            {
                throw new ArgumentNullException(nameof(db));
            }

            if (txn == null)
            {
                throw new ArgumentNullException(nameof(txn));
            }

            Lmdb.mdb_cursor_open(txn.Handle(), db.Handle(), out _handle);

            Transaction            = txn;
            Transaction.Disposing += Dispose;
        }
示例#6
0
 /// <summary>
 /// Delete items from a database.
 /// This function removes key/data pairs from the database.
 /// If the database does not support sorted duplicate data items (MDB_DUPSORT) the data parameter is ignored.
 /// If the database supports sorted duplicates and the data parameter is NULL, all of the duplicate data items for the key will be deleted.
 /// Otherwise, if the data parameter is non-NULL only the matching data item will be deleted.
 /// This function will return MDB_NOTFOUND if the specified key/data pair is not in the database.
 /// </summary>
 /// <param name="db">A database handle returned by mdb_dbi_open()</param>
 /// <param name="key">The key to delete from the database</param>
 public void Delete(LMDBDatabase db, byte[] key)
 {
     Lmdb.mdb_del(_handle, db.Handle(), key);
 }