public Builder(IIronLeveldbStorge storge, IronLeveldbOptions options, Version baseVersion) { _storge = storge; _options = options; _baseVersion = baseVersion; _internalKeyComparer = new InternalKeyComparer(options.Comparer); _levels = Enumerable.Range(0, Config.NumLevels) .Select(_ => new LevelState(_internalKeyComparer)).ToArray(); }
private Version(IIronLeveldbStorge storge, IronLeveldbOptions options) { _storge = storge; _options = options; _internalKeyComparer = new InternalKeyComparer(options.Comparer); _internalComparer = Comparer <InternalIByteArrayKeyValuePair> .Create( (a, b) => _internalKeyComparer.Compare(a.InternalKey, b.InternalKey)); _cacheId = IdGenerator.NewId(); _cache = options.TableCache; }
public static IIronLeveldb Build(this IIronLeveldbStorge storge, IronLeveldbOptions options) { var manifestContent = storge.GetCurrentDescriptorContent(); // TODO base version var b = new Version.Builder(storge, options, null); using (var manifestStream = manifestContent.AsStream()) { foreach (var stream in new RecoverLogRecordsStream(manifestStream)) { var versionEdit = VersionEdit.DecodeFrom(stream); b.With(versionEdit); } } var current = b.Build(); return(new IronLeveldbStub(options, current, () => { var es = new List <Exception>(); try { storge.Dispose(); } catch (Exception e) { es.Add(e); } try { current.Dispose(); } catch (Exception e) { es.Add(e); } if (es.Count > 1) { throw new AggregateException(es); } if (es.Count == 1) { throw es.First(); } })); }
public static IIronLeveldb Build(this IIronLeveldbStorge storge) { return(Build(storge, new IronLeveldbOptions())); }