private void ProcessMachines(MachineMetadata[] machines) { foreach (MachineMetadata metadata in machines) { IMachine machine = metadata.Machine; switch (machine.GetState()) { case MachineState.Empty: machine.Pull(metadata.Connected); break; case MachineState.Done: if (TryPush(metadata.Connected, machine.GetOutput())) { machine.Reset(true); } break; } } }
/// <summary>Process a set of machines.</summary> /// <param name="machines">The machines to process.</param> private void ProcessMachines(IEnumerable <MachineMetadata> machines) { machines = machines.ToArray(); this.VerboseLog($"Automating {machines.Count()} machines..."); foreach (MachineMetadata metadata in machines) { IMachine machine = metadata.Machine; string summary = $"Automating {metadata.Location.Name} > {machine.GetType().Name} ({metadata.Connected.Length} pipes)..."; MachineState state = machine.GetState(); switch (state) { case MachineState.Empty: bool pulled = machine.Pull(metadata.Connected); summary += pulled ? " accepted new input." : " no input found."; break; case MachineState.Done: bool pushed = metadata.Connected.TryPush(machine.GetOutput()); summary += pushed ? " pushed output." : " done, but no pipes can accept its output."; break; default: summary += $" machine is {state.ToString().ToLower()}."; break; } this.VerboseLog($" {summary}"); } }