]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/MultiIntProcedure.java
Multiple reader thread support for db client
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / graph / MultiIntProcedure.java
1 package org.simantics.db.impl.graph;
2
3 import org.simantics.db.Resource;
4 import org.simantics.db.common.utils.Logger;
5 import org.simantics.db.impl.query.IntProcedure;
6 import org.simantics.db.impl.query.QuerySupport;
7 import org.simantics.db.procedure.SyncMultiProcedure;
8
9 public class MultiIntProcedure implements IntProcedure {
10
11         final private SyncMultiProcedure<Resource> procedure;
12         final private ReadGraphImpl impl;
13         final private QuerySupport support;
14         
15         public MultiIntProcedure(SyncMultiProcedure<Resource> procedure, ReadGraphImpl impl, QuerySupport support) {
16                 this.procedure = procedure;
17                 this.impl = impl;
18                 this.support = support;
19         }
20         
21         @Override
22         public void execute(ReadGraphImpl graph, int i) {
23                 try {
24                         procedure.execute(graph, support.getResource(i));
25                 } catch (Throwable t2) {
26                 Logger.defaultLogError(t2);
27                 }
28         }
29
30         @Override
31         public void finished(ReadGraphImpl graph) {
32                 try {
33                         procedure.finished(graph);
34 //                      impl.state.barrier.dec(this);
35                 } catch (Throwable t2) {
36                 Logger.defaultLogError(t2);
37                 }
38         }
39
40         @Override
41         public void exception(ReadGraphImpl graph, Throwable t) {
42                 try {
43                         procedure.exception(graph, t);
44                 } catch (Throwable t2) {
45                 Logger.defaultLogError(t2);
46                 }
47 //              impl.state.barrier.dec("ReadGraphSupportImpl.516");
48         }
49
50         @Override
51         public String toString() {
52                 return "forEachObject with " + procedure;
53         }
54         
55 }