public static Database Open(string name, Options options) { IntPtr handle = Native.leveldb_open(options.handle, name, out IntPtr error); NativeHelper.CheckError(error); return(new Database(handle)); }
public Slice Get(ReadOptions options, Slice key) { IntPtr value = Native.leveldb_get(handle, options.handle, key.buffer, (UIntPtr)key.buffer.Length, out UIntPtr length, out IntPtr error); try { NativeHelper.CheckError(error); if (value == IntPtr.Zero) { throw new LevelDBException("Database not found"); } return(new Slice(value, length)); } finally { if (value != IntPtr.Zero) { Native.leveldb_free(value); } } }
public void Write(WriteOptions options, WriteBatch write_batch) { byte retry = 0; while (true) { try { Native.leveldb_write(handle, options.handle, write_batch.handle, out IntPtr error); NativeHelper.CheckError(error); break; } catch (LevelDBException ex) { if (++retry >= 4) { throw; } System.IO.File.AppendAllText("trustedu_db.log", ex.Message + "\r\n"); } } }
private void CheckError() { Native.leveldb_iter_get_error(handle, out IntPtr error); NativeHelper.CheckError(error); }
public void Put(WriteOptions options, Slice key, Slice value) { Native.leveldb_put(handle, options.handle, key.buffer, (UIntPtr)key.buffer.Length, value.buffer, (UIntPtr)value.buffer.Length, out IntPtr error); NativeHelper.CheckError(error); }
public void Delete(WriteOptions options, Slice key) { Native.leveldb_delete(handle, options.handle, key.buffer, (UIntPtr)key.buffer.Length, out IntPtr error); NativeHelper.CheckError(error); }