public bool AddFSSSignalsDiscoveredToSystem(JournalFSSSignalDiscovered jsd, ISystem sys) // background or foreground.. FALSE if you can't process it { SystemNode sn = GetOrCreateSystemNode(sys); foreach (var fs in jsd.Signals) { int indexprev = sn.FSSSignalList.FindIndex(x => x.IsSame(fs)); if (indexprev == -1) // if not found in signal list, store { sn.FSSSignalList.Add(fs); } else { sn.FSSSignalList[indexprev] = fs; // replace, it may be more up to date info, such as a carrier info } } return(false); }
private void ProcessedSaved() { List <Tuple <JournalEntry, ISystem> > todelete = new List <Tuple <JournalEntry, ISystem> >(); foreach (var e in ToProcess) { JournalSAAScanComplete jsaasc = e.Item1 as JournalSAAScanComplete; if (jsaasc != null) { if (ProcessSAAScan(jsaasc, e.Item2, false)) { todelete.Add(e); } } JournalSAASignalsFound jsaasf = e.Item1 as JournalSAASignalsFound; if (jsaasf != null) { if (ProcessSAASignalsFound(jsaasf, e.Item2, false)) { todelete.Add(e); } } JournalFSSSignalDiscovered jssdis = e.Item1 as JournalFSSSignalDiscovered; if (jssdis != null) { if (AddFSSSignalsDiscoveredToSystem(jssdis, null, false)) { todelete.Add(e); } } } foreach (var je in todelete) { ToProcess.Remove(je); } }
// if processing later, sys will be null public bool AddFSSSignalsDiscoveredToSystem(JournalFSSSignalDiscovered jsd, ISystem sys, bool saveprocessinglater = true) { foreach (var fs in jsd.Signals) { SystemNode sn = null; // if system = null, must look up (we are reprocessing) // OR if we have system address, but it differs if (sys == null || (fs.SystemAddress != null && sys.SystemAddress != null && fs.SystemAddress != sys.SystemAddress)) { //if (saveprocessinglater == true) //DEBUG ONLY keep for now //{ // System.Diagnostics.Debug.WriteLine("DEBUG - mismatch, save for processing later" + fs.SystemAddress); // SaveForProcessing(jsd, new SystemClass(fs.SystemAddress, null)); // return false; //} ISystem oldsys = sys; // for debug sys = null; foreach (var i in ScanDataByNameSysaddr) // manual for now, unfort. don't want another structure { if (i.Value.System.SystemAddress == fs.SystemAddress) { sys = i.Value.System; break; } } if (sys == null) // not found.. { if (saveprocessinglater == true) // if saving to list, store with a null system address { // System.Diagnostics.Debug.WriteLine("FSS Signals Can't find - storing for later " + fs.SystemAddress); SaveForProcessing(jsd, new SystemClass(fs.SystemAddress, null)); } else { //System.Diagnostics.Debug.WriteLine("FSS Signals can't find now" + fs.SystemAddress); } return(false); } else { //System.Diagnostics.Debug.WriteLine("FSS Signals sys address differs in {0} {1} found {2}", jsd.EventTimeUTC, oldsys?.Name, sys.Name); } } sn = GetOrCreateSystemNode(sys); // look at systemaddress via sys and determine if match, if not, save to processing list int indexprev = sn.FSSSignalList.FindIndex(x => x.IsSame(fs)); if (indexprev == -1) // if not found in signal list, store { sn.FSSSignalList.Add(fs); } else { sn.FSSSignalList[indexprev] = fs; // replace, it may be more up to date info, such as a carrier info } } return(true); }