Esempio n. 1
0
        public void Snapshot()
        {
            // modify db
            var writeOptions = LevelDBInterop.leveldb_writeoptions_create();

            this.InnerPut(writeOptions, "key1", "value1");
            LevelDBInterop.leveldb_writeoptions_destroy(writeOptions);

            // create snapshot
            var snapshot = LevelDBInterop.leveldb_create_snapshot(Database);

            // modify db again
            writeOptions = LevelDBInterop.leveldb_writeoptions_create();
            this.InnerPut(writeOptions, "key2", "value2");
            LevelDBInterop.leveldb_writeoptions_destroy(writeOptions);

            // read from snapshot
            var readOptions = LevelDBInterop.leveldb_readoptions_create();

            LevelDBInterop.leveldb_readoptions_set_snapshot(readOptions, snapshot);
            var val1 = this.InnerGet(readOptions, "key1");

            Assert.Equal("value1", val1);
            var val2 = this.InnerGet(readOptions, "key2");

            Assert.Null(val2);
            LevelDBInterop.leveldb_readoptions_destroy(readOptions);

            // release snapshot
            LevelDBInterop.leveldb_release_snapshot(Database, snapshot);
            snapshot = IntPtr.Zero;
        }
Esempio n. 2
0
        internal override void DestroyUnmanaged()
        {
            var parent = _parent.Target as LDB;

            if (parent != null)
            {
                LevelDBInterop.leveldb_release_snapshot(parent._handle, _handle);
            }
        }