1 package fi.vtt.simantics.procore.internal;
\r
3 import java.util.HashSet;
\r
4 import java.util.Set;
\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
11 public class ClusterControlImpl implements ClusterControl {
\r
13 final private SessionImplSocket session;
\r
15 ClusterControlImpl(SessionImplSocket session) {
\r
16 this.session = session;
\r
20 public ClusterCollectorPolicy setPolicy(ClusterCollectorPolicy newPolicy) {
\r
21 return session.clusterTable.collector.setPolicy(newPolicy);
\r
25 public int flushClusters() {
\r
26 session.clusterTable.gc();
\r
29 return session.clusterTable.size();
\r
34 public int collectClusters(int desiredBytes) {
\r
35 session.clusterTable.collector.collect(desiredBytes);
\r
40 public int gc(ReadGraph graph) {
\r
41 session.clusterTable.collector.collect();
\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
53 static class ClusterStateImpl implements ClusterState {
\r
54 public Set<CollectorCluster> ids = new HashSet<CollectorCluster>();
\r
58 public ClusterState getClusterState() {
\r
59 return session.clusterTable.getState();
\r
63 public void restoreClusterState(ClusterState state) {
\r
64 session.clusterTable.restoreState((ClusterStateImpl)state);
\r
69 return (int)session.clusterTable.getSizeInBytes();
\r