First version with monitoring.
[upnpmonitor] / monitor / src / main / java / org / wamblee / upnpmonitor / UpnpStack.java
diff --git a/monitor/src/main/java/org/wamblee/upnpmonitor/UpnpStack.java b/monitor/src/main/java/org/wamblee/upnpmonitor/UpnpStack.java
new file mode 100644 (file)
index 0000000..2940e37
--- /dev/null
@@ -0,0 +1,53 @@
+package org.wamblee.upnpmonitor;
+
+import org.teleal.cling.UpnpService;
+import org.teleal.cling.UpnpServiceImpl;
+import org.teleal.cling.controlpoint.ControlPoint;
+import org.teleal.cling.model.message.header.DeviceTypeHeader;
+import org.teleal.cling.model.meta.Device;
+import org.teleal.cling.model.types.DeviceType;
+import org.teleal.cling.registry.DefaultRegistryListener;
+import org.teleal.cling.registry.Registry;
+import org.teleal.cling.registry.RegistryListener;
+
+public class UpnpStack {
+
+    public static interface Listener {
+
+        void deviceAdded(String aDeviceString);
+
+        void deviceRemoved(String aDeviceString);
+    }
+
+    private UpnpService upnpService;
+    private ControlPoint controlPoint;
+    private DeviceType deviceType;
+
+    public UpnpStack(final Listener aListener) {
+        RegistryListener listener = new DefaultRegistryListener() {
+            @Override
+            public void deviceAdded(Registry aRegistry, Device aDevice) {
+                super.deviceAdded(aRegistry, aDevice);
+                aListener.deviceAdded(aDevice.getDisplayString());
+            }
+
+            @Override
+            public void deviceRemoved(Registry aRegistry, Device aDevice) {
+                super.deviceRemoved(aRegistry, aDevice);
+                aListener.deviceRemoved(aDevice.getDisplayString());
+            }
+        };
+        upnpService = new UpnpServiceImpl(listener);
+        controlPoint = upnpService.getControlPoint();
+        deviceType = new DeviceType("schemas-upnp-org", "MediaServer");
+
+    }
+
+    public void search() {
+        controlPoint.search(new DeviceTypeHeader(deviceType));
+    }
+
+    public void shutdown() {
+        upnpService.shutdown();
+    }
+}
\ No newline at end of file