Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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;
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }