blob: 43d743cd25c383e3f65ae6827d7c4a88b62342cf [file] [log] [blame]
tome4729872014-09-23 00:37:37 -07001package org.onlab.onos.cluster.impl;
2
3import org.apache.felix.scr.annotations.Activate;
4import org.apache.felix.scr.annotations.Component;
5import org.apache.felix.scr.annotations.Deactivate;
6import org.apache.felix.scr.annotations.Reference;
7import org.apache.felix.scr.annotations.ReferenceCardinality;
8import org.apache.felix.scr.annotations.Service;
9import org.onlab.onos.cluster.ClusterEvent;
10import org.onlab.onos.cluster.ClusterEventListener;
11import org.onlab.onos.cluster.ClusterService;
12import org.onlab.onos.cluster.ClusterStore;
13import org.onlab.onos.cluster.ControllerNode;
14import org.onlab.onos.cluster.NodeId;
15import org.onlab.onos.event.AbstractListenerRegistry;
16import org.onlab.onos.event.EventDeliveryService;
17import org.slf4j.Logger;
18
19import java.util.Set;
20
21import static com.google.common.base.Preconditions.checkNotNull;
22import static org.slf4j.LoggerFactory.getLogger;
23
24/**
25 * Implementation of the cluster service.
26 */
27@Component(immediate = true)
28@Service
29public class ClusterManager implements ClusterService {
30
31 public static final String INSTANCE_ID_NULL = "Instance ID cannot be null";
32 private final Logger log = getLogger(getClass());
33
34 protected final AbstractListenerRegistry<ClusterEvent, ClusterEventListener>
35 listenerRegistry = new AbstractListenerRegistry<>();
36
37 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
38 protected ClusterStore store;
39
40 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
41 protected EventDeliveryService eventDispatcher;
42
43 @Activate
44 public void activate() {
45 eventDispatcher.addSink(ClusterEvent.class, listenerRegistry);
46 log.info("Started");
47 }
48
49 @Deactivate
50 public void deactivate() {
51 eventDispatcher.removeSink(ClusterEvent.class);
52 log.info("Stopped");
53 }
54
55 @Override
56 public ControllerNode getLocalNode() {
57 return store.getLocalNode();
58 }
59
60 @Override
61 public Set<ControllerNode> getNodes() {
62 return store.getNodes();
63 }
64
65 @Override
66 public ControllerNode getNode(NodeId nodeId) {
67 checkNotNull(nodeId, INSTANCE_ID_NULL);
68 return store.getNode(nodeId);
69 }
70
71 @Override
72 public ControllerNode.State getState(NodeId nodeId) {
73 checkNotNull(nodeId, INSTANCE_ID_NULL);
74 return store.getState(nodeId);
75 }
76
77 @Override
78 public void addListener(ClusterEventListener listener) {
79 listenerRegistry.addListener(listener);
80 }
81
82 @Override
83 public void removeListener(ClusterEventListener listener) {
84 listenerRegistry.removeListener(listener);
85 }
86}