예제 #1
0
        private bool ProcessTSharkString(string s)
        {
            bool added = false;

            s = s.TrimStart(' ').Replace("  ", " ").Replace("  ", " ").Replace("  ", " ");
            if (s.Contains(textBoxFilter.Text.Replace("  ", " ")))
            {
                string[] values = s.Split(' ');
                if (values.Length > 10) // похоже, так теряются строки, которые прочли пока они не успели до конца записаться в лог. ПОДУМАТЬ!!!
                {
                    if (sessionId == "")
                    {
                        if (!TempSessions.ContainsKey(values[8]))
                        {
                            TempSessions.Add(values[8], new List <string>());
                        }
                        TempSessions[values[8]].Add(s);
                        if (values.Length > 11) // this session has a Marked packet => this is a video session, so take it!!
                        {
                            sessionId = values[8];
                            foreach (string tempstr in TempSessions[sessionId])
                            {
                                rawSessionData.Add(tempstr);
                                string[] tempvals = tempstr.Split(' ');
                                session.Add(RTPPacket.ImportTShark(tempvals));
                            }
                        }
                    }
                    else if (sessionId == values[8])
                    {
                        rawSessionData.Add(s);
                        RTPPacket p = RTPPacket.ImportTShark(values);
                        if (!p.Corrupted)
                        {
                            session.Add(p);
                        }
                        added = true;
                    }
                }
            }
            return(added);
        }