/// <summary> /// A suitable transmitter has been selected to submit some data. We'll queue /// it for transmission in the next Update(). /// </summary> /// <param name="data"></param> /// <param name="transmitter"></param> private void QueueTransmission(ScienceDataList data, IScienceDataTransmitter transmitter) { if (data.Count == 0) { return; } #if DEBUG if (!realTransmitters.ContainsKey(transmitter)) { Log.Error("MagicDataTransmitter.DoTransmit - Given transmitter isn't in real transmitter list!"); } #endif toBeTransmitted[transmitter].AddRange(data); }
/// <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"); } }