Renamed *NetworkGraph* references to *Topology*.
Change-Id: Iec01c47086e1518592c0753e75395d3fe5abcde3
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyModule.java b/src/main/java/net/onrc/onos/core/topology/TopologyModule.java
new file mode 100644
index 0000000..657682f
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyModule.java
@@ -0,0 +1,95 @@
+package net.onrc.onos.core.topology;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import net.floodlightcontroller.core.module.FloodlightModuleContext;
+import net.floodlightcontroller.core.module.FloodlightModuleException;
+import net.floodlightcontroller.core.module.IFloodlightModule;
+import net.floodlightcontroller.core.module.IFloodlightService;
+import net.floodlightcontroller.restserver.IRestApiService;
+import net.onrc.onos.core.datagrid.IDatagridService;
+import net.onrc.onos.core.registry.IControllerRegistryService;
+import net.onrc.onos.core.topology.web.TopologyWebRoutable;
+
+public class TopologyModule implements IFloodlightModule, ITopologyService {
+
+ // This is initialized as a module for now
+
+ private TopologyManager topologyManager;
+ private IDatagridService datagridService;
+ private IControllerRegistryService registryService;
+
+ private CopyOnWriteArrayList<ITopologyListener> topologyListeners;
+
+ private IRestApiService restApi;
+
+ @Override
+ public Collection<Class<? extends IFloodlightService>> getModuleServices() {
+ List<Class<? extends IFloodlightService>> services =
+ new ArrayList<Class<? extends IFloodlightService>>();
+ services.add(ITopologyService.class);
+ return services;
+ }
+
+ @Override
+ public Map<Class<? extends IFloodlightService>, IFloodlightService>
+ getServiceImpls() {
+ Map<Class<? extends IFloodlightService>, IFloodlightService> impls =
+ new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
+ impls.put(ITopologyService.class, this);
+ return impls;
+ }
+
+ @Override
+ public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
+ List<Class<? extends IFloodlightService>> dependencies =
+ new ArrayList<Class<? extends IFloodlightService>>();
+ dependencies.add(IDatagridService.class);
+ dependencies.add(IRestApiService.class);
+ dependencies.add(IControllerRegistryService.class);
+ return dependencies;
+ }
+
+ @Override
+ public void init(FloodlightModuleContext context)
+ throws FloodlightModuleException {
+ restApi = context.getServiceImpl(IRestApiService.class);
+ datagridService = context.getServiceImpl(IDatagridService.class);
+ registryService = context.getServiceImpl(IControllerRegistryService.class);
+
+ topologyListeners = new CopyOnWriteArrayList<>();
+ topologyManager = new TopologyManager(registryService, topologyListeners);
+ }
+
+ @Override
+ public void startUp(FloodlightModuleContext context) {
+ restApi.addRestletRoutable(new TopologyWebRoutable());
+ topologyManager.startup(datagridService);
+ }
+
+ @Override
+ public Topology getTopology() {
+ return topologyManager.getTopology();
+ }
+
+ @Override
+ public TopologyDiscoveryInterface getTopologyDiscoveryInterface() {
+ return topologyManager;
+ }
+
+ @Override
+ public void registerTopologyListener(ITopologyListener listener) {
+ topologyListeners.addIfAbsent(listener);
+ }
+
+ @Override
+ public void deregisterTopologyListener(ITopologyListener listener) {
+ topologyListeners.remove(listener);
+ }
+
+}