Example #1
0
 private static async Task StoreSnooperExports(ISnooperExportFacade snooperExportFacade, IEnumerable <SnooperExportCollection> snoopersExportsCollections)
 {
     foreach (var snooperExportCollection in snoopersExportsCollections)
     {
         await snooperExportFacade.InsertAsync(snooperExportCollection);
     }
 }
 private async Task StoreSnooperExportCollectionAsync(ISnooperExportFacade snooperExportFacade, SnooperExportCollection snooperExportCollection)
 {
     try
     {
         await snooperExportFacade.InsertAsync(snooperExportCollection).ConfigureAwait(false);
     }
     catch (Exception e)
     {
         this._logger.Error(e, "SnooperExportCollection storage error");
         throw;
     }
 }
        private void SetupAndRunProcessingPipeline(Predicate <L7Conversation> l7ConversationFilter, Int32 sourceQueueSize, ISnooperExportFacade snooperExportFacade)
        {
            var snooperRunner = this.CreateAndInitializeSnooperRunner();

            var storageAndLogSink = Sink.ForEachParallel <SnooperExportCollection>(
                1024, async snooperExportCollection =>
            {
#if DEBUG
                this.LogSnooperExportCollectionExceptions(snooperExportCollection);
#endif
                await StoreSnooperExportCollectionAsync(snooperExportFacade, snooperExportCollection).ConfigureAwait(false);
            });

            var l7ConversationStreamSource = Source.Queue <L7Conversation>(sourceQueueSize, OverflowStrategy.Backpressure)
                                             .Where(l7ConversationFilter).SelectAsyncUnordered(
                Environment.ProcessorCount,
                conversation => this.ProcessConversationAsync(conversation, snooperRunner))
                                             .WhereNot(collection => collection is SnooperEmptyExportCollection);

            (this._l7ConversationStreamSourceQueue, this._processingStreamCompletitionTask) = l7ConversationStreamSource
                                                                                              .ToMaterialized(storageAndLogSink, Keep.Both)
                                                                                              .Run(Context.System.Materializer());
        }
 public static Props Props(IActorRef contractor, Predicate <IL7Conversation> l7ConversationFilter, ISnooperExportFacade snooperExportFacade) =>
 Akka.Actor.Props.Create <ApplicationProtocolExportActor>(contractor, l7ConversationFilter, snooperExportFacade);
        public ApplicationProtocolExportActor(IActorRef contractor, Predicate <L7Conversation> l7ConversationFilter, ISnooperExportFacade snooperExportFacade)
        {
            this._contractor = contractor;

            this.SetupAndRunProcessingPipeline(l7ConversationFilter, 4096, snooperExportFacade);

            this.Become(this.ProcessingBehaviour);
        }