blob: cd159275402e08a5b77e171fa2a5abdf477fb746 [file] [log] [blame]
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -08001package net.floodlightcontroller.core;
2
3import java.util.ArrayList;
4import java.util.Collection;
5import java.util.HashMap;
6import java.util.Map;
7
8import net.floodlightcontroller.core.internal.Controller;
9import net.floodlightcontroller.core.module.FloodlightModuleContext;
10import net.floodlightcontroller.core.module.FloodlightModuleException;
11import net.floodlightcontroller.core.module.IFloodlightModule;
12import net.floodlightcontroller.core.module.IFloodlightService;
Pavlin Radoslavovd7d8b792013-02-22 10:24:38 -080013import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080014import net.floodlightcontroller.counter.ICounterStoreService;
Pavlin Radoslavov19b0e122013-02-21 18:47:38 -080015import net.floodlightcontroller.flowcache.IFlowService;
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080016import net.floodlightcontroller.perfmon.IPktInProcessingTimeService;
17import net.floodlightcontroller.restserver.IRestApiService;
18import net.floodlightcontroller.storage.IStorageSourceService;
19import net.floodlightcontroller.threadpool.IThreadPoolService;
Jonathan Hartd82f20d2013-02-21 18:04:24 -080020import net.onrc.onos.registry.controller.IControllerRegistryService;
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080021
22public class FloodlightProvider implements IFloodlightModule {
23 Controller controller;
24
25 @Override
26 public Collection<Class<? extends IFloodlightService>> getModuleServices() {
27 Collection<Class<? extends IFloodlightService>> services =
28 new ArrayList<Class<? extends IFloodlightService>>(1);
29 services.add(IFloodlightProviderService.class);
30 return services;
31 }
32
33 @Override
34 public Map<Class<? extends IFloodlightService>,
35 IFloodlightService> getServiceImpls() {
36 controller = new Controller();
37
38 Map<Class<? extends IFloodlightService>,
39 IFloodlightService> m =
40 new HashMap<Class<? extends IFloodlightService>,
41 IFloodlightService>();
42 m.put(IFloodlightProviderService.class, controller);
43 return m;
44 }
45
46 @Override
47 public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
48 Collection<Class<? extends IFloodlightService>> dependencies =
49 new ArrayList<Class<? extends IFloodlightService>>(4);
50 dependencies.add(IStorageSourceService.class);
51 dependencies.add(IPktInProcessingTimeService.class);
52 dependencies.add(IRestApiService.class);
53 dependencies.add(ICounterStoreService.class);
54 dependencies.add(IThreadPoolService.class);
Pavlin Radoslavov19b0e122013-02-21 18:47:38 -080055 dependencies.add(IFlowService.class);
Pavlin Radoslavovd7d8b792013-02-22 10:24:38 -080056 dependencies.add(ITopoRouteService.class);
Jonathan Hartd82f20d2013-02-21 18:04:24 -080057 dependencies.add(IControllerRegistryService.class);
Jonathan Hartc2e95ee2013-02-22 15:25:11 -080058
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080059 return dependencies;
60 }
61
62 @Override
63 public void init(FloodlightModuleContext context) throws FloodlightModuleException {
64 controller.setStorageSourceService(
65 context.getServiceImpl(IStorageSourceService.class));
66 controller.setPktInProcessingService(
67 context.getServiceImpl(IPktInProcessingTimeService.class));
68 controller.setCounterStore(
69 context.getServiceImpl(ICounterStoreService.class));
70 controller.setRestApiService(
71 context.getServiceImpl(IRestApiService.class));
72 controller.setThreadPoolService(
73 context.getServiceImpl(IThreadPoolService.class));
Pavlin Radoslavov19b0e122013-02-21 18:47:38 -080074 controller.setFlowService(context.getServiceImpl(IFlowService.class));
Pavlin Radoslavovd7d8b792013-02-22 10:24:38 -080075 controller.setTopoRouteService(context.getServiceImpl(ITopoRouteService.class));
Jonathan Hartc2e95ee2013-02-22 15:25:11 -080076 controller.setMastershipService(
77 context.getServiceImpl(IControllerRegistryService.class));
78
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080079 controller.init(context.getConfigParams(this));
80 }
81
82 @Override
83 public void startUp(FloodlightModuleContext context) {
84 controller.startupComponents();
85 }
86}