Exemple #1
0
        /// <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;
     }
 }
Exemple #6
0
 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;
		}
Exemple #9
0
        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());
        }
Exemple #14
0
        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));
        }
Exemple #16
0
        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);
        }
Exemple #17
0
        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);
        }
Exemple #18
0
 protected override void OnClear()
 {
     NameIndex.Clear();
     AgeIndex.Clear();
 }
Exemple #19
0
 protected override void OnRemove(TestDataItem item)
 {
     NameIndex.Remove(item);
     AgeIndex.Remove(item);
 }
Exemple #20
0
 protected override void OnAdd(TestDataItem item)
 {
     NameIndex.Add(item);
     AgeIndex.Add(item);
 }