/// <summary> /// Reads in a Plasma Registry Page /// </summary> /// <param name="filename">Path to the Plasma Registry Page</param> /// <param name="readObjects">Whether or not we should read in the KeyedObjects</param> /// <param name="progress">Whether or not this should dispatch a plOperationProgress event</param> /// <returns>PageInfo representing this Plasma Registry Page</returns> public plPageInfo ReadPage(string filename, bool readObjects = false, bool progress = true) { plDebugLog.GetLog("ResManager").Debug("Reading PRP: " + Path.GetFileName(filename)); hsStream s = new hsStream(filename); plPageInfo info = new plPageInfo(); info.Read(s); fPages.Add(info); plDebugLog.GetLog("ResManager").Debug("\t* Plasma Version: " + s.Version.ToString()); plDebugLog.GetLog("ResManager").Debug("\t* Location: " + info.Location.ToString()); //if (fVersion == null) fVersion = s.Version; s.Seek(info.IndexStart); List<HoldingKey> keys = IReadKeyring(s, info.Location); if (!readObjects) { //Add them to the held list and go away! //Note: Don't close the stream! It will be // used later to read the objects! fHeldKeys.AddRange(keys); } else { if (OnProgressStart != null && progress) OnProgressStart(plOperationType.ReadingPageObjects, info.GetFilename(s.Version)); for (int i = 0; i < keys.Count; i++) { IReadHoldingKey(keys[i]); if (OnProgress != null) OnProgress(keys.Count, i + 1); } } return info; }