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)); }