public void Load() { Log.Info("Indexing forms in plugin {0}", fileName); Stream stream = context.DataFileProvider.GetDataFile(FileMode.Open, fileName).Open(); using (var reader = context.CreateReader(stream)) { // Header needs to be read again header = reader.ReadHeader(); // Prepare reference mapper reader.ReferenceMapper = new PluginReferenceMapper(this); int before = context.Forms.Count(); int overriding = 0; int added = 0; using (var progress = Display.StartProgress("Indexing forms")) { if (context.AsyncFormIndexing) { // Retrieve plugin number so that loaded forms can be linked to it byte pluginNumber = context.Plugins.GetPluginNumber(this); foreach (var record in reader.FindRecordsAsync()) { Form form = new Form() { PluginNumber = pluginNumber, FilePosition = record.FilePosition, FormKind = (FormKind)record.Signature, FormId = reader.ReferenceMapper.LocalToContext(record.FormId), ParentFormId = reader.ReferenceMapper.LocalToContext(record.ParentRecordFormId) }; // Index loaded form context.Forms.Add(form); added++; if (form.IsOverriding) overriding++; progress.Update(reader.TotalRecordsFound, header.NumRecords, "{0} ({1})", fileName, form.FormKind); } } else { FindRecordsListener listener = new FindRecordsListener(this, reader, progress); reader.FindRecords(listener); added = listener.Added; overriding = listener.Overriding; } } Log.Info("Found {0} forms ({1} overrides)", added, overriding); //if (header.NumRecords != reader.TotalRecordsFound) //{ // Log.Warning("Number of records specified in header {0} does not match number of records found {1}", header.NumRecords, reader.TotalRecordsFound); //} } }
public void Load() { Log.Info("Indexing forms in plugin {0}", fileName); Stream stream = context.DataFileProvider.GetDataFile(FileMode.Open, fileName).Open(); using (var reader = context.CreateReader(stream)) { // Header needs to be read again header = reader.ReadHeader(); // Prepare reference mapper reader.ReferenceMapper = new PluginReferenceMapper(this); int before = context.Forms.Count(); int overriding = 0; int added = 0; using (var progress = Display.StartProgress("Indexing forms")) { if (context.AsyncFormIndexing) { // Retrieve plugin number so that loaded forms can be linked to it byte pluginNumber = context.Plugins.GetPluginNumber(this); foreach (var record in reader.FindRecordsAsync()) { Form form = new Form() { PluginNumber = pluginNumber, FilePosition = record.FilePosition, FormKind = (FormKind)record.Signature, FormId = reader.ReferenceMapper.LocalToContext(record.FormId), ParentFormId = reader.ReferenceMapper.LocalToContext(record.ParentRecordFormId) }; // Index loaded form context.Forms.Add(form); added++; if (form.IsOverriding) { overriding++; } progress.Update(reader.TotalRecordsFound, header.NumRecords, "{0} ({1})", fileName, form.FormKind); } } else { FindRecordsListener listener = new FindRecordsListener(this, reader, progress); reader.FindRecords(listener); added = listener.Added; overriding = listener.Overriding; } } Log.Info("Found {0} forms ({1} overrides)", added, overriding); //if (header.NumRecords != reader.TotalRecordsFound) //{ // Log.Warning("Number of records specified in header {0} does not match number of records found {1}", header.NumRecords, reader.TotalRecordsFound); //} } }