private void Refresh() { //var output = new StringBuilder(); var packets = new List <PacketViewModel>(); //Create the reader using (var captureReader = new CaptureFileReader(_captureFilePath)) { var sample = captureReader.Read(); //Keep track of the last sample so we now how far apart they are Sample lastSample = null; var buffer = new List <Sample>(); var captureTimerInfo = new CaptureTimerInfo(captureReader.StartTime, captureReader.TicksPerSecond); while (sample != null) { if (lastSample != null) { //Get the elapsed Ms var elapsedMs = captureTimerInfo.TicksToMilliseconds(sample.Ticks - lastSample.Ticks); if (elapsedMs >= _packetThreshold) { packets.Add(new PacketViewModel(buffer.ToArray())); buffer.Clear(); } } //Add an item to the buffer buffer.Add(sample); //Save this sample for next time lastSample = sample; //Get the next sample sample = captureReader.Read(); //See if we have any last bits... (might take this out) if (sample == null && buffer.Any()) { packets.Add(new PacketViewModel(buffer.ToArray())); buffer.Clear(); } } } //Ditch the first one if it has an error if (packets.Count > 0 && packets[0].HasError) { packets.RemoveAt(0); } Packets = packets.ToArray(); }
public SmsController(CaptureFileReader reader) { _reader = reader; }