ss: Move selectNextChildren to CoreNode and return sequenceNumber
[deliverable/tracecompass.git] / statesystem / org.eclipse.tracecompass.statesystem.core / src / org / eclipse / tracecompass / internal / statesystem / core / backend / historytree / HistoryTreeBackend.java
index 2aaa1e390c6ed9e271ef8a9566daaac781f50a76..5e752deeb98b3d09ed35c390aa329a776c25517b 100644 (file)
@@ -22,8 +22,10 @@ import java.nio.channels.ClosedChannelException;
 import java.util.Deque;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.logging.Logger;
 
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.common.core.log.TraceCompassLog;
 import org.eclipse.tracecompass.internal.statesystem.core.Activator;
 import org.eclipse.tracecompass.statesystem.core.backend.IStateHistoryBackend;
 import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
@@ -42,6 +44,8 @@ import com.google.common.annotations.VisibleForTesting;
  */
 public class HistoryTreeBackend implements IStateHistoryBackend {
 
+    private static final Logger LOGGER = TraceCompassLog.getLogger(HistoryTreeBackend.class);
+
     private final @NonNull String fSsid;
 
     /**
@@ -251,6 +255,7 @@ public class HistoryTreeBackend implements IStateHistoryBackend {
     @Override
     public void dispose() {
         if (fFinishedBuilding) {
+            LOGGER.info(() -> "[HistoryTreeBackend:ClosingFile] size=" + getSHT().getFileSize());  //$NON-NLS-1$
             getSHT().closeFile();
         } else {
             /*
@@ -268,18 +273,19 @@ public class HistoryTreeBackend implements IStateHistoryBackend {
         checkValidTime(t);
 
         /* Queue is a stack of nodes containing nodes intersecting t */
-        Deque<HTNode> queue = new LinkedList<>();
+        Deque<Integer> queue = new LinkedList<>();
 
         /* We start by reading the information in the root node */
-        queue.add(getSHT().getRootNode());
+        queue.add(getSHT().getRootNode().getSequenceNumber());
 
         /* Then we follow the down in the relevant children */
         try {
             while (!queue.isEmpty()) {
-                HTNode currentNode = queue.pop();
+                int sequenceNumber = queue.pop();
+                HTNode currentNode = getSHT().readNode(sequenceNumber);
                 if (currentNode.getNodeType() == HTNode.NodeType.CORE) {
-                    /*Here we add the relevant children nodes for BFS*/
-                    queue.addAll(getSHT().selectNextChildren((ParentNode) currentNode, t));
+                    /* Here we add the relevant children nodes for BFS */
+                    queue.addAll(((ParentNode) currentNode).selectNextChildren(t));
                 }
                 currentNode.writeInfoFromNode(stateInfo, t);
             }
@@ -320,13 +326,15 @@ public class HistoryTreeBackend implements IStateHistoryBackend {
             throws TimeRangeException, ClosedChannelException {
         checkValidTime(t);
 
-        Deque<HTNode> queue = new LinkedList<>();
-        queue.add(getSHT().getRootNode());
+        Deque<Integer> queue = new LinkedList<>();
+        queue.add(getSHT().getRootNode().getSequenceNumber());
         HTInterval interval = null;
         while (interval == null && !queue.isEmpty()) {
-            HTNode currentNode = queue.pop();
+            int sequenceNumber = queue.pop();
+            HTNode currentNode = getSHT().readNode(sequenceNumber);
             if (currentNode.getNodeType() == HTNode.NodeType.CORE) {
-                queue.addAll(getSHT().selectNextChildren((ParentNode) currentNode, t));
+                /* Here we add the relevant children nodes for BFS */
+                queue.addAll(((ParentNode) currentNode).selectNextChildren(t));
             }
             interval = currentNode.getRelevantInterval(key, t);
         }
This page took 0.030303 seconds and 5 git commands to generate.