Refactored code in an attempt to break dependency cycles
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/impl/ClusterCommunicationManager.java b/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/impl/ClusterCommunicationManager.java
index c72fae8..0e6b1b8 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/impl/ClusterCommunicationManager.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/cluster/messaging/impl/ClusterCommunicationManager.java
@@ -4,8 +4,6 @@
import java.io.IOException;
import java.util.Set;
-import java.util.Timer;
-import java.util.TimerTask;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
@@ -16,10 +14,6 @@
import org.onlab.onos.cluster.ClusterService;
import org.onlab.onos.cluster.ControllerNode;
import org.onlab.onos.cluster.NodeId;
-import org.onlab.onos.store.cluster.impl.ClusterMembershipEvent;
-import org.onlab.onos.store.cluster.impl.ClusterMembershipEventType;
-import org.onlab.onos.store.cluster.impl.ClusterNodesDelegate;
-import org.onlab.onos.store.cluster.messaging.ClusterCommunicationAdminService;
import org.onlab.onos.store.cluster.messaging.ClusterCommunicationService;
import org.onlab.onos.store.cluster.messaging.ClusterMessage;
import org.onlab.onos.store.cluster.messaging.ClusterMessageHandler;
@@ -38,7 +32,7 @@
@Component(immediate = true)
@Service
public class ClusterCommunicationManager
- implements ClusterCommunicationService, ClusterCommunicationAdminService {
+ implements ClusterCommunicationService {
private final Logger log = LoggerFactory.getLogger(getClass());
@@ -47,10 +41,6 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
private ClusterService clusterService;
- private ClusterNodesDelegate nodesDelegate;
- private final Timer timer = new Timer("onos-controller-heatbeats");
- public static final long HEART_BEAT_INTERVAL_MILLIS = 1000L;
-
// TODO: This probably should not be a OSGi service.
private MessagingService messagingService;
@@ -60,7 +50,6 @@
serializerPool = KryoPool.newBuilder()
.register(KryoPoolUtil.API)
.register(ClusterMessage.class, new ClusterMessageSerializer())
- .register(ClusterMembershipEvent.class)
.register(byte[].class)
.register(MessageSubject.class, new MessageSubjectSerializer())
.build()
@@ -134,61 +123,6 @@
messagingService.registerHandler(subject.value(), new InternalClusterMessageHandler(subscriber));
}
- @Override
- public void initialize(ControllerNode localNode,
- ClusterNodesDelegate delegate) {
- this.localNode = localNode;
- this.nodesDelegate = delegate;
- this.addSubscriber(new MessageSubject("CLUSTER_MEMBERSHIP_EVENT"), new ClusterMemebershipEventHandler());
- timer.schedule(new KeepAlive(), 0, HEART_BEAT_INTERVAL_MILLIS);
- }
-
- @Override
- public void addNode(ControllerNode node) {
- //members.put(node.id(), node);
- }
-
- @Override
- public void removeNode(ControllerNode node) {
- broadcast(new ClusterMessage(
- localNode.id(),
- new MessageSubject("CLUSTER_MEMBERSHIP_EVENT"),
- SERIALIZER.encode(new ClusterMembershipEvent(ClusterMembershipEventType.LEAVING_MEMBER, node))));
- //members.remove(node.id());
- }
-
- // Sends a heart beat to all peers.
- private class KeepAlive extends TimerTask {
-
- @Override
- public void run() {
- broadcast(new ClusterMessage(
- localNode.id(),
- new MessageSubject("CLUSTER_MEMBERSHIP_EVENT"),
- SERIALIZER.encode(new ClusterMembershipEvent(ClusterMembershipEventType.HEART_BEAT, localNode))));
- }
- }
-
- private class ClusterMemebershipEventHandler implements ClusterMessageHandler {
-
- @Override
- public void handle(ClusterMessage message) {
-
- ClusterMembershipEvent event = SERIALIZER.decode(message.payload());
- ControllerNode node = event.node();
- if (event.type() == ClusterMembershipEventType.HEART_BEAT) {
- log.info("Node {} sent a hearbeat", node.id());
- nodesDelegate.nodeDetected(node.id(), node.ip(), node.tcpPort());
- } else if (event.type() == ClusterMembershipEventType.LEAVING_MEMBER) {
- log.info("Node {} is leaving", node.id());
- nodesDelegate.nodeRemoved(node.id());
- } else if (event.type() == ClusterMembershipEventType.UNREACHABLE_MEMBER) {
- log.info("Node {} is unreachable", node.id());
- nodesDelegate.nodeVanished(node.id());
- }
- }
- }
-
private final class InternalClusterMessageHandler implements MessageHandler {
private final ClusterMessageHandler handler;
@@ -208,4 +142,4 @@
}
}
}
-}
+}
\ No newline at end of file