public NativeTests() { var tempPath = Path.GetTempPath(); var randName = Path.GetRandomFileName(); DatabasePath = Path.Combine(tempPath, randName); var options = LevelDBInterop.leveldb_options_create(); LevelDBInterop.leveldb_options_set_create_if_missing(options, 1); IntPtr error; Database = LevelDBInterop.leveldb_open(options, DatabasePath, out error); LevelDBException.Check(error); }
/// <summary> /// 指定数据库目录和选项,初始化一个 <see cref="Aoite.LevelDB.LDB"/> 类的新实例。 /// </summary> /// <param name="dbFolder">数据库的目录。</param> /// <param name="options">数据库的选项。</param> public LDB(string dbFolder, Options options) { if (dbFolder == null) { throw new ArgumentNullException("dbFolder"); } Options = options ?? new Options(); IntPtr error; _handle = LevelDBInterop.leveldb_open(Options._handle, dbFolder, out error); LevelDBException.Check(error); GC.KeepAlive(Options); this._DbFolder = dbFolder; }
public void Reopen() { LevelDBInterop.leveldb_close(Database); Database = IntPtr.Zero; var options = LevelDBInterop.leveldb_options_create(); IntPtr error; Database = LevelDBInterop.leveldb_open(options, DatabasePath, out error); LevelDBException.Check(error); var readOptions = LevelDBInterop.leveldb_readoptions_create(); this.InnerGet(readOptions, "key1"); LevelDBInterop.leveldb_readoptions_destroy(readOptions); }
public void Cache() { LevelDBInterop.leveldb_close(Database); Database = IntPtr.Zero; // open the DB with a cache that is not owned by LevelDB, then // close DB and then free the cache var options = LevelDBInterop.leveldb_options_create(); var cache = LevelDBInterop.leveldb_cache_create_lru((IntPtr)64); LevelDBInterop.leveldb_options_set_cache(options, cache); IntPtr error; Database = LevelDBInterop.leveldb_open(options, DatabasePath, out error); LevelDBException.Check(error); LevelDBInterop.leveldb_close(Database); Database = IntPtr.Zero; LevelDBInterop.leveldb_cache_destroy(cache); LevelDBInterop.leveldb_options_destroy(options); }