public RemoteSubmissionsWorker(string endpointRoot, IFormatterServiceFactory formatterServicesFactory)
 {
     this.formatterServicesFactory = formatterServicesFactory;
     this.Location = endpointRoot;
     this.endpoint = $"{endpointRoot}/executeSubmission?keepDetails=true";
     this.http     = new HttpService();
 }
        private (SubmissionProcessor <TSubmission> submissionProcessor, Thread thread) CreateRemoteWorker(
            int index,
            string endpoint,
            ConcurrentQueue <TSubmission> submissionsForProcessing,
            object sharedLockObject,
            IFormatterServiceFactory formatterServiceFactory,
            ISubmissionsFilteringService submissionsFilteringService)
        {
            var worker = new RemoteSubmissionsWorker(
                endpoint,
                formatterServiceFactory,
                this.Logger);

            var submissionProcessor = new SubmissionProcessor <TSubmission>(
                name: $"RSP #{index}",
                dependencyContainer: this.DependencyContainer,
                submissionsForProcessing: submissionsForProcessing,
                sharedLockObject: sharedLockObject,
                submissionsFilteringService: submissionsFilteringService,
                submissionWorker: worker);

            var thread = new Thread(submissionProcessor.Start)
            {
                Name = $"{nameof(Thread)} #{index}"
            };

            return(submissionProcessor, thread);
        }
 public RemoteSubmissionsWorker(
     string endpointRoot,
     IFormatterServiceFactory formatterServicesFactory,
     ILog logger)
 {
     this.formatterServicesFactory = formatterServicesFactory;
     this.logger   = logger;
     this.Location = endpointRoot;
     this.endpoint = $"{endpointRoot}/executeSubmission";
     this.http     = new HttpService();
 }
        private IEnumerable <(SubmissionProcessor <TSubmission> submissionProcessor, Thread thread)> GetRemoteWorkers(
            IEnumerable <string> remoteWorkerEndpoints,
            ConcurrentQueue <TSubmission> submissionsForProcessing,
            object sharedLockObject,
            IFormatterServiceFactory formatterServiceFactory,
            ISubmissionsFilteringService submissionsFilteringService)
        {
            var remoteWorkerEndpointsList = remoteWorkerEndpoints.ToList();

            return(Enumerable.Range(0, remoteWorkerEndpointsList.Count)
                   .Select(index => this.CreateRemoteWorker(
                               index + 1,
                               remoteWorkerEndpointsList[index],
                               submissionsForProcessing,
                               sharedLockObject,
                               formatterServiceFactory,
                               submissionsFilteringService)));
        }