protected internal virtual void CreateServer() { var b = new Mono.Ssdp.Client(); //var found = b.Browse(string.Format("upnp:{0}", Name)); var found = b.BrowseAll(); found.Client.ServiceAdded += HandleServiceAdded; found.Start(); _server = new Mono.Ssdp.Server(); _server.Announce(string.Format("upnp:{0}", Name), string.Format("uuid:RemoteMonitor-device:{0}", Name), Address.ToString()); }
public void AnnouncementTest() { using (var server = new Server(CreateRoot())) { using (var client = new Mono.Ssdp.Client()) { var announcements = new Dictionary <string, string> (); announcements.Add("upnp:rootdevice/uuid:d1::upnp:rootdevice", null); announcements.Add("uuid:d1/uuid:d1", null); announcements.Add("urn:schemas-upnp-org:device:mono-upnp-tests-device:1/uuid:d1::urn:schemas-upnp-org:device:mono-upnp-tests-device:1", null); announcements.Add("uuid:ed1/uuid:ed1", null); announcements.Add("urn:schemas-upnp-org:device:mono-upnp-tests-embedded-device:1/uuid:ed1::urn:schemas-upnp-org:device:mono-upnp-tests-embedded-device:1", null); announcements.Add("urn:schemas-upnp-org:service:mono-upnp-test-service:1/uuid:d1::urn:schemas-upnp-org:service:mono-upnp-test-service:1", null); announcements.Add("urn:schemas-upnp-org:service:mono-upnp-test-service:2/uuid:d1::urn:schemas-upnp-org:service:mono-upnp-test-service:2", null); announcements.Add("urn:schemas-upnp-org:service:mono-upnp-test-service:1/uuid:ed1::urn:schemas-upnp-org:service:mono-upnp-test-service:1", null); announcements.Add("urn:schemas-upnp-org:service:mono-upnp-test-service:2/uuid:ed1::urn:schemas-upnp-org:service:mono-upnp-test-service:2", null); client.ServiceAdded += (obj, args) => { lock (mutex) { Assert.AreEqual(ServiceOperation.Added, args.Operation); var announcement = string.Format("{0}/{1}", args.Service.ServiceType, args.Service.Usn); if (announcements.ContainsKey(announcement)) { announcements.Remove(announcement); } if (announcements.Count == 0) { Monitor.Pulse(mutex); } } }; client.BrowseAll(); lock (mutex) { server.Start(); if (!Monitor.Wait(mutex, TimeSpan.FromSeconds(30))) { Assert.Fail("The UPnP server announcement timed out."); } } } } }
public void BrowseAll() { client.BrowseAll(); }
public void AnnouncementTest () { using (var server = new Server (CreateRoot ())) { using (var client = new Mono.Ssdp.Client ()) { var announcements = new Dictionary<string,string> (); announcements.Add ("upnp:rootdevice/uuid:d1::upnp:rootdevice", null); announcements.Add ("uuid:d1/uuid:d1", null); announcements.Add ("urn:schemas-upnp-org:device:mono-upnp-tests-device:1/uuid:d1::urn:schemas-upnp-org:device:mono-upnp-tests-device:1", null); announcements.Add ("uuid:ed1/uuid:ed1", null); announcements.Add ("urn:schemas-upnp-org:device:mono-upnp-tests-embedded-device:1/uuid:ed1::urn:schemas-upnp-org:device:mono-upnp-tests-embedded-device:1", null); announcements.Add ("urn:schemas-upnp-org:service:mono-upnp-test-service:1/uuid:d1::urn:schemas-upnp-org:service:mono-upnp-test-service:1", null); announcements.Add ("urn:schemas-upnp-org:service:mono-upnp-test-service:2/uuid:d1::urn:schemas-upnp-org:service:mono-upnp-test-service:2", null); announcements.Add ("urn:schemas-upnp-org:service:mono-upnp-test-service:1/uuid:ed1::urn:schemas-upnp-org:service:mono-upnp-test-service:1", null); announcements.Add ("urn:schemas-upnp-org:service:mono-upnp-test-service:2/uuid:ed1::urn:schemas-upnp-org:service:mono-upnp-test-service:2", null); client.ServiceAdded += (obj, args) => { lock (mutex) { Assert.AreEqual (ServiceOperation.Added, args.Operation); var announcement = string.Format ("{0}/{1}", args.Service.ServiceType, args.Service.Usn); if (announcements.ContainsKey (announcement)) { announcements.Remove (announcement); } if (announcements.Count == 0) { Monitor.Pulse (mutex); } } }; client.BrowseAll (); lock (mutex) { server.Start (); if (!Monitor.Wait (mutex, TimeSpan.FromSeconds (30))) { Assert.Fail ("The UPnP server announcement timed out."); } } } } }