public override void ProcessCapturesInternal(IEnumerable <FileInfo> captureFiles) { this.CaptureProcessorBlock = this.CaptureProcessorBlockFactory.Create(); var l3L4ConversationTracker = this.L3L4ConversationTrackerBlockFactory.Create(); this.CaptureProcessorBlock.LinkTo(l3L4ConversationTracker, new DataflowLinkOptions() { PropagateCompletion = true }); var l7ConversationTrackerBlock = this.L7ConversationTrackerBlockFactory.Create(); l3L4ConversationTracker.LinkTo <PmFrameBase>(l7ConversationTrackerBlock); l3L4ConversationTracker.LinkTo <L4ConversationExtended>(l7ConversationTrackerBlock); l3L4ConversationTracker.Completion.ContinueWith(t => { if (t.IsFaulted) { ((IDataflowBlock)l7ConversationTrackerBlock).Fault(t.Exception); } else { l7ConversationTrackerBlock.Complete(); } }); foreach (var captureFile in captureFiles) { this.CaptureProcessorBlock.SendAsync(captureFile).Wait(); } this.CaptureProcessorBlock.Complete(); }
public override void ProcessCapturesInternal(IEnumerable <FileInfo> captureFiles) { this.CaptureProcessorBlock = this.CaptureProcessorBlockFactory.Create(); Task storeCapturesAwait; Task storeL3Await; Task storeL3StatisticsAwait; Task storeL4Await; Task storeL4StatisticsAwait; Task storeL7Await; Task storeL7StatisticsAwait; Task storeFramesAwait; Task storeL7PdusAwait; Task pmCaptureL3ConversationAwait; Task pmCaptureL4ConversationAwait; Task pmCaptureL7ConversationAwait; var storeCapturesBlock = this.CreateStoreActionBlock <PmCaptureBase>(out storeCapturesAwait); var storeL3ConversationBlock = this.CreateStoreActionBlock <L3Conversation>(out storeL3Await); var storeL3StatisticsBlock = this.CreateStoreActionBlock <L3ConversationStatistics>(out storeL3StatisticsAwait); var storeL4ConversationBlock = this.CreateStoreActionBlock <L4Conversation>(out storeL4Await); var storeL4StatisticsBlock = this.CreateStoreActionBlock <L4ConversationStatistics>(out storeL4StatisticsAwait); var storeL7ConversationBlock = this.CreateStoreActionBlock <L7Conversation>(out storeL7Await); var storeL7StatisticsBlock = this.CreateStoreActionBlock <L7ConversationStatistics>(out storeL7StatisticsAwait); var storeFramesBlock = this.CreateStoreActionBlock <PmFrameBase>(out storeFramesAwait); var storeL7PdusBlock = this.CreateStoreActionBlock <L7PDU>(out storeL7PdusAwait); var storePmCaptureL3ConversationBlock = this.CreateStoreToJunctionActionBlock <PmCaptureL3Conversation>(out pmCaptureL3ConversationAwait); var storePmCaptureL4ConversationBlock = this.CreateStoreToJunctionActionBlock <PmCaptureL4Conversation>(out pmCaptureL4ConversationAwait); var storePmCaptureL7ConversationBlock = this.CreateStoreToJunctionActionBlock <PmCaptureL7Conversation>(out pmCaptureL7ConversationAwait); this.CaptureProcessorBlock.LinkTo(storeCapturesBlock, new DataflowLinkOptions() { PropagateCompletion = true }); var l3L4ConversationTracker = this.L3L4ConversationTrackerBlockFactory.Create(); this.CaptureProcessorBlock.LinkTo(l3L4ConversationTracker, new DataflowLinkOptions() { PropagateCompletion = true }); l3L4ConversationTracker.LinkTo(storeL3ConversationBlock, new DataflowLinkOptions() { PropagateCompletion = true }); l3L4ConversationTracker.LinkTo(storePmCaptureL3ConversationBlock, new DataflowLinkOptions() { PropagateCompletion = true }); l3L4ConversationTracker.LinkTo(storeL3StatisticsBlock, new DataflowLinkOptions() { PropagateCompletion = true }); l3L4ConversationTracker.LinkTo(storePmCaptureL4ConversationBlock, new DataflowLinkOptions() { PropagateCompletion = true }); var l7ConversationTrackerBlock = this.L7ConversationTrackerBlockFactory.Create(); l3L4ConversationTracker.LinkTo <PmFrameBase>(l7ConversationTrackerBlock); l3L4ConversationTracker.LinkTo(storeL4StatisticsBlock, new DataflowLinkOptions() { PropagateCompletion = true }); l3L4ConversationTracker.LinkTo <L4ConversationExtended>(l7ConversationTrackerBlock); l3L4ConversationTracker.Completion.ContinueWith(t => { if (t.IsFaulted) { ((IDataflowBlock)l7ConversationTrackerBlock).Fault(t.Exception); } else { l7ConversationTrackerBlock.Complete(); } }); l7ConversationTrackerBlock.LinkTo(storeFramesBlock, new DataflowLinkOptions() { PropagateCompletion = true }); l7ConversationTrackerBlock.LinkTo(storeL7ConversationBlock, new DataflowLinkOptions() { PropagateCompletion = true }); l7ConversationTrackerBlock.LinkTo(storeL7StatisticsBlock, new DataflowLinkOptions() { PropagateCompletion = true }); l7ConversationTrackerBlock.LinkTo(storeL4ConversationBlock, new DataflowLinkOptions() { PropagateCompletion = true }); l7ConversationTrackerBlock.LinkTo(storeL7PdusBlock, new DataflowLinkOptions() { PropagateCompletion = true }); l7ConversationTrackerBlock.LinkTo(storePmCaptureL7ConversationBlock, new DataflowLinkOptions() { PropagateCompletion = true }); foreach (var captureFile in captureFiles) { this.CaptureProcessorBlock.SendAsync(captureFile).Wait(); } this.CaptureProcessorBlock.Complete(); Task.WhenAll( storeCapturesAwait, storeL3Await, storeL3StatisticsAwait, storeL4Await, storeL4StatisticsAwait, storeL7Await, storeL7StatisticsAwait, storeFramesAwait, storeL7PdusAwait, pmCaptureL3ConversationAwait, pmCaptureL4ConversationAwait, pmCaptureL7ConversationAwait ).Wait(); }