/// <summary> /// Callback for when a device is added. /// </summary> private void OnServiceAdded(object sender, ServiceAnnouncementEventArgs e) { if (e == null || e.Announcement == null || e.Announcement.Addresses == null || e.Announcement.Txt == null || discoveredDevices == null) { return; } var discoveredDevice = new DiscoveredDevice { IPAddress = e.Announcement.Addresses[0].ToString(), Protocol = e.Announcement.Type, Port = e.Announcement.Port, Name = e.Announcement.Txt.Where(x => x.ToString().StartsWith("fn=")).FirstOrDefault()?.Replace("fn=", ""), Headers = JsonConvert.SerializeObject(e.Announcement.Txt), Usn = e.Announcement.Hostname, Id = e.Announcement.Txt.Where(x => x.ToString().StartsWith("id=")).FirstOrDefault()?.Replace("id=", ""), }; if (discoveredDevice.Name != null && discoveredDevice.Usn != null && discoveredDevice.Headers != null && (discoveredDevice.Protocol.IndexOf(serviceType) >= 0 || discoveredDevice.Protocol.IndexOf(serviceTypeEmbedded) >= 0)) { discoveredDevices.Add(discoveredDevice); } }
private void OnServiceAdded(object sender, ServiceAnnouncementEventArgs e) { ServiceAddedSemaphoreSlim.Wait(); try { var txtValues = e.Announcement.Txt .Select(i => i.Split('=')) .ToDictionary(y => y[0], y => y[1]); if (!txtValues.ContainsKey("fn")) { return; } var ip = e.Announcement.Addresses[0]; Uri.TryCreate("https://" + ip, UriKind.Absolute, out Uri myUri); var chromecast = new ChromecastReceiver { DeviceUri = myUri, Name = txtValues["fn"], Model = txtValues["md"], Version = txtValues["ve"], ExtraInformation = txtValues, Status = txtValues["rs"], Port = e.Announcement.Port }; ChromecastReceivedFound?.Invoke(this, chromecast); DiscoveredDevices.Add(chromecast); } finally { ServiceAddedSemaphoreSlim.Release(); } }
private void onServiceAdded(object sender, ServiceAnnouncementEventArgs e) { ServiceAnnouncement service = e.Announcement; mDNSObject mDNS = new mDNSObject(); mDNS.Type = (service.Type == "_https._tcp") ? "https" : "http"; mDNS.Name = service.Instance; foreach (string txt in service.Txt) { if (txt.Contains("uuid")) { mDNS.Txt = txt; } } foreach (IPAddress ipaddr in service.Addresses) { if (ipaddr.AddressFamily.ToString() == ProtocolFamily.InterNetwork.ToString()) // IPv4 { mDNS.Address = ipaddr.ToString(); } } if (mDNS.Address == "") { return; } mDNS.Port = service.Port; services.Add(mDNS); cboxDevice.Items.Add(mDNS.Name); }
private void OnServiceAdded(object sender, ServiceAnnouncementEventArgs e) { var detectedVent = new Ventilator { IP = e.Announcement.Addresses.First().ToString(), }; foreach (var txt in e.Announcement.Txt) { var split = txt.Split('='); var id = split[0]; if (id == "fn") { detectedVent.Name = split[1]; } } bool found = false; foreach (var disc in FoundVentilators) { if (disc.IP == detectedVent.IP) { found = true; break; } } if (!found) { FoundVentilators.Add(detectedVent); } }
private void onServiceAdded(object sender, ServiceAnnouncementEventArgs e) { // ignore other services if (e.Announcement.Instance != this.serviceName) { return; } // debug debugAnnouncement("Service added:", e.Announcement); // create entry var dev = new Device() { Addresses = e.Announcement.Addresses, Port = e.Announcement.Port, }; // build device info foreach (var txt in e.Announcement.Txt) { var tokens = txt.Split('='); if (tokens.Length == 2) { switch (tokens[0]) { case "hwid": dev.UniqueID = tokens[1].Replace(" ", "").ToUpper(); break; case "type": dev.ConsoleType = tokens[1]; break; case "region": dev.ConsoleRegion = tokens[1]; break; } } } // check to avoid adding duplicate devices foreach (var a in Available) { if (dev.Addresses.SequenceEqual(e.Announcement.Addresses)) { Trace.WriteLine("Duplicate announce for addresses: " + string.Join(", ", e.Announcement.Addresses)); return; } if (dev.UniqueID == a.UniqueID) { Trace.WriteLine("Duplicate announce for same device: " + a.UniqueID); return; } } Available.Add(dev); }
void OnService(object sender, ServiceAnnouncementEventArgs e) { string hostName = e.Announcement.Hostname + ".local"; if (_tcss.TryGetValue(hostName, out TaskCompletionSource <string> tcs)) { tcs.SetResult("http://" + e.Announcement.Addresses.First()); } }
private void onServiceChanged(object sender, ServiceAnnouncementEventArgs e) { // silently ignore other services if (e.Announcement.Instance != this.serviceName) { return; } debugAnnouncement("A service changed:", e.Announcement); }
private void OnServiceRemoved(object sender, ServiceAnnouncementEventArgs e) { var deviceInfo = FindDeviceInfo(e.Announcement.Hostname); if (deviceInfo != null) { DeviceInfos.Remove(deviceInfo.DeviceReport.DeviceName); } }
void OnServiceChanged(object sender, ServiceAnnouncementEventArgs e) { var item = _serviceList.FirstOrDefault(i => i.Hostname == e.Announcement.Hostname); if (item != null) { item = e.Announcement; } printService('~', e.Announcement); }
private void OnServiceAdded(object sender, ServiceAnnouncementEventArgs e) { var addresses = MulticastService.GetIPAddresses() .Where(ip => ip.AddressFamily == AddressFamily.InterNetwork); if (!addresses.Contains(e.Announcement.Addresses?[0])) // Not a query from a local IP address { logger.Log($"Service added: {e.Announcement.Addresses?[0]} {e.Announcement.Txt.Where(x => x.StartsWith("fn=")).FirstOrDefault()?.ToString().Replace("fn=", "")} - {e.Announcement.Instance} {e.Announcement.Type}"); } }
private void MDnsDiscovery_ServiceAdded(object sender, ServiceAnnouncementEventArgs e) { if (CancelSsdpDiscoveryOnMDns) { ssdpCancellation.Cancel(); } var report = ParseServiceAnnouncement(e.Announcement); Trace.WriteLine(report); OnDeviceDiscovered(new DeviceDiscoveryEventArgs(report)); }
private void onServiceAdded(object sender, ServiceAnnouncementEventArgs e) { if (!UserSettings.HasSettings() || !UserSettings.Settings.Devices.Any(d => d.IPAddress.Equals(e.Announcement.Addresses.First().ToString()))) { //Only add devices that not have been added before _logger.Info($"Discovered following device: {e.Announcement.Hostname}, IPs: {e.Announcement.Addresses}, Port: {e.Announcement.Port}"); discoveredDevices.Add(new Device { Name = e.Announcement.Hostname, IPAddress = e.Announcement.Addresses.First().ToString(), Port = e.Announcement.Port }); } BuildDeviceList(); }
private void onServiceRemoved(object sender, ServiceAnnouncementEventArgs e) { ServiceAnnouncement service = e.Announcement; mDNSObject mDNS = new mDNSObject(); mDNS = services.Find(x => x.Name == service.Instance); services.Remove(mDNS); cboxDevice.Items.Clear(); foreach (mDNSObject mdns in services) { cboxDevice.Items.Add(mdns.Name); } }
private void OnServiceAdded(object sender, ServiceAnnouncementEventArgs e) { var serviceAgent = new ServiceAgent() { Hostname = e.Announcement.Hostname, Ip = e.Announcement.Addresses[0], Port = e.Announcement.Port }; ServiceAgents.Add(serviceAgent); AgentAddedEvent?.Invoke(serviceAgent); printService('+', e.Announcement); }
private async void OnServiceAdded(object sender, ServiceAnnouncementEventArgs e) { WLEDDevice toAdd = new WLEDDevice(); foreach (var addr in e.Announcement.Addresses) { toAdd.NetworkAddress = addr.ToString(); break; //only get first address } toAdd.Name = e.Announcement.Hostname; toAdd.NameIsCustom = false; if (await toAdd.Refresh()) //check if the service is a valid WLED light { OnValidDeviceFound(new DeviceCreatedEventArgs(toAdd, false)); } }
private void OnServiceRemoved(object sender, ServiceAnnouncementEventArgs e) { IPAddress id = e.Announcement.Addresses.First(); Ventilator toRemove = null; foreach (var disc in FoundVentilators) { if (IPAddress.Parse(disc.IP) == id) { toRemove = disc; break; } } if (toRemove != null) { FoundVentilators.Remove(toRemove); } }
private void OnServiceAdded(object sender, ServiceAnnouncementEventArgs e) { var serviceAgent = new ServiceAgent() { Hostname = e.Announcement.Hostname, Ip = e.Announcement.Addresses[0], Port = e.Announcement.Port }; if (BuildDeviceReport(serviceAgent, out var report, out var descriptorMessage)) { DeviceInfos.Add(e.Announcement.Hostname, new DeviceInfo() { ServiceAgent = serviceAgent, DeviceReport = report, DescriptorMessage = descriptorMessage }); } }
private void onServiceRemoved(object sender, ServiceAnnouncementEventArgs e) { // silently ignore other services if (e.Announcement.Instance != this.serviceName) { return; } debugAnnouncement("A service was removed:", e.Announcement); foreach (var a in Available) { if (a.Addresses.SequenceEqual(e.Announcement.Addresses)) { Available.Remove(a); return; } } Trace.WriteLine("Service had not been detected before. Hmmm..."); }
private void OnServiceAdded(object sender, ServiceAnnouncementEventArgs e) { var discoveredDevice = new DiscoveredDevice { IPAddress = e.Announcement.Addresses[0].ToString(), Protocol = e.Announcement.Type, Port = e.Announcement.Port, Name = e.Announcement.Txt.Where(x => x.ToString().StartsWith("fn=")).FirstOrDefault()?.Replace("fn=", ""), Headers = JsonConvert.SerializeObject(e.Announcement.Txt), Usn = e.Announcement.Hostname }; if (discoveredDevice.Name != null && discoveredDevice.Usn != null && discoveredDevice.Headers != null && (discoveredDevice.Protocol.IndexOf("_googlecast._tcp") >= 0 || discoveredDevice.Protocol.IndexOf("_googlezone._tcp") >= 0)) { discoveredDevices.Add(discoveredDevice); } }
/// <summary> /// Callback for when a device is removed. /// </summary> private void OnServiceRemoved(object sender, ServiceAnnouncementEventArgs e) { //TODO }
void OnServiceRemoved(object sender, ServiceAnnouncementEventArgs e) { if (_serviceList.Contains(e.Announcement)) _serviceList.Remove(e.Announcement); printService('-', e.Announcement); }
private void ServiceBrowser_ServiceAdded(object sender, ServiceAnnouncementEventArgs e) { var id = Thread.CurrentThread.ManagedThreadId; _serviceAnnouncement = e.Announcement; }
void OnServiceAdded(object sender, ServiceAnnouncementEventArgs e) { if (!_serviceList.Contains(e.Announcement)) _serviceList.Add(e.Announcement); printService('+', e.Announcement); }
static void onServiceAdded(object sender, ServiceAnnouncementEventArgs e) { printService(e.Announcement); }
private void OnServiceChanged(object sender, ServiceAnnouncementEventArgs e) { }
private void MDnsDiscovery_ServiceChanged(object sender, ServiceAnnouncementEventArgs e) { Trace.WriteLine("Service changed."); }
static void onServiceAdded(object sender, ServiceAnnouncementEventArgs e) { addService(e.Announcement); }
static void onServiceRemoved(object sender, ServiceAnnouncementEventArgs e) { }
void onServiceRemoved(object sender, ServiceAnnouncementEventArgs e) { printService('-', e.Announcement); }
private void OnServiceAdded(object o, ServiceAnnouncementEventArgs e) { nanoleafFound.Add(e.Announcement.Addresses[0].ToString() + ":" + e.Announcement.Port); }
private void BrowserOnServiceAdded(object sender, ServiceAnnouncementEventArgs serviceAnnouncementEventArgs) { cbNode.Items.Add(serviceAnnouncementEventArgs.Announcement.Hostname); }
void onServiceChanged(object sender, ServiceAnnouncementEventArgs e) { printService('~', e.Announcement); }
static void onServiceAdded(object sender, ServiceAnnouncementEventArgs e) { printService('+', e.Announcement); }
private void OnServiceRemoved(object sender, ServiceAnnouncementEventArgs e) { printService('+', e.Announcement); }