public virtual IEnumerator <ITask> ConfigureDeviceHandler(ConfigureDevice configureDevice)
        {
            int ix = _state.SensorConfiguration.FindIndex(
                delegate(SensorConfiguration c)
            {
                return(c.DeviceModel == configureDevice.Body.DeviceModel &&
                       (c.DeviceName ?? string.Empty) == (configureDevice.Body.DeviceName ?? string.Empty));
            });

            if (ix < 0)
            {
                _state.SensorConfiguration.Add(configureDevice.Body);
            }
            else
            {
                _state.SensorConfiguration[ix].SuccessRangeMin = configureDevice.Body.SuccessRangeMin;
                _state.SensorConfiguration[ix].SuccessRangeMax = configureDevice.Body.SuccessRangeMax;
            }

            ValidateState();

            yield return(Arbiter.ExecuteToCompletion(Environment.TaskQueue,
                                                     new IterativeTask(FindSensors)));

            configureDevice.ResponsePort.Post(DefaultUpsertResponseType.Instance);
            yield break;
        }
        public virtual IEnumerator<ITask> ConfigureDeviceHandler(ConfigureDevice configureDevice)
        {
            int ix = _state.SensorConfiguration.FindIndex(
                delegate(SensorConfiguration c)
                {
                    return c.DeviceModel == configureDevice.Body.DeviceModel
                        && (c.DeviceName ?? string.Empty) == (configureDevice.Body.DeviceName ?? string.Empty);
                });

            if (ix < 0)
                _state.SensorConfiguration.Add(configureDevice.Body);
            else
            {
                _state.SensorConfiguration[ix].SuccessRangeMin = configureDevice.Body.SuccessRangeMin;
                _state.SensorConfiguration[ix].SuccessRangeMax = configureDevice.Body.SuccessRangeMax;
            }

            ValidateState();

            yield return Arbiter.ExecuteToCompletion(Environment.TaskQueue,
                new IterativeTask(FindSensors));

            configureDevice.ResponsePort.Post(DefaultUpsertResponseType.Instance);
            yield break;
        }