Started to work on topology abstraction.
Added more unit tests.
Changed mastership application to be synchronous.
diff --git a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
index 2914673..29c119d 100644
--- a/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
+++ b/net/core/trivial/src/main/java/org/onlab/onos/net/trivial/impl/SimpleDeviceManager.java
@@ -27,11 +27,8 @@
import org.slf4j.Logger;
import java.util.List;
-import java.util.concurrent.ExecutorService;
import static com.google.common.base.Preconditions.checkNotNull;
-import static java.util.concurrent.Executors.newSingleThreadExecutor;
-import static org.onlab.util.Tools.namedThreads;
import static org.slf4j.LoggerFactory.getLogger;
/**
@@ -56,9 +53,6 @@
private final SimpleDeviceStore store = new SimpleDeviceStore();
- private final ExecutorService executor =
- newSingleThreadExecutor(namedThreads("onos-device-%d"));
-
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected EventDeliveryService eventDispatcher;
@@ -139,7 +133,7 @@
Device device = event.subject();
DeviceProvider provider = getProvider(device.providerId());
if (provider != null) {
- triggerRoleSelection(device, provider);
+ provider.roleChanged(device, newRole);
}
post(event);
}
@@ -168,11 +162,12 @@
log.info("Device {} connected", deviceId);
DeviceEvent event = store.createOrUpdateDevice(provider().id(),
deviceId, deviceDescription);
- post(event);
// If there was a change of any kind, trigger role selection process.
if (event != null) {
- triggerRoleSelection(event.subject(), provider());
+ Device device = event.subject();
+ provider().roleChanged(device, store.getRole(device.id()));
+ post(event);
}
}
@@ -210,22 +205,6 @@
}
}
- /**
- * Triggers asynchronous role selection.
- *
- * @param device device
- * @param provider device provider
- */
- private void triggerRoleSelection(final Device device,
- final DeviceProvider provider) {
- executor.execute(new Runnable() {
- @Override
- public void run() {
- provider.roleChanged(device, store.getRole(device.id()));
- }
- });
- }
-
// Posts the specified event to the local event dispatcher.
private void post(DeviceEvent event) {
if (event != null && eventDispatcher != null) {