示例#1
0
        private List <RemoteWorker> WorkersFromCommandLineOptions(CommandLineOptions options)
        {
            List <RemoteWorker> remoteWorkers = new List <RemoteWorker>();

            if (options.WorkerHost != null)
            {
                remoteWorkers.Add(_workerFactory.CreateRemoteWorker(options.WorkerHost));
                return(remoteWorkers);
            }

            if (options.WorkerHostFile != null)
            {
                if (!File.Exists(options.WorkerHostFile))
                {
                    Console.WriteLine("Error: File {0} does not exist.", options.WorkerHostFile);
                    return(null);
                }
                try
                {
                    using (Stream workerHostFileStream = File.OpenRead(options.WorkerHostFile))
                    {
                        foreach (string workerAddress in TargetFileParser.ParseTargets(workerHostFileStream))
                        {
                            RemoteWorker worker = _workerFactory.CreateRemoteWorker(workerAddress);
                            remoteWorkers.Add(worker);
                        }
                    }
                }
                catch (IOException ex)
                {
                    Console.WriteLine(string.Format("Error reading file: {0}\r\n{1}", options.WorkerHostFile, ex.Message));
                    return(null);
                }
            }

            if (options.UseAws)
            {
                AwsWorkerController aws = new AwsWorkerController();

                List <Amazon.EC2.Model.Instance> awsWorkers = aws.GetWorkerInstances();
                Console.WriteLine("Found {0} AWS workers", awsWorkers.Count);
                foreach (Amazon.EC2.Model.Instance instance in awsWorkers)
                {
                    RemoteWorker awsWorker = _workerFactory.CreateRemoteWorker(instance.PublicDnsName, instance.InstanceId, null);
                    remoteWorkers.Add(awsWorker);
                }
            }

            remoteWorkers = _savedWorkerManager.UpdateWorkersWithSavedData(_workerFactory, remoteWorkers);

            return(remoteWorkers);
        }
        private RemoteWorker RemoteWorkerFromStream(RemoteWorkerFactory workerFactory, Stream serializedWorker)
        {
            BinaryFormatter formatter = new BinaryFormatter();

            string   id            = ((string)formatter.Deserialize(serializedWorker));
            string   remoteAddress = ((string)formatter.Deserialize(serializedWorker));
            DateTime lastPullTime  = ((DateTime)formatter.Deserialize(serializedWorker));

            return(workerFactory.CreateRemoteWorker(id, remoteAddress, lastPullTime));
        }