protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            var th = new Thread(async() =>
            {
                WorkerLog.Instance.Information($"Starting {nameof(Host.BackgroundWorkers.FileDisassemblerWorker)}");
                var incomingQueue = _workerQueueContainer.ToProcessFiles.Reader;
                var outgoingQueue = _workerQueueContainer.ToSendChunks.Writer;
                var taskRunner    = new TaskRunner(_amountOfConcurrentJobs);
                while (await incomingQueue.WaitToReadAsync() && !stoppingToken.IsCancellationRequested)
                {
                    var file = await incomingQueue.ReadAsync(stoppingToken);
                    if (System.IO.File.Exists(file.GetFullPath()))
                    {
                        taskRunner.Add(() => DissasemblyJob(outgoingQueue, file));
                    }
                    else
                    {
                        WorkerLog.Instance.Information($"File '{file.Path}' does not exist");
                    }
                }
            });

            th.Start();

            await Task.Delay(Timeout.Infinite);
        }
示例#2
0
        /// <inheritdoc />
        public async Task Execute(ExecutionContext context)
        {
            if (context.IsSuccessful)
            {
                var raisedEvents = context.RaisedEvents.Union(new[] { context.Response as EventMessage }).Where(e => e != null).ToArray();
                foreach (var instance in raisedEvents)
                {
                    await _eventStore.Append(instance).ConfigureAwait(false);

#pragma warning disable 4014
                    _tasks.Add(() => Task.Run(() => _messageGateway.Publish(instance, context)));
#pragma warning restore 4014
                }
            }
        }
示例#3
0
        protected async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            var th = new Thread(async() =>
            {
                WorkerLog.Instance.Information($"Starting {nameof(FileDisassemblerWorker)}");
                var incomingQueue = _workerQueueContainer.ToProcessFiles.Reader;
                var outgoingQueue = _workerQueueContainer.ToSendChunks.Writer;
                var taskRunner    = new TaskRunner(_amountOfConcurrentJobs);
                while (await incomingQueue.WaitToReadAsync() && !stoppingToken.IsCancellationRequested)
                {
                    var file = await incomingQueue.ReadAsync(stoppingToken);
                    if (System.IO.File.Exists(PathBuilder.BuildPath(file.Path)))
                    {
                        taskRunner.Add(async() =>
                        {
                            //START OF SECTION TO REFACTOR TO METHOD
                            WorkerLog.Instance.Information($"'{file.Path}' is being processed");
                            var recipients = await GetRecipients(file);

                            if (recipients.Any())
                            {
                                var eofMessage = await SplitFile(file, recipients, outgoingQueue);
                                if (eofMessage is object)
                                {
                                    await FinializeFileProcess(eofMessage, recipients);
                                }

                                WorkerLog.Instance.Information($"'{file.Path}' is processed");
                            }
                            //END OF SECTION
                        });
                    }
                    else
                    {
                        WorkerLog.Instance.Information($"File '{file.Path}' does not exist");
                    }
                }
            });

            th.Start();

            await Task.Delay(Timeout.Infinite);
        }