]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.procore/src/fi/vtt/simantics/procore/internal/ClusterControlImpl.java
Merge commit 'bd5bc6e45f700e755b61bd112631796631330ecb'
[simantics/platform.git] / bundles / org.simantics.db.procore / src / fi / vtt / simantics / procore / internal / ClusterControlImpl.java
1 package fi.vtt.simantics.procore.internal;\r
2 \r
3 import java.util.HashSet;\r
4 import java.util.Set;\r
5 \r
6 import org.simantics.db.ReadGraph;\r
7 import org.simantics.db.service.ClusterCollectorPolicy;\r
8 import org.simantics.db.service.ClusterCollectorPolicy.CollectorCluster;\r
9 import org.simantics.db.service.ClusterControl;\r
10 \r
11 public class ClusterControlImpl implements ClusterControl {\r
12 \r
13         final private SessionImplSocket session;\r
14         \r
15         ClusterControlImpl(SessionImplSocket session) {\r
16                 this.session = session;\r
17         }\r
18         \r
19         @Override\r
20         public ClusterCollectorPolicy setPolicy(ClusterCollectorPolicy newPolicy) {\r
21                 return session.clusterTable.collector.setPolicy(newPolicy);\r
22         }\r
23         \r
24     @Override\r
25     public int flushClusters() {\r
26         session.clusterTable.gc();\r
27         System.gc();\r
28         System.gc();\r
29         return session.clusterTable.size();\r
30     }\r
31 \r
32 \r
33     @Override\r
34     public int collectClusters(int desiredBytes) {\r
35         session.clusterTable.collector.collect(desiredBytes);\r
36         return 0;\r
37     }\r
38 \r
39     @Override\r
40     public int gc(ReadGraph graph) {\r
41         session.clusterTable.collector.collect();\r
42         return 0;\r
43     }\r
44     \r
45     @Override\r
46     public int gc(ReadGraph graph, int objectiveBytes) {\r
47         if(objectiveBytes < 0) return gc(graph);\r
48         if(objectiveBytes > used()) return 0;\r
49         session.clusterTable.collector.collect(used() - objectiveBytes);\r
50         return 0;\r
51     }\r
52 \r
53     static class ClusterStateImpl implements ClusterState {\r
54         public Set<CollectorCluster> ids = new HashSet<CollectorCluster>();\r
55     }\r
56     \r
57     @Override\r
58     public ClusterState getClusterState() {\r
59         return session.clusterTable.getState();\r
60     }\r
61     \r
62     @Override\r
63     public void restoreClusterState(ClusterState state) {\r
64         session.clusterTable.restoreState((ClusterStateImpl)state);\r
65     }\r
66     \r
67     @Override\r
68     public int used() {\r
69         return (int)session.clusterTable.getSizeInBytes();\r
70     }\r
71 \r
72 }\r