public static IMd Locate(MdLocator locator, int level = 0) { var xorString = GetString(locator); using (var db = GetRocksDb()) { var metaKey = $"{xorString}_0"; // entry 0 var column = db.GetColumnFamily(COLUMN_FAMILY); var value = db.Get(metaKey, cf: column); if (value == null) // if not found, create with level 0 { var data = new LocalMdData { Locator = locator, LocatorString = xorString, Level = level }; value = data.Json(); db.Put(metaKey, new StoredValue(level).Json(), cf: column); // store level 0 return(new LocalMd(data)); } else { var existing = new LocalMdData { Locator = locator, LocatorString = xorString, Level = value.Parse <StoredValue>().Payload.Parse <int>() }; int.TryParse(db.Get($"{xorString}_Count", cf: column), out existing.Count); return(new LocalMd(existing)); } } }
private LocalMd(LocalMdData data) { _data = data; Count = data.Count; }