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; }
public void Enumerator() { var writeOptions = LevelDBInterop.leveldb_writeoptions_create(); this.InnerPut(writeOptions, "key1", "value1"); this.InnerPut(writeOptions, "key2", "value2"); this.InnerPut(writeOptions, "key3", "value3"); var entries = new List <KeyValuePair <string, string> >(); var readOptions = LevelDBInterop.leveldb_readoptions_create(); IntPtr iter = LevelDBInterop.leveldb_create_iterator(Database, readOptions); for (LevelDBInterop.leveldb_iter_seek_to_first(iter); LevelDBInterop.leveldb_iter_valid(iter) == 1; LevelDBInterop.leveldb_iter_next(iter)) { IntPtr len; string key = GetValue(LevelDBInterop.leveldb_iter_key(iter, out len), len); string value = GetValue(LevelDBInterop.leveldb_iter_value(iter, out len), len); var entry = new KeyValuePair <string, string>(key, value); entries.Add(entry); } LevelDBInterop.leveldb_iter_destroy(iter); LevelDBInterop.leveldb_readoptions_destroy(readOptions); Assert.Equal(3, entries.Count); Assert.Equal("key1", entries[0].Key); Assert.Equal("value1", entries[0].Value); Assert.Equal("key2", entries[1].Key); Assert.Equal("value2", entries[1].Value); Assert.Equal("key3", entries[2].Key); Assert.Equal("value3", entries[2].Value); LevelDBInterop.leveldb_writeoptions_destroy(writeOptions); }
public void Get() { var options = LevelDBInterop.leveldb_readoptions_create(); this.InnerPut(options, "key1", "value1"); var value1 = this.InnerGet(options, "key1"); Assert.Equal("value1", value1); this.InnerPut(options, "key2", "value2"); var value2 = this.InnerGet(options, "key2"); Assert.Equal("value2", value2); this.InnerPut(options, "key3", "value3"); var value3 = this.InnerGet(options, "key3"); Assert.Equal("value3", value3); // verify checksums LevelDBInterop.leveldb_readoptions_set_verify_checksums(options, 1); value1 = this.InnerGet(options, "key1"); Assert.Equal("value1", value1); // no fill cache LevelDBInterop.leveldb_readoptions_set_fill_cache(options, 0); value2 = this.InnerGet(options, "key2"); Assert.Equal("value2", value2); LevelDBInterop.leveldb_readoptions_destroy(options); }
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 Delete() { var writeOptions = LevelDBInterop.leveldb_writeoptions_create(); this.InnerPut(writeOptions, "key1", "value1"); var readOptions = LevelDBInterop.leveldb_readoptions_create(); var value1 = this.InnerGet(readOptions, "key1"); Assert.Equal("value1", value1); this.InnerDelete(writeOptions, "key1"); value1 = this.InnerGet(readOptions, "key1"); Assert.Null(value1); LevelDBInterop.leveldb_writeoptions_destroy(writeOptions); LevelDBInterop.leveldb_readoptions_destroy(readOptions); }
internal override void DestroyUnmanaged() { LevelDBInterop.leveldb_readoptions_destroy(_handle); }