public void SuccessfullyDeserializeADoorSensorReport() { string source = "{\"cmd\":\"report\",\"model\":\"magnet\",\"sid\":\"158d0001c1cdfb\",\"short_id\":56258,\"data\":\"{\\\"status\\\":\\\"open\\\"}\"}"; Common.Message.IInbound inbound = Common.Message.Deserializer.Default.Deserialize(new Common.Datagram(source, "127.0.0.1")); Assert.IsInstanceOfType(inbound, typeof(Common.Message.Inbound.DoorSensor.Report)); Common.Message.Inbound.DoorSensor.Report report = (Common.Message.Inbound.DoorSensor.Report)inbound; Assert.AreEqual(report.Sid, "158d0001c1cdfb"); Assert.AreEqual(report.Status, Common.Message.Inbound.DoorSensor.Status.Open); }
public void SuccessfullyDeserializeAHeartbeat() { string source = "{\"cmd\":\"heartbeat\",\"model\":\"gateway\",\"sid\":\"7811dcb06972\",\"short_id\":\"0\",\"token\":\"vYgMNFGfJWk0M22U\",\"data\":\"{\\\"ip\\\":\\\"192.168.2.12\\\"}\"}"; Common.Message.IInbound inbound = Common.Message.Deserializer.Default.Deserialize(new Common.Datagram(source, "127.0.0.1")); Assert.IsInstanceOfType(inbound, typeof(Common.Message.Inbound.Heartbeat)); Common.Message.Inbound.Heartbeat heartbeat = (Common.Message.Inbound.Heartbeat)inbound; Assert.AreEqual(heartbeat.Sid, "7811dcb06972"); Assert.AreEqual(heartbeat.Token, "vYgMNFGfJWk0M22U"); }
public void SuccessfullyDeserializeAGatewayReading() { string source = "{\"cmd\":\"read_ack\",\"model\":\"gateway\",\"sid\":\"7811dcb06972\",\"short_id\":0,\"data\":\"{\\\"rgb\\\":0,\\\"illumination\\\":1292,\\\"proto_version\\\":\\\"1.0.9\\\"}\"}"; Common.Message.IInbound inbound = Common.Message.Deserializer.Default.Deserialize(new Common.Datagram(source, "127.0.0.1")); Assert.IsInstanceOfType(inbound, typeof(Common.Message.Inbound.Gateway.Reading)); Common.Message.Inbound.Gateway.Reading reading = (Common.Message.Inbound.Gateway.Reading)inbound; Assert.AreEqual(reading.Sid, "7811dcb06972"); Assert.AreEqual(reading.Rgb, "0"); Assert.AreEqual(reading.Illumination, 1292); Assert.AreEqual(reading.Version, "1.0.9"); }
public void SuccessfullyDeserializeAnIdList() { string source = "{\"cmd\":\"get_id_list_ack\",\"sid\":\"7811dcb06972\",\"token\":\"L0DI4IiFAvAgInyL\",\"data\":\"[\\\"158d0001a200f5\\\",\\\"158d0001c1cdfb\\\"]\"}"; Common.Message.IInbound inbound = Common.Message.Deserializer.Default.Deserialize(new Common.Datagram(source, "127.0.0.1")); Assert.IsInstanceOfType(inbound, typeof(Common.Message.Inbound.IdList)); Common.Message.Inbound.IdList idList = (Common.Message.Inbound.IdList)inbound; Assert.AreEqual(idList.Sid, "7811dcb06972"); Assert.AreEqual(idList.Token, "L0DI4IiFAvAgInyL"); CollectionAssert.AreEqual(idList.SubDevices.ToArray(), new [] { "158d0001a200f5", "158d0001c1cdfb" }); }
private async Task Process(Common.Datagram inboundDatagram) { Common.Message.IInbound inbound = Common.Message.Deserializer.Default.Deserialize(inboundDatagram); IEnumerable <Common.Message.IOutbound> outbound = await Process(inbound); if (outbound.Any()) { var streamProvider = GetStreamProvider(Common.Constants.OutboundTransmissionStreamProvider); var stream = streamProvider.GetStream <Common.Datagram>(Guid.Empty, Common.Constants.OutboundTransmissionStream); foreach (var outboundDatagram in outbound.Select(message => Common.Message.Serializer.Default.Serialize(message, inboundDatagram.IpAddress))) { await stream.OnNextAsync(outboundDatagram); } } }
private Task <IEnumerable <Common.Message.IOutbound> > Process(Common.Message.IInbound inbound) { switch (inbound) { case Common.Message.Inbound.Heartbeat heartbeat: return(Process(heartbeat)); case Common.Message.Inbound.IdList idList: return(Process(idList)); case Common.Message.Inbound.Gateway.Reading reading: return(Process(reading)); default: return(Task.FromResult(Enumerable.Empty <Common.Message.IOutbound>())); } }