private void AddFoundServiceFromSCResolvedData(IResolvableService metaData) { var sst = new ServiceInfo(metaData.TxtRecord["name"].ValueString, metaData.TxtRecord["loc"].ValueString, metaData.TxtRecord["addr"].ValueString, metaData.TxtRecord["code"].ValueString); ActivityServices.Add(sst); OnDiscoveryAddressAdded(new DiscoveryAddressAddedEventArgs(sst)); }
private void HandleRequest(IAsyncResult result) { var endPoint = new IPEndPoint(IPAddress.Any, WsDiscoveryPort); var bytes = _udpClient.EndReceive(result, ref endPoint); var str = Encoding.ASCII.GetString(bytes); var xml = new XmlDocument(); xml.LoadXml(str); var matches = xml.SelectNodes("//*[local-name() = 'ProbeMatch'] | //*[local-name() = 'Hello']"); if(matches.Count > 0) { foreach(XmlNode match in matches) { var serviceInfo = new ServiceInfo { Name = match.SelectNodes("//*[local-name() = 'string']")[0].InnerText, Location = match.SelectNodes("//*[local-name() = 'string']")[1].InnerText, Address = match.SelectNodes("//*[local-name() = 'string']")[2].InnerText, Code = match.SelectNodes("//*[local-name() = 'string']")[3].InnerText }; if (ActivityServices.SingleOrDefault(si => si.Address == serviceInfo.Address) == null) { ActivityServices.Add(serviceInfo); OnDiscoveryAddressAdded(new DiscoveryAddressAddedEventArgs(serviceInfo)); } } } _udpClient.BeginReceive(HandleRequest, _udpClient); }
/// <summary> /// Adds a discovered service to the service list and send a DiscoverAddressAdded event /// </summary> /// <param name="metaData">The meta data of the service</param> private void AddFoundServiceFromWSMetaData(EndpointDiscoveryMetadata metaData) { var sst = new ServiceInfo( Helpers.Xml.FromXElement<string>(metaData.Extensions[0]), Helpers.Xml.FromXElement<string>(metaData.Extensions[1]), Helpers.Xml.FromXElement<string>(metaData.Extensions[2]), Helpers.Xml.FromXElement<string>(metaData.Extensions[3])); ActivityServices.Add(sst); OnDiscoveryAddressAdded(new DiscoveryAddressAddedEventArgs(sst)); }
public DiscoveryAddressAddedEventArgs(ServiceInfo serviceInfo) { ServiceInfo = new ServiceInfo(); ServiceInfo = serviceInfo; }