Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        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");
                }
            }
        }
Exemplo n.º 4
0
 private void CheckError()
 {
     Native.leveldb_iter_get_error(handle, out IntPtr error);
     NativeHelper.CheckError(error);
 }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
 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);
 }