Exemplo n.º 1
0
        protected override void OnReceive(object message)
        {
            switch (message)
            {
            case RespondTemperature m when m.RequestId == TemperatureRequestCorrelactionId:
                if (m.Temperature.HasValue)
                {
                    var temperatureAvailable = new TemperatureAvailable(m.Temperature.Value);
                    RecordTemperatureReading(Context.Sender, temperatureAvailable);
                }
                else
                {
                    RecordTemperatureReading(Context.Sender, NoTemperatureAvailable.Instance);
                }
                break;

            case Terminated m:
                RecordTemperatureReading(Context.Sender, SensorNotAvailable.Instance);
                break;

            case TemperatureQueryCanceled m:
                foreach (var sensorActor in ActorRefToSensorId.Keys)
                {
                    Readings.Add(ActorRefToSensorId[sensorActor], SensorTimedOut.Instance);
                }
                Requester.Tell(new RespondFloorTemperatures(RequestId, Readings.ToImmutableDictionary()));
                Context.Stop(Self);
                break;

            default:
                Unhandled(message);
                break;
            }
        }
Exemplo n.º 2
0
        protected override void OnReceive(object message)
        {
            switch (message)
            {
            case RespondTemperature m when m.RequestId == TemperatureRequestCorrelationId:
                ITemperatureQueryReading reading = null;
                if (m.Temperature.HasValue)
                {
                    reading = new TemperatureAvailable(m.Temperature.Value);
                }
                else
                {
                    reading = NoTemperatureReadingRecordedYet.Instance;
                }
                RecordSensorResponse(Sender, reading);
                break;

            case QueryTimeout m:
                foreach (var sensor in StillAwaitingReplay)
                {
                    var sensorId = ActorToSensorId[sensor];
                    RepliesReceived.Add(sensorId, TemperatureSensorTimedOut.Instance);
                }
                QueryRequester.Tell(new RespondAllTemperatures(RequestId, RepliesReceived.ToImmutableDictionary()));
                Context.Stop(Self);
                break;

            case Terminated m:
                RecordSensorResponse(m.ActorRef, TemperatureSensorNotAvailable.Instance);
                break;

            default:
                break;
            }
        }
Exemplo n.º 3
0
        protected override void OnReceive(object message)
        {
            switch (message)
            {
            case RespondTemperature m when m.RequestId == TemperatureRequestCorrelationId:
                ITemperatureQueryReading reading;
                if (m.Temperature.HasValue)
                {
                    reading = new TemperatureAvailable(m.Temperature.Value);
                }
                else
                {
                    reading = NoTemperatureReadingRecordedYet.Instance;
                }
                RecordSenderResponse(Sender, reading);
                break;

            case QueryTimeout m:
                foreach (var device in _stillAwaitingReply)
                {
                    var deviceId = _actorToDeviceId[device];
                    _repliesReceived.Add(deviceId, TemperatureDeviceTimeout.Instance);
                }
                _requester.Tell(new RespondAllTemperatures(_requestId, _repliesReceived.ToImmutableDictionary()));
                Context.Stop(Self);
                break;

            case Terminated m:
                RecordSenderResponse(m.ActorRef, TemperatureDeviceNotAvailable.Instance);
                break;

            default:
                Unhandled(message);
                break;
            }
        }