blob: ec5e7e38dc73f769ab09a01f1b26507188c337ed [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;
13import net.floodlightcontroller.counter.ICounterStoreService;
Pavlin Radoslavov19b0e122013-02-21 18:47:38 -080014import net.floodlightcontroller.flowcache.IFlowService;
Umesh Krishnaswamyb56bb292013-02-12 20:28:27 -080015import net.floodlightcontroller.mastership.IMastershipService;
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;
20
21public class FloodlightProvider implements IFloodlightModule {
22 Controller controller;
23
24 @Override
25 public Collection<Class<? extends IFloodlightService>> getModuleServices() {
26 Collection<Class<? extends IFloodlightService>> services =
27 new ArrayList<Class<? extends IFloodlightService>>(1);
28 services.add(IFloodlightProviderService.class);
29 return services;
30 }
31
32 @Override
33 public Map<Class<? extends IFloodlightService>,
34 IFloodlightService> getServiceImpls() {
35 controller = new Controller();
36
37 Map<Class<? extends IFloodlightService>,
38 IFloodlightService> m =
39 new HashMap<Class<? extends IFloodlightService>,
40 IFloodlightService>();
41 m.put(IFloodlightProviderService.class, controller);
42 return m;
43 }
44
45 @Override
46 public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
47 Collection<Class<? extends IFloodlightService>> dependencies =
48 new ArrayList<Class<? extends IFloodlightService>>(4);
49 dependencies.add(IStorageSourceService.class);
50 dependencies.add(IPktInProcessingTimeService.class);
51 dependencies.add(IRestApiService.class);
52 dependencies.add(ICounterStoreService.class);
53 dependencies.add(IThreadPoolService.class);
Umesh Krishnaswamyb56bb292013-02-12 20:28:27 -080054 dependencies.add(IMastershipService.class);
Pavlin Radoslavov19b0e122013-02-21 18:47:38 -080055 dependencies.add(IFlowService.class);
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080056 return dependencies;
57 }
58
59 @Override
60 public void init(FloodlightModuleContext context) throws FloodlightModuleException {
61 controller.setStorageSourceService(
62 context.getServiceImpl(IStorageSourceService.class));
63 controller.setPktInProcessingService(
64 context.getServiceImpl(IPktInProcessingTimeService.class));
65 controller.setCounterStore(
66 context.getServiceImpl(ICounterStoreService.class));
67 controller.setRestApiService(
68 context.getServiceImpl(IRestApiService.class));
69 controller.setThreadPoolService(
70 context.getServiceImpl(IThreadPoolService.class));
Umesh Krishnaswamyb56bb292013-02-12 20:28:27 -080071 controller.setMastershipService(context.getServiceImpl(IMastershipService.class));
Pavlin Radoslavov19b0e122013-02-21 18:47:38 -080072 controller.setFlowService(context.getServiceImpl(IFlowService.class));
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080073 controller.init(context.getConfigParams(this));
74 }
75
76 @Override
77 public void startUp(FloodlightModuleContext context) {
78 controller.startupComponents();
79 }
80}