Exemple #1
0
        /// <summary>
        /// Opens the existing table.
        /// </summary>
        /// <returns></returns>
        private FasterConversationTable OpenTable()
        {
            var dbPath = Path.GetFullPath(@"c:\temp\0001\");
            var table  = FasterConversationTable.Open(dbPath);

            return(table);
        }
 public void Setup()
 {
     _conversationTable = FasterConversationTable.Create($"{dataset}.{loadTableRun}", 3000000);
     using (var loader = _conversationTable.GetStreamer())
         using (var pcapReader = new SharpPcapReader(dataset))
         {
             while (pcapReader.GetNextFrame(out var rawFrame))
             {
                 loader.AddFrame(rawFrame);
             }
             loader.Close();
         }
 }
Exemple #3
0
        /// <summary>
        /// Creates a conversation table from the given collection of <paramref name="frames"/>.
        /// </summary>
        /// <param name="frames">Source frames used to populate conversation table.</param>
        /// <param name="conversationTablePath">The path to folder where conversation table is to be saved.</param>
        /// <param name="token">The cancellation token for interrupting the operation.</param>
        /// <returns>Newly created conversation table.</returns>
        public FasterConversationTable CreateConversationTable(IEnumerable <RawCapture> frames, string conversationTablePath, int framesCapacity, CancellationToken?token = null)
        {
            var flowTable = FasterConversationTable.Create(conversationTablePath, framesCapacity);

            using (var loader = flowTable.GetStreamer())
            {
                foreach (var frame in frames)
                {
                    loader.AddFrame(frame);
                    if (token?.IsCancellationRequested ?? false)
                    {
                        break;
                    }
                }
            }
            flowTable.SaveChanges();
            return(flowTable);
        }
Exemple #4
0
        public void TestCreateTable()
        {
            var sw       = new Stopwatch();
            var pcapPath = Path.GetFullPath(@"data\PCAP\modbus.pcap");
            var dbPath   = Path.GetFullPath(@"c:\temp\0001\");

            if (Directory.Exists(dbPath))
            {
                Directory.Delete(dbPath, true);
            }

            var flowTable   = FasterConversationTable.Create(dbPath, framesCapacity: 1700000);
            var frameNumber = 0;

            sw.Restart();
            using (var loader = flowTable.GetStreamer())
                using (var pcapReader = new SharpPcapReader(pcapPath))
                {
                    while (pcapReader.GetNextFrame(out var rawFrame))
                    {
                        frameNumber++;
                        loader.AddFrame(rawFrame);
                    }
                    loader.Close();
                }

            Console.WriteLine($"--- LOADED --- [{sw.Elapsed}]");
            sw.Restart();
            Console.WriteLine($"Convs= {flowTable.ConversationsCount} [{sw.Elapsed}]");
            sw.Restart();
            Console.WriteLine($"Frames= {flowTable.FramesCount} /{frameNumber} [{sw.Elapsed}]");
            sw.Restart();
            flowTable.SaveChanges();
            Console.WriteLine($"--- COMMITED --- [{sw.Elapsed}]");
            sw.Restart();
            Console.WriteLine($"Frames= {flowTable.FramesCount} / {frameNumber} [{sw.Elapsed}]");

            flowTable.Dispose();
        }
 /// <summary>
 /// Reads all packets available in conversation <paramref name="table"/>.
 /// </summary>
 /// <param name="table">The conversation table.</param>
 /// <returns>A collection of packets.</returns>
 public IEnumerable <(long Ticks, Packet Packet)> ReadAllPackets(FasterConversationTable table)
 {
     return(table.ProcessFrames <(long, Packet)>(table.FrameKeys, new PacketProcessor()));
 }