public static int mdb_del(IntPtr txn, uint dbi, byte[] key) { ValueStructure val = default(ValueStructure); using (var marshal = new MarshalValueStructure(key)) return(check(LmdbMethods.mdb_del(txn, dbi, ref marshal.Key, ref val))); }
public static int mdb_cursor_get(IntPtr cursor, byte[] key, out ValueStructure keyStructure, out ValueStructure valueStructure, CursorOperation op) { valueStructure = default(ValueStructure); using (var marshal = new MarshalValueStructure(key)) { keyStructure = marshal.Key; return(checkRead(LmdbMethods.mdb_cursor_get(cursor, ref keyStructure, ref valueStructure, op))); } }
public static int mdb_dbi_open(IntPtr txn, string name, DatabaseOpenFlags flags, out uint db) { var statusCode = LmdbMethods.mdb_dbi_open(txn, name, flags, out db); if (statusCode == MDB_NOTFOUND) { throw new LightningException($"Error opening database {name}: {mdb_strerror(statusCode)}", statusCode); } return(check(statusCode)); }
public static int mdb_put(IntPtr txn, uint dbi, ArraySegment <byte> key, ArraySegment <byte> value, PutOptions flags) { fixed(byte *pKey = key.Array) fixed(byte *pValue = value.Array) { var k = new mdb_val(key.Count, pKey + key.Offset); var v = new mdb_val(value.Count, pValue + value.Offset); return(check(LmdbMethods.mdb_put(txn, dbi, ref k, ref v, flags))); } }
public static int mdb_cursor_get(IntPtr cursor, out byte[] key, out byte[] value, ref ValueStructure keyStructure, ref ValueStructure valueStructure, CursorOperation op) { key = value = null; var result = checkRead(LmdbMethods.mdb_cursor_get(cursor, ref keyStructure, ref valueStructure, op)); if (result == 0) { key = keyStructure.GetBytes(); value = valueStructure.GetBytes(); } return(result); }
public static int mdb_get(IntPtr txn, uint dbi, byte[] key, out byte[] data) { using (var marshal = new MarshalValueStructure(key)) { ValueStructure value; var result = checkRead(LmdbMethods.mdb_get(txn, dbi, ref marshal.Key, out value)); if (result == MDB_NOTFOUND) { data = null; return(result); } data = value.GetBytes(); return(result); } }
public static unsafe int mdb_put(IntPtr txn, uint dbi, ReadOnlySpan <byte> key, ReadOnlySpan <byte> value, PutOptions flags) { fixed(byte *addKey = &key.GetPinnableReference(), addVal = &value.GetPinnableReference()) { var keyVs = new ValueStructure { size = new IntPtr(key.Length), data = new IntPtr(addKey), }; var valueVs = new ValueStructure { size = new IntPtr(value.Length), data = new IntPtr(addVal), }; return(check(LmdbMethods.mdb_put(txn, dbi, ref keyVs, ref valueVs, flags))); } }
public static unsafe int mdb_get(IntPtr txn, uint dbi, ReadOnlySpan <byte> key, out Span <byte> data) { fixed(byte *addKey = &key.GetPinnableReference()) { var keyVs = new ValueStructure { size = new IntPtr(key.Length), data = new IntPtr(addKey), }; ValueStructure value; var result = checkRead(LmdbMethods.mdb_get(txn, dbi, ref keyVs, out value)); if (result == MDB_NOTFOUND) { data = Span <byte> .Empty; return(result); } data = new Span <byte>(value.data.ToPointer(), value.size.ToInt32()); return(result); } }
public static int mdb_cursor_del(IntPtr cursor, CursorDeleteOption flags) { return(check(LmdbMethods.mdb_cursor_del(cursor, flags))); }
public static int mdb_cursor_put(IntPtr cursor, byte[] key, byte[] value, CursorPutOptions flags) { using (var marshal = new MarshalValueStructure(key, value)) return(check(LmdbMethods.mdb_cursor_put(cursor, ref marshal.Key, ref marshal.Value, flags))); }
public static int mdb_cursor_put(IntPtr cursor, ref ValueStructure key, ValueStructure[] data, CursorPutOptions flags) { return(check(LmdbMethods.mdb_cursor_put(cursor, ref key, data, flags))); }
public static int mdb_cursor_get(IntPtr cursor, out ValueStructure key, out ValueStructure value, CursorOperation op) { key = value = default(ValueStructure); return(checkRead(LmdbMethods.mdb_cursor_get(cursor, ref key, ref value, op))); }
public static int mdb_stat(IntPtr txn, uint dbi, out MDBStat stat) { return(check(LmdbMethods.mdb_stat(txn, dbi, out stat))); }
public static int mdb_env_sync(IntPtr env, bool force) { return(check(LmdbMethods.mdb_env_sync(env, force))); }
public static int mdb_cursor_get(IntPtr cursor, byte[] key, byte[] value, CursorOperation op) { using (var marshal = new MarshalValueStructure(key, value)) return(checkRead(LmdbMethods.mdb_cursor_get(cursor, ref marshal.Key, ref marshal.Value, op))); }
public static int mdb_env_copy2(IntPtr env, string path, EnvironmentCopyFlags copyFlags) { return(check(LmdbMethods.mdb_env_copy2(env, path, copyFlags))); }
public static int mdb_cursor_renew(IntPtr txn, IntPtr cursor) { return(check(LmdbMethods.mdb_cursor_renew(txn, cursor))); }
public static void mdb_env_close(IntPtr env) { LmdbMethods.mdb_env_close(env); }
public static int mdb_env_set_mapsize(IntPtr env, long size) { return(check(LmdbMethods.mdb_env_set_mapsize(env, new IntPtr(size)))); }
public static int mdb_del(IntPtr txn, uint dbi, byte[] key, byte[] value) { using (var marshal = new MarshalValueStructure(key, value)) return(check(LmdbMethods.mdb_del(txn, dbi, ref marshal.Key, ref marshal.Value))); }
public static int mdb_put(IntPtr txn, uint dbi, byte[] key, byte[] value, PutOptions flags) { using (var marshal = new MarshalValueStructure(key, value)) return(check(LmdbMethods.mdb_put(txn, dbi, ref marshal.Key, ref marshal.Value, flags))); }
public static int mdb_env_info(IntPtr env, out MDBEnvInfo stat) { return(check(LmdbMethods.mdb_env_info(env, out stat))); }
public static int mdb_set_dupsort(IntPtr txn, uint dbi, CompareFunction cmp) { return(check(LmdbMethods.mdb_set_dupsort(txn, dbi, cmp))); }
public static int mdb_env_copy(IntPtr env, string path) { return(check(LmdbMethods.mdb_env_copy(env, path))); }
public static int mdb_env_create(out IntPtr env) { return(check(LmdbMethods.mdb_env_create(out env))); }
public static int mdb_env_stat(IntPtr env, out MDBStat stat) { return(check(LmdbMethods.mdb_env_stat(env, out stat))); }
public static int mdb_env_open(IntPtr env, string path, EnvironmentOpenFlags flags, UnixAccessMode mode) { return(check(LmdbMethods.mdb_env_open(env, path, flags, mode))); }
public static int mdb_cursor_open(IntPtr txn, uint dbi, out IntPtr cursor) { return(check(LmdbMethods.mdb_cursor_open(txn, dbi, out cursor))); }
public static int mdb_env_get_maxreaders(IntPtr env, out uint readers) { return(check(LmdbMethods.mdb_env_get_maxreaders(env, out readers))); }
public static void mdb_cursor_close(IntPtr cursor) { LmdbMethods.mdb_cursor_close(cursor); }