Beispiel #1
0
        public void CanAddLiveDataRoutes()
        {
            var cache = SensorCacheGenerationHelper.BuildSensors();
            var route = new LiveDataRoute {
                SensorID = cache.Item1[0],
                Target   = "s1"
            };

            cache.Item2.AddLiveDataRoute(route);
            var sensor = cache.Item2[cache.Item1[0]];

            Assert.AreEqual(1, sensor.LiveDataRouting.Count);
            Assert.AreEqual("s1", sensor.LiveDataRouting.First().Target);
        }
        public void HandleUpdate(Command cmd)
        {
            LiveDataRoute         route;
            InternalLiveDataRoute @internal;

            switch (cmd.Cmd)
            {
            case CommandType.AddLiveDataSensor:
                @internal = JsonConvert.DeserializeObject <InternalLiveDataRoute>(cmd.Arguments);
                route     = new LiveDataRoute {
                    Target   = @internal.Target,
                    SensorID = ObjectId.Parse(@internal.SensorID)
                };

                this.m_cache.AddLiveDataRoute(route);
                break;

            case CommandType.RemoveLiveDataSensor:
                @internal = JsonConvert.DeserializeObject <InternalLiveDataRoute>(cmd.Arguments);
                route     = new LiveDataRoute {
                    Target   = @internal.Target,
                    SensorID = ObjectId.Parse(@internal.SensorID)
                };

                this.m_cache.RemoveLiveDataRoute(route);
                break;

            case CommandType.SyncLiveDataSensors:
                var raw  = JsonConvert.DeserializeObject <InternalLiveDataSyncList>(cmd.Arguments);
                var list = raw.Sensors.Select(objId => new LiveDataRoute {
                    SensorID = ObjectId.Parse(objId),
                    Target   = raw.Target
                });

                this.m_cache.SyncLiveDataRoutes(list.ToList());
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }