]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.db/src/org/simantics/scl/db/SCLFunctions.java
Query control functions into Simantics/DB
[simantics/platform.git] / bundles / org.simantics.scl.db / src / org / simantics / scl / db / SCLFunctions.java
index aae7a89a26da69df9dc3e40360729ec673b754ed..618d6a91fbe793e5d982656f19a063f49e297627 100644 (file)
@@ -21,6 +21,7 @@ import org.simantics.db.layer0.util.Layer0Utils;
 import org.simantics.db.layer0.variable.Variables;
 import org.simantics.db.request.Read;
 import org.simantics.db.service.ClusterControl;
+import org.simantics.db.service.QueryControl;
 import org.simantics.db.service.SerialisationSupport;
 import org.simantics.db.service.VirtualGraphSupport;
 import org.simantics.layer0.utils.triggers.IActivationManager;
@@ -327,4 +328,25 @@ public class SCLFunctions {
         return value;
     }
 
+    public static void restrictQueries(ReadGraph graph, int amount, int step, int maxTimeInMs) {
+
+               QueryControl qc = graph.getService(QueryControl.class);
+               long start = System.currentTimeMillis();
+               while(true) {
+                       int current = qc.count();
+                       if(current < amount) return;
+                       qc.gc(graph, step);
+                       long duration = System.currentTimeMillis() - start;
+                       if(duration > maxTimeInMs) return;
+               }
+
+    }
+
+    public static int countQueries(ReadGraph graph) {
+
+               QueryControl qc = graph.getService(QueryControl.class);
+               return qc.count();
+
+    }
+    
 }