예제 #1
0
        public void reportStatus(SimulatorStatus value, string message = "")
        {
            Console.WriteLine($"[LOADER] Update simulation status {status} -> {value}");

            var previous  = reportedStatus(status);
            var newStatus = reportedStatus(value);

            status = value;

            if (value == SimulatorStatus.Error && SimulatorManager.InstanceAvailable)
            {
                SimulatorManager.Instance.AnalysisManager.AddErrorEvent(message);
            }

            if (previous == newStatus)
            {
                return;
            }

            if (ConnectionManager.instance != null)
            {
                ConnectionManager.instance.UpdateStatus(newStatus, CurrentSimulation.Id, message);
            }

            if (value == SimulatorStatus.Idle)
            {
                currentSimulation = null;
            }

            if (status == SimulatorStatus.Running)
            {
                WindowFlasher.Flash();
            }
        }
예제 #2
0
        public void reportStatus(SimulatorStatus value, string message = "")
        {
            Debug.Log($"loader status: {status}->{value} {message}");
            Console.WriteLine($"[LOADER] Update simulation status {status} -> {value}");

            if (value < status && !(status == SimulatorStatus.Stopping && value == SimulatorStatus.Idle))
            {
                throw new Exception($"Attemted to transition simulation status from {Enum.GetName(typeof(SimulatorStatus), value)} to {Enum.GetName(typeof(SimulatorStatus), status)}");
            }

            var previous  = reportedStatus(status);
            var newStatus = reportedStatus(value);

            status = value;

            if (value == SimulatorStatus.Error && SimulatorManager.InstanceAvailable)
            {
                SimulatorManager.Instance.AnalysisManager.AddErrorEvent(message);
            }

            if (previous == newStatus)
            {
                return;
            }

            if (ConnectionManager.instance != null &&
                ConnectionManager.Status != ConnectionManager.ConnectionStatus.Offline &&
                CurrentSimulation != null)
            {
                ConnectionManager.instance.UpdateStatus(newStatus, CurrentSimulation.Id, message);
            }

            if (value == SimulatorStatus.Idle)
            {
                currentSimulation = null;
            }

            if (status == SimulatorStatus.Running)
            {
                WindowFlasher.Flash();
            }
        }
예제 #3
0
        string reportedStatus(SimulatorStatus status)
        {
            switch (status)
            {
            case SimulatorStatus.Idle: return("Idle");

            // WISE does not care about Loading, just Starting
            case SimulatorStatus.Loading:
            case SimulatorStatus.Starting: return("Starting");

            case SimulatorStatus.Running: return("Running");

            case SimulatorStatus.Error: return("Error");

            case SimulatorStatus.Stopping: return("Stopping");

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
예제 #4
0
 public static ParkingRampSimulator.Messages.SimulatorStatusMessage ConvertToMessage(this SimulatorStatus source)
 {
     if (source == null)
     {
         return(null);
     }
     return(new ParkingRampSimulator.Messages.SimulatorStatusMessage(Simulator.Clock.Now)
     {
         RealTime = source.RealTime,
         ClockTime = source.SimulatorTime,
         Status = source.Status
     });
 }