public void ReaderInfo_from_xml() { var doc = new XmlDocument(); doc.LoadXml(@"<Alien-RFID-Reader-Heartbeat> <ReaderName>Alien RFID Reader</ReaderName> <ReaderType>Alien RFID Tag Reader, Model: ALR-F800-EMA (EN 302.208, 865-867 MHz)</ReaderType> <IPAddress>10.0.0.41</IPAddress> <IPv6Address>fdaa::aaaa</IPv6Address> <CommandPort>23</CommandPort> <HeartbeatTime>30</HeartbeatTime> <MACAddress>00:1B:5F:01:08:E4</MACAddress> <ReaderVersion>17.11.13.00</ReaderVersion> </Alien-RFID-Reader-Heartbeat>"); var ri = ReaderInfoParser.FromXmlString(doc); ri.ReaderName.ShouldBe("Alien RFID Reader"); ri.IPAddress.ShouldBe(IPAddress.Parse("10.0.0.41")); ri.IPAddress6.ShouldBe(IPAddress.Parse("fdaa::aaaa")); ri.CommandPort.ShouldBe(23); ri.MACAddress.ShouldBe("00:1B:5F:01:08:E4"); ri.Time.ShouldBeInRange(DateTimeOffset.UtcNow.AddSeconds(-2), DateTimeOffset.UtcNow); }
private async void RecieveLoop() { try { while (true) { var result = await client.ReceiveAsync(); lock (readers) { var doc = new XmlDocument(); doc.Load(new MemoryStream(result.Buffer)); var ri = ReaderInfoParser.FromXmlString(doc); discovery.OnNext(ri); readers.Add(ri); } } } catch (Exception e) { Logger.Warning("Receive loop failed {e}", e); } }