private void epgWorkerDoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; if (worker == null) throw (new ArgumentException("EPG worker thread has been started with an incorrecect sender")); BackgroundParameters parameters = e.Argument as BackgroundParameters; if (parameters == null) throw (new ArgumentException("EPG worker thread has been started with incorrect parameters")); if (RunParameters.IsWindows) Thread.CurrentThread.Name = "EPG Controller Worker Thread"; Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; collector = getCollector(parameters.Frequency); CollectorReply reply = collector.Process(parameters.DataProvider, worker); collector.Stop(); collector.FinishFrequency(); Logger.Instance.Write("Sample stats: Sync byte searches: " + parameters.DataProvider.SyncByteSearches + " Samples dropped: " + parameters.DataProvider.SamplesDropped + " Max sample size: " + parameters.DataProvider.MaximumSampleSize); e.Cancel = true; Logger.Instance.Write("Background worker thread finished"); resetEvent.Set(); }
private IEPGCollector getCollector(TuningFrequency frequency) { IEPGCollector collector; switch (frequency.CollectionType) { case CollectionType.EIT: collector = new EITController(); Logger.Instance.Write("EPG delivery system is EIT on frequency " + frequency.Frequency); break; case CollectionType.MHEG5: collector = new DSMCCController(); Logger.Instance.Write("EPG delivery system is MHEG5 on frequency " + frequency.Frequency); break; case CollectionType.OpenTV: collector = new OpenTVController(); Logger.Instance.Write("EPG delivery system is OpenTV on frequency " + frequency.Frequency); break; case CollectionType.MediaHighway1: collector = new MediaHighway1Controller(); Logger.Instance.Write("EPG delivery system is MediaHighway1 on frequency " + frequency.Frequency); break; case CollectionType.MediaHighway2: collector = new MediaHighway2Controller(); Logger.Instance.Write("EPG delivery system is MediaHighway2 on frequency " + frequency.Frequency); break; case CollectionType.FreeSat: collector = new FreeSatController(); Logger.Instance.Write("EPG delivery system is FreeSat on frequency " + frequency.Frequency); break; case CollectionType.PSIP: collector = new AtscPsipController(); Logger.Instance.Write("EPG delivery system is ATSC PSIP on frequency " + frequency.Frequency); break; case CollectionType.DishNetwork: collector = new DishNetworkController(); Logger.Instance.Write("EPG delivery system is Dish Network on frequency " + frequency.Frequency); break; case CollectionType.BellTV: collector = new BellTVController(); Logger.Instance.Write("EPG delivery system is Bell TV on frequency " + frequency.Frequency); break; case CollectionType.SiehfernInfo: collector = new SiehFernInfoController(); Logger.Instance.Write("EPG delivery system is SiehFern Info on frequency " + frequency.Frequency); break; default: throw (new InvalidEnumArgumentException("CollectionType")); } addCollectorToList(collector); return (collector); }
private void addCollectorToList(IEPGCollector newCollector) { if (collectors == null) collectors = new Collection<IEPGCollector>(); foreach (IEPGCollector oldCollector in collectors) { if (oldCollector.GetType().FullName == newCollector.GetType().FullName) return; } collectors.Add(newCollector); }