blob: 923cb48d2b0b06a3a43246c316c0d781dca706dd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2016 Orange.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*******************************************************************************/
package org.eclipse.om2m.sdt.home.lifx.impl;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.om2m.sdt.home.lifx.LIFXDevice;
import org.eclipse.om2m.sdt.home.lifx.LIFXDiscoveredDeviceListener;
public abstract class Discovery {
protected final List<LIFXDiscoveredDeviceListener> listeners;
public Discovery() {
listeners = new ArrayList<>();
}
public abstract void startDiscoveryTask();
public abstract void stopDiscoveryTask();
public void addDiscoveredDeviceListener(LIFXDiscoveredDeviceListener listener) {
synchronized (listeners) {
listeners.add(listener);
}
}
public void removeDiscoveredDeviceListener(LIFXDiscoveredDeviceListener listener) {
synchronized (listeners) {
listeners.remove(listener);
}
}
public void notifyAllListeners_DeviceArrived(LIFXDevice device) {
Logger.getInstance().info(Discovery.class, "notifyAllListeners_DeviceArrived(device= " + device.toString() + ")");
// notify
List<LIFXDiscoveredDeviceListener> toBeNotified = new ArrayList<>();
synchronized (listeners) {
toBeNotified.addAll(listeners);
}
for (LIFXDiscoveredDeviceListener listener : toBeNotified) {
listener.notifyDeviceArrived(device);
}
}
public void notifyAllListeners_DeviceLeft(LIFXDevice device) {
Logger.getInstance().info(Discovery.class, "notifyAllListeners_DeviceLeft(device= " + device.toString() + ")");
// notify
List<LIFXDiscoveredDeviceListener> toBeNotified = new ArrayList<>();
synchronized (listeners) {
toBeNotified.addAll(listeners);
}
for (LIFXDiscoveredDeviceListener listener : toBeNotified) {
listener.notifyDeviceLeft(device);
}
}
}