/// <summary> /// Initialize all the elements of this index, as concurrently as possible. /// </summary> /// <param name="progressAction">Action called (from an arbitrary Task thread) to report completion of various index parts.</param> /// <returns>A task which is complete when the index is fully built.</returns> public Task InitializeAsync(Action <string> progressAction) { // All the things we want to do concurrently to index our data. // This is broken out as a separate list since it is useful to run these serially sometimes when debugging // (e.g. when the hacky Span sort code you found online starts hitting stack overflows, whereas the .NET 5 // Span.Sort method just works...). List <(string, Action)> actions = new List <(string, Action)> { ("Sorted strings", () => StringIndex = new StringIndex(PackedExecution.StringTable)), ("Indexed pip names", () => PipNameIndex = new NameIndex(PackedExecution.PipTable.PipNameTable)), ("Indexed paths", () => PathIndex = new NameIndex(PackedExecution.PathTable)), ("Indexed pip dependents", () => PipDependents = PackedExecution.PipDependencies.Invert()), ("Indexed file consumers", () => FileConsumers = PackedExecution.ConsumedFiles.Invert()), ("Indexed produced files", () => ProducedFiles = RelationTable <FileId, PipId> .FromSingleValueTable(PackedExecution.FileProducer, PackedExecution.PipTable) .Invert()), ("Indexed input-file-declaring pips", () => InputFileDeclarers = PackedExecution.DeclaredInputFiles.Invert()), ("Indexed input-directory-declaring pips", () => InputDirectoryDeclarers = PackedExecution.DeclaredInputDirectories.Invert()), ("Indexed parent directories", () => ParentDirectories = PackedExecution.DirectoryContents.Invert()) }; // Concurrently generate all the sorted strings, name indices, and inverse relationships that we need. return(Task.WhenAll( actions .Select(tuple => Task.Run( () => { tuple.Item2(); progressAction(tuple.Item1); })) .ToArray())); }
public void NameFilter_filters_substrings_correctly() { PackedExecution.Builder builder = ConstructExecution(); NameIndex nameIndex = new NameIndex(builder.PackedExecution.PipTable.PipNameTable); NameFilter <PipId> nameFilter = new NameFilter <PipId>( builder.PackedExecution.PipTable, nameIndex, pid => builder.PackedExecution.PipTable[pid].Name, '.', "rav"); PipId[] results = nameFilter.Filter().OrderBy(pid => pid).ToArray(); XAssert.AreEqual(2, results.Count()); XAssert.AreEqual(new PipId(1), results.First()); XAssert.AreEqual(new PipId(2), results.Last()); NameFilter <PipId> nameFilter2 = new NameFilter <PipId>( builder.PackedExecution.PipTable, nameIndex, pid => builder.PackedExecution.PipTable[pid].Name, '.', "RAV"); PipId[] results2 = nameFilter2.Filter().OrderBy(pid => pid).ToArray(); XAssert.AreArraysEqual(results, results2, true); }
public ModScriptParser(string path, ref BundleMod mod, NameIndex fileIndex) { scriptPath = path; this.mod = mod; this.index = fileIndex; currentLineNumber = 1; }
public void NameFilter_filters_internal_atoms_by_equality() { PackedExecution.Builder builder = ConstructExecution(); NameIndex nameIndex = new NameIndex(builder.PackedExecution.PipTable.PipNameTable); // should match "alpha.bravo" pip substrings NameFilter <PipId> nameFilter = new NameFilter <PipId>( builder.PackedExecution.PipTable, nameIndex, pid => builder.PackedExecution.PipTable[pid].Name, '.', "a.bravo.d"); PipId[] results = nameFilter.Filter().ToArray(); XAssert.AreEqual(1, results.Count()); XAssert.AreEqual(new PipId(2), results.First()); // should match "alpha.bravo" pip substrings NameFilter <PipId> nameFilter2 = new NameFilter <PipId>( builder.PackedExecution.PipTable, nameIndex, pid => builder.PackedExecution.PipTable[pid].Name, '.', "t.golf.h"); PipId[] results2 = nameFilter2.Filter().ToArray(); XAssert.AreEqual(1, results2.Count()); XAssert.AreEqual(new PipId(3), results2.First()); }
static void Main(string[] args) { if (args.Length == 0 || args.Length > 2) { Console.WriteLine("Usage: pdmodscript <input script> <output mod file>"); return; } try { BundleMod newMod = new BundleMod(); NameIndex fileIndex = new NameIndex(); fileIndex.Load("bundle_db.blb"); ModScriptParser parser = new ModScriptParser(args[0], ref newMod, fileIndex); parser.Parse(); //Use the @name for output filename if (args.Length == 1) { Save(parser.getModName(), newMod); } else { Save(args[1], newMod); } } catch (Exception e) { Console.Write("[ERROR] {0}\nTrace: {1}", e.Message, e.StackTrace); return; } }
public void DumpXml(XmlWriter writer) { writer.WriteStartElement("namespace"); writer.WriteAttributeString("index", Index.ToString()); writer.WriteAttributeString("name", NameString); writer.WriteAttributeString("kind", Kind.ToString()); writer.WriteAttributeString("name-index", NameIndex.ToString()); writer.WriteEndElement(); }
public RenamingLuceneDriver(string index_name, int minor_version) { this.driver = new LuceneDriver(index_name, minor_version); this.name_index = new NameIndex(this.driver.IndexDirectory, this.driver.Fingerprint); this.driver.ChangedEvent += OnLuceneDriverChanged; this.driver.ChildIndexableEvent += OnLuceneChildIndexableEvent; this.driver.UrisFilteredEvent += OnLuceneUrisFilteredEvent; }
public RenamingLuceneDriver (string index_name, int minor_version) { this.driver = new LuceneDriver (index_name, minor_version); this.name_index = new NameIndex (this.driver.IndexDirectory, this.driver.Fingerprint); this.driver.ChangedEvent += OnLuceneDriverChanged; this.driver.ChildIndexableEvent += OnLuceneChildIndexableEvent; this.driver.UrisFilteredEvent += OnLuceneUrisFilteredEvent; }
public void ReIndex(long userId) { var predicate = PredicateBuilder.True <Entity>(); var entities = LoadSearch(userId, predicate); foreach (var entity in entities) { entity.NameIndex = NameIndex.GetNameIndex(userId, entity.FirstName, entity.FamilyName, entity.FatherName, DateUtilities.IsDate(entity.Dob.ToString()) ? CheckEmpty.Date(entity.Dob).Year : 0); entity.NameIndex += NameIndex.GetNameIndex(userId, entity.ArFirstName, entity.ArFamilyName, entity.ArFatherName, DateUtilities.IsDate(entity.Dob.ToString()) ? CheckEmpty.Date(entity.Dob).Year : 0); Edit(userId, entity); } }
public override int GetBuilderSize() { BuilderSize = NameIndex.GetBuilderSize(); if (NameIndex.Name == ObjectTypes.None.ToString()) { return(BuilderSize); } BuilderSize += TypeNameIndex.GetBuilderSize() + sizeof(int) * 2; Size = Value.GetBuilderSize(); return(BuilderSize + Size); }
public override async Task WriteBuffer(ByteArrayWriter Writer, int CurrentOffset) { await NameIndex.WriteBuffer(Writer, 0); if (NameIndex.Name == ObjectTypes.None.ToString()) { return; } await TypeNameIndex.WriteBuffer(Writer, 0); Writer.WriteInt32(Size); Writer.WriteInt32(ArrayIndex); await Value.WriteBuffer(Writer, CurrentOffset); }
public async Task ReadProperty(ByteArrayReader reader, DomainHeader header) { await Task.Run(() => NameIndex.ReadNameTableIndex(reader, header)); if (NameIndex.Name == ObjectTypes.None.ToString()) { return; } await Task.Run(() => TypeNameIndex.ReadNameTableIndex(reader, header)); Size = reader.ReadInt32(); ArrayIndex = reader.ReadInt32(); Value = propertyValueFactory(); await Value.ReadPropertyValue(reader, Size, header); }
public void NameFilter_filters_starts_and_ends_correctly() { PackedExecution.Builder builder = ConstructExecution(); NameIndex nameIndex = new NameIndex(builder.PackedExecution.PipTable.PipNameTable); // should match "alpha.bravo" pip substrings NameFilter <PipId> nameFilter = new NameFilter <PipId>( builder.PackedExecution.PipTable, nameIndex, pid => builder.PackedExecution.PipTable[pid].Name, '.', "a.b"); PipId[] results = nameFilter.Filter().OrderBy(pid => pid).ToArray(); XAssert.AreEqual(2, results.Count()); XAssert.AreEqual(new PipId(1), results.First()); XAssert.AreEqual(new PipId(2), results.Last()); }
void GenSut() { _sut?.CancelReservations(); _persistence?.Dispose(); _persistence = new FASTERNameIndexPersistence( indexName: "StreamNameIndexPersistence", logDir: _outputDir, firstValue: LogV3SystemStreams.FirstRealStream, valueInterval: LogV3SystemStreams.StreamInterval, initialReaderCount: 1, maxReaderCount: 1, enableReadCache: true, checkpointInterval: Timeout.InfiniteTimeSpan); _sut = new( indexName : "StreamNameIndex", firstValue : LogV3SystemStreams.FirstRealStream, valueInterval : LogV3SystemStreams.StreamInterval, existenceFilter : new NoNameExistenceFilter(), persistence : _persistence, metastreams : new LogV3Metastreams()); }
void GenSut() { _sut?.CancelReservations(); _persistence?.Dispose(); _persistence = new FASTERNameIndexPersistence( indexName: "EventTypeIndexPersistence", logDir: _outputDir, firstValue: LogV3SystemEventTypes.FirstRealEventTypeNumber, valueInterval: LogV3SystemEventTypes.EventTypeInterval, initialReaderCount: 1, maxReaderCount: 1, enableReadCache: true, checkpointInterval: Timeout.InfiniteTimeSpan); _sut = new( indexName: "EventTypeIndex", firstValue: LogV3SystemEventTypes.FirstRealEventTypeNumber, valueInterval: LogV3SystemEventTypes.EventTypeInterval, existenceFilter: new NoNameExistenceFilter(), persistence: _persistence, metastreams: null, recordTypeToHandle: typeof(LogV3EventTypeRecord)); }
private static void PreSave(long userId, ref Employee toSave, Enumerations.ActionMode action) { if (action == Enumerations.ActionMode.Add) { toSave.EntryDate = BlCommon.GetServerDateTime(); toSave.Entity.EntryDate = toSave.EntryDate; toSave.Entity.UserId = toSave.UserId; toSave.Entity.Status = toSave.Status; } else if (action == Enumerations.ActionMode.Edit) { //toSave.Entity = BlEntity.LoadSingle(userId, toSave.Entity.Pin); if (toSave.Entity.Status == "S") { //TODO:Check no goods are related to this employee } } toSave.Entity.NameIndex = NameIndex.GetNameIndex(userId, toSave.Entity.FirstName, toSave.Entity.FamilyName, toSave.Entity.FatherName); toSave.Entity.NameIndex += NameIndex.GetNameIndex(userId, toSave.Entity.ArFirstName, toSave.Entity.ArFamilyName, toSave.Entity.ArFatherName); BlArDict.SetArabicDict(userId, toSave.Entity.FirstName, toSave.Entity.ArFirstName); BlArDict.SetArabicDict(userId, toSave.Entity.FatherName, toSave.Entity.ArFatherName); BlArDict.SetArabicDict(userId, toSave.Entity.FamilyName, toSave.Entity.ArFamilyName); }
public void NameIndex_contains_all_names() { StringTable stringTable = new StringTable(); StringTable.CachingBuilder stringTableBuilder = new StringTable.CachingBuilder(stringTable); NameTable nameTable = new NameTable('.', stringTable); NameTable.Builder nameTableBuilder = new NameTable.Builder(nameTable, stringTableBuilder); NameId id = nameTableBuilder.GetOrAdd("a.b.c"); NameId id2 = nameTableBuilder.GetOrAdd("a.b.d.e"); NameId id3 = nameTableBuilder.GetOrAdd("a.f.g.h"); NameIndex nameIndex = new NameIndex(nameTable); XAssert.AreEqual(8, nameIndex.Count); XAssert.AreEqual(3, nameIndex[id].Length); XAssert.AreEqual(4, nameIndex[id2].Length); XAssert.AreEqual(4, nameIndex[id3].Length); // We know these are the string IDs because string IDs get added as the names are constructed, // and we happened to add names with each successive atom in lexical order. StringId a = new StringId(1); StringId b = new StringId(2); StringId c = new StringId(3); StringId d = new StringId(4); StringId e = new StringId(5); StringId f = new StringId(6); StringId g = new StringId(7); StringId h = new StringId(8); XAssert.AreArraysEqual(new[] { a, b, c }, nameIndex.Enumerate(id).Select(entry => entry.Atom).ToArray(), true); XAssert.AreArraysEqual(new[] { a, b, d, e }, nameIndex.Enumerate(id2).Select(entry => entry.Atom).ToArray(), true); XAssert.AreArraysEqual(new[] { a, f, g, h }, nameIndex.Enumerate(id3).Select(entry => entry.Atom).ToArray(), true); }
protected override void OnClear() { NameIndex.Clear(); AgeIndex.Clear(); }
protected override void OnRemove(TestDataItem item) { NameIndex.Remove(item); AgeIndex.Remove(item); }
protected override void OnAdd(TestDataItem item) { NameIndex.Add(item); AgeIndex.Add(item); }