public void Open() { if (!Directory.Exists(_folder)) { Directory.CreateDirectory(_folder); } _env = LmdbEnv.CreateDb(_folder, 1 * 1024 * 1024); using (var tx = _env.Write()) { var dto = Lmdb.GetBuffer(tx, 0); if (dto == null) { SetNewBuffer(tx, 0); } else { _buffer = new Buffer(dto, _folder); _buffer.OpenOrCreate(); } var meta = Lmdb.GetCellarMeta(tx, 0, Lmdb.NewCellarDto()); _maxKeySize = meta.GetCellarMaxKeySize(); _maxValSize = meta.GetCellarMaxValSize(); tx.Commit(); } }
void LoadData() { if (!Directory.Exists(_folder)) { return; } using (var env = LmdbEnv.CreateDb(_folder, 1024 * 1024, EnvironmentOpenFlags.ReadOnly)) { using (var tx = env.Read()) { _chunks = Lmdb.ListChunks(tx).Select(c => c.Value).ToArray(); _buffer = Lmdb.GetBuffer(tx, 0); _cellar = Lmdb.GetCellarMeta(tx, 0, new Lmdb.CellarDto()); ByteSize = Cellar.EstimateSize(tx).ByteSize; } } _maxKeySize = _cellar.GetCellarMaxKeySize(); _maxValueSize = _cellar.GetCellarMaxValSize(); }