public void TransmitData(List <ScienceData> dataQueue, Callback callback) { Log.Debug("ALERT:MagicTransmitter: received {0} ScienceData entries", dataQueue.Count); Log.Debug(callback == null ? "ALERT: with no callback" : "ALERT:With callback"); List <IScienceDataTransmitter> list = new List <IScienceDataTransmitter>(); foreach (KeyValuePair <IScienceDataTransmitter, KeyValuePair <List <ScienceData>, Callback> > current in realTransmitters) { list.Add(current.Key); } if (list.Any()) { list = (from potential in list orderby ScienceUtil.GetTransmitterScore(potential) select potential).ToList(); QueueTransmission(dataQueue, list.First(), callback); return; } Log.Debug("[ScienceAlert]:MagicDataTransmitter: Did not find any real transmitters"); }
/// <summary> /// Locate a suitable transmitter and queue this data up for it /// </summary> /// <param name="data"></param> void IScienceDataTransmitter.TransmitData(ScienceDataList data) { Log.Debug("MagicTransmitter: received {0} ScienceData entries", data.Count); // locate the best actual transmitter to send this data through // lower scores seem to be better var potentials = new List <IScienceDataTransmitter>(); foreach (var kvp in realTransmitters) { potentials.Add(kvp.Key); } if (potentials.Count > 0) { potentials = potentials.OrderBy(potential => ScienceUtil.GetTransmitterScore(potential)).ToList(); QueueTransmission(data, potentials.First()); } else { Log.Error("MagicDataTransmitter: Did not find any real transmitters"); } }