示例#1
0
        /// <summary>
        /// Handle VehicleExitRegistered message.
        /// </summary>
        /// <param name="msg">The message to handle.</param>
        private void Handle(VehicleExitRegistered msg)
        {
            _exitTimestamp = msg.Timestamp;

            // check speed limit
            int speedingViolation = DetermineSpeedingViolation();

            // log exit
            if (speedingViolation > 0)
            {
                FluentConsole.Red.Line($"{_color} {_brand} '{msg.VehicleId}' exited at {msg.Timestamp.ToString("HH:mm:ss.ffffff")}" +
                                       $"(avg speed {_avgSpeedInKmh} km/h - {speedingViolation} km/h over speed-limit (after correction))");

                // register speeding violation
                _cjcaActor = Context.ActorSelection("/user/cjcaactor");
                var rsv = new RegisterSpeedingViolation(_vehicleId, _roadInfo.RoadId, speedingViolation);
                _cjcaActor.Tell(rsv);
            }
            else
            {
                FluentConsole.Yellow.Line($"{_color} {_brand} '{msg.VehicleId}' exited at {msg.Timestamp.ToString("HH:mm:ss.ffffff")}" +
                                          $"(avg speed {_avgSpeedInKmh} km/h)");
            }

            Self.Tell(new Shutdown());
        }
示例#2
0
        private void Handle(VehicleExitRegistered message)
        {
            Console.WriteLine($"Zaregistrován výjezd vozu z poznávací značkou {message.Registration}. Čas {message.ExitTime}");
            _exitTime = message.ExitTime;
            int totalSpeed = CalculateSpeed();

            if (totalSpeed > 80)
            {
                var prosecutorActor = Context.ActorSelection("/user/prosecutor");
                prosecutorActor.Tell(new RegisterSpeedingViolation(_registration, _color, _brand, totalSpeed));
                Context.Self.Tell(new Shutdown());
            }
        }
        /// <summary>
        /// Handle VehicleExitRegistered message.
        /// </summary>
        /// <param name="msg">The message to handle.</param>
        private void Handle(VehicleExitRegistered msg)
        {
            var vehicleActor = Context.ActorSelection($"/user/traffic-control/*/vehicle-{msg.VehicleId}");

            vehicleActor.Tell(msg);
        }
        /// <summary>
        /// Handle VehiclePassed message
        /// </summary>
        /// <param name="msg">The message to handle.</param>
        private void Handle(VehiclePassed msg)
        {
            VehicleExitRegistered vehicleExitRegistered = new VehicleExitRegistered(msg.VehicleId, msg.Timestamp);

            _trafficControlActor.Tell(vehicleExitRegistered);
        }