public UPnPService(UPnPDevice parent, XNamespace ns, XElement service) { ParentDevice = parent; ServiceType = service.Elements().First(e => e.Name.LocalName == "serviceType").Value; ServiceID = service.Elements().First(e => e.Name.LocalName == "serviceId").Value; ControlUrl = service.Elements().First(e => e.Name.LocalName == "controlURL").Value; }
private void ParseSSDPResponse(Uri webAddr, String response) { using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(response))) { using (XmlReader reader = XmlReader.Create(stream)) { XDocument document = XDocument.Load(reader, LoadOptions.None); XNamespace ns = "urn:schemas-upnp-org:device-1-0"; List <XElement> devices = document.Descendants(ns + "device").ToList(); foreach (XElement device in devices) { UPnPDevice upnpDevice = new UPnPDevice(webAddr, ns, device); lock (_devices) { bool deviceExists = false; foreach (UPnPDevice deviceCompare in _devices) { if (deviceCompare.UDN == upnpDevice.UDN) { deviceCompare.Confirmed = true; deviceExists = true; break; } } if (!deviceExists) { _devices.Add(upnpDevice); foreach (UPnPService service in upnpDevice.Services) { if (ServiceFound != null) { RaiseEventOnUIThread(ServiceFound, new object [] { _instance, new ServiceEventArgs(service) }); } } } } } } } }
private void ParseSSDPResponse(Uri webAddr, String response) { using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(response))) { using (XmlReader reader = XmlReader.Create(stream)) { XDocument document = XDocument.Load(reader, LoadOptions.None); XNamespace ns = "urn:schemas-upnp-org:device-1-0"; List<XElement> devices = document.Descendants(ns + "device").ToList(); foreach (XElement device in devices) { UPnPDevice upnpDevice = new UPnPDevice(webAddr, ns, device); lock (_devices) { bool deviceExists = false; foreach (UPnPDevice deviceCompare in _devices) { if (deviceCompare.UDN == upnpDevice.UDN) { deviceCompare.Confirmed = true; deviceExists = true; break; } } if (!deviceExists) { _devices.Add(upnpDevice); foreach (UPnPService service in upnpDevice.Services) { if (ServiceFound != null) RaiseEventOnUIThread(ServiceFound, new object [] { _instance, new ServiceEventArgs(service) }); } } } } } } }