Exemplo n.º 1
0
        private void EmergencyEvacuation()
        {
            Debug.Assert(null != RunningJobs);

            if (RunningJobs.Count == 0)
            {
                return;
            }

            if (!declaredStateOfEmergency)
            {
                Tracer.Error("Director unavailable. Worker Manager starts emergency evacuation of workers.");
                declaredStateOfEmergency = true;
            }

            List <RunningJob> updatedListOfRunningJobs = RunningJobs.Where(runningJob => StopWorkersForJob(runningJob)).ToList();

            RunningJobs = updatedListOfRunningJobs;

            if (RunningJobs.Count > 0)
            {
                return;                        // Wait for jobs to stop
            }
            Tracer.Warning("Director unavailable. All workers successfully evacuated from the factory.");
            // All workers evacuated
        }