/// <summary> /// Loads the configuration from the specified reader. /// </summary> protected override void Load(TextReader reader) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(reader); XmlElement rootElem = xmlDoc.DocumentElement; if (rootElem.SelectSingleNode("GeneralOptions") is XmlNode generalOptionsNode) { GeneralOptions.LoadFromXml(generalOptionsNode); } if (rootElem.SelectSingleNode("ListenerOptions") is XmlNode listenerOptionsNode) { ListenerOptions.LoadFromXml(listenerOptionsNode); } HashSet <string> moduleCodeSet = new HashSet <string>(); void AddModuleCode(string moduleCode) { if (!string.IsNullOrEmpty(moduleCode) && moduleCodeSet.Add(moduleCode.ToLowerInvariant())) { ModuleCodes.Add(moduleCode); } } if (rootElem.SelectSingleNode("Modules") is XmlNode modulesNode) { foreach (XmlElement moduleElem in modulesNode.SelectNodes("Module")) { string moduleCode = ScadaUtils.RemoveFileNameSuffixes(moduleElem.GetAttribute("code")); AddModuleCode(moduleCode); } } if (rootElem.SelectSingleNode("Archives") is XmlNode archivesNode) { foreach (XmlElement archiveElem in archivesNode.SelectNodes("Archive")) { ArchiveConfig archiveConfig = new ArchiveConfig(); archiveConfig.LoadFromXml(archiveElem); Archives.Add(archiveConfig); if (archiveConfig.Active) { AddModuleCode(archiveConfig.Module); } } } }
private int RetrieveValueBasedOnMode(ModuleCodes mc, int[] opCodeSeq, int index) { switch (mc) { case ModuleCodes.immediateMode: return(index); case ModuleCodes.positionMode: return(opCodeSeq[index]); default: return(0); } }