blob: a59a9f9ac1ede86dfd25401f1f413098c73e4de2 [file] [log] [blame]
Brian O'Connor8c166a72013-11-14 18:41:48 -08001package net.onrc.onos.ofcontroller.flowprogrammer;
2
3import java.util.ArrayList;
4import java.util.Collection;
5import java.util.HashMap;
6import java.util.Map;
7import net.floodlightcontroller.core.IFloodlightProviderService;
8import net.floodlightcontroller.core.module.FloodlightModuleContext;
9import net.floodlightcontroller.core.module.FloodlightModuleException;
10import net.floodlightcontroller.core.module.IFloodlightModule;
11import net.floodlightcontroller.core.module.IFloodlightService;
12
13public class FlowProgrammer implements IFloodlightModule {
Naoki Shiota8739faa2013-11-18 17:00:25 -080014 private static final boolean enableFlowSync = false;
15
Brian O'Connor8c166a72013-11-14 18:41:48 -080016 protected volatile IFloodlightProviderService floodlightProvider;
17
18 protected FlowPusher pusher;
19 private static final int NUM_PUSHER_THREAD = 1;
20
21 protected FlowSynchronizer synchronizer;
22
23 public FlowProgrammer() {
24 pusher = new FlowPusher(NUM_PUSHER_THREAD);
Naoki Shiota8739faa2013-11-18 17:00:25 -080025 if (enableFlowSync) {
Brian O'Connor8c166a72013-11-14 18:41:48 -080026 synchronizer = new FlowSynchronizer();
Naoki Shiota8739faa2013-11-18 17:00:25 -080027 }
Brian O'Connor8c166a72013-11-14 18:41:48 -080028 }
29
30 @Override
31 public void init(FloodlightModuleContext context)
32 throws FloodlightModuleException {
33 floodlightProvider = context.getServiceImpl(IFloodlightProviderService.class);
34 pusher.init(null, floodlightProvider.getOFMessageFactory(), null);
Naoki Shiota8739faa2013-11-18 17:00:25 -080035 if (enableFlowSync) {
Brian O'Connor8c166a72013-11-14 18:41:48 -080036 synchronizer.init(context);
Naoki Shiota8739faa2013-11-18 17:00:25 -080037 }
Brian O'Connor8c166a72013-11-14 18:41:48 -080038 }
39
40 @Override
41 public void startUp(FloodlightModuleContext context) {
42 pusher.start();
Naoki Shiota8739faa2013-11-18 17:00:25 -080043 if (enableFlowSync) {
Brian O'Connor8c166a72013-11-14 18:41:48 -080044 synchronizer.startUp(context);
Naoki Shiota8739faa2013-11-18 17:00:25 -080045 }
Brian O'Connor8c166a72013-11-14 18:41:48 -080046 }
47
48 @Override
49 public Collection<Class<? extends IFloodlightService>> getModuleServices() {
50 Collection<Class<? extends IFloodlightService>> l =
51 new ArrayList<Class<? extends IFloodlightService>>();
52 l.add(IFlowPusherService.class);
Naoki Shiota8739faa2013-11-18 17:00:25 -080053 if (enableFlowSync) {
Brian O'Connor8c166a72013-11-14 18:41:48 -080054 l.add(IFlowSyncService.class);
Naoki Shiota8739faa2013-11-18 17:00:25 -080055 }
Brian O'Connor8c166a72013-11-14 18:41:48 -080056 return l;
57 }
58
59 @Override
60 public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
61 Map<Class<? extends IFloodlightService>,
62 IFloodlightService> m =
63 new HashMap<Class<? extends IFloodlightService>,
64 IFloodlightService>();
65 m.put(IFlowPusherService.class, pusher);
Naoki Shiota8739faa2013-11-18 17:00:25 -080066 if (enableFlowSync) {
67 m.put(IFlowSyncService.class, synchronizer);
68 }
Brian O'Connor8c166a72013-11-14 18:41:48 -080069 return m;
70 }
71
72 @Override
73 public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
74 Collection<Class<? extends IFloodlightService>> l =
75 new ArrayList<Class<? extends IFloodlightService>>();
76 l.add(IFloodlightProviderService.class);
77 return l;
78 }
79
80
81}