Example #1
0
        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;
 }