2940e379ea08541c490a0313d320379c182c6dde
[upnpmonitor] / monitor / src / main / java / org / wamblee / upnpmonitor / UpnpStack.java
1 package org.wamblee.upnpmonitor;
2
3 import org.teleal.cling.UpnpService;
4 import org.teleal.cling.UpnpServiceImpl;
5 import org.teleal.cling.controlpoint.ControlPoint;
6 import org.teleal.cling.model.message.header.DeviceTypeHeader;
7 import org.teleal.cling.model.meta.Device;
8 import org.teleal.cling.model.types.DeviceType;
9 import org.teleal.cling.registry.DefaultRegistryListener;
10 import org.teleal.cling.registry.Registry;
11 import org.teleal.cling.registry.RegistryListener;
12
13 public class UpnpStack {
14
15     public static interface Listener {
16
17         void deviceAdded(String aDeviceString);
18
19         void deviceRemoved(String aDeviceString);
20     }
21
22     private UpnpService upnpService;
23     private ControlPoint controlPoint;
24     private DeviceType deviceType;
25
26     public UpnpStack(final Listener aListener) {
27         RegistryListener listener = new DefaultRegistryListener() {
28             @Override
29             public void deviceAdded(Registry aRegistry, Device aDevice) {
30                 super.deviceAdded(aRegistry, aDevice);
31                 aListener.deviceAdded(aDevice.getDisplayString());
32             }
33
34             @Override
35             public void deviceRemoved(Registry aRegistry, Device aDevice) {
36                 super.deviceRemoved(aRegistry, aDevice);
37                 aListener.deviceRemoved(aDevice.getDisplayString());
38             }
39         };
40         upnpService = new UpnpServiceImpl(listener);
41         controlPoint = upnpService.getControlPoint();
42         deviceType = new DeviceType("schemas-upnp-org", "MediaServer");
43
44     }
45
46     public void search() {
47         controlPoint.search(new DeviceTypeHeader(deviceType));
48     }
49
50     public void shutdown() {
51         upnpService.shutdown();
52     }
53 }