blob: 5c847b75c9e4eeeb176cf40ad65c9a4481cb4f27 [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 Krishnaswamyb56bb292013-02-12 20:28:27 -080016import net.floodlightcontroller.mastership.IMastershipService;
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080017import net.floodlightcontroller.perfmon.IPktInProcessingTimeService;
18import net.floodlightcontroller.restserver.IRestApiService;
19import net.floodlightcontroller.storage.IStorageSourceService;
20import net.floodlightcontroller.threadpool.IThreadPoolService;
21
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);
Umesh Krishnaswamyb56bb292013-02-12 20:28:27 -080055 dependencies.add(IMastershipService.class);
Pavlin Radoslavov19b0e122013-02-21 18:47:38 -080056 dependencies.add(IFlowService.class);
Pavlin Radoslavovd7d8b792013-02-22 10:24:38 -080057 dependencies.add(ITopoRouteService.class);
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080058 return dependencies;
59 }
60
61 @Override
62 public void init(FloodlightModuleContext context) throws FloodlightModuleException {
63 controller.setStorageSourceService(
64 context.getServiceImpl(IStorageSourceService.class));
65 controller.setPktInProcessingService(
66 context.getServiceImpl(IPktInProcessingTimeService.class));
67 controller.setCounterStore(
68 context.getServiceImpl(ICounterStoreService.class));
69 controller.setRestApiService(
70 context.getServiceImpl(IRestApiService.class));
71 controller.setThreadPoolService(
72 context.getServiceImpl(IThreadPoolService.class));
Umesh Krishnaswamyb56bb292013-02-12 20:28:27 -080073 controller.setMastershipService(context.getServiceImpl(IMastershipService.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));
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080076 controller.init(context.getConfigParams(this));
77 }
78
79 @Override
80 public void startUp(FloodlightModuleContext context) {
81 controller.startupComponents();
82 }
83}