]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/ReadGraphImpl.java
Multiple simultaneous readers
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / graph / ReadGraphImpl.java
index 3337e55b8455d88dd760efbfc19fe0df08e31a50..25438ef1ef3f0d57878c32c3c03def4111c8ca0c 100644 (file)
@@ -137,6 +137,7 @@ import org.simantics.db.impl.procedure.CallWrappedSingleQueryProcedure4;
 import org.simantics.db.impl.procedure.ResultCallWrappedQueryProcedure4;
 import org.simantics.db.impl.procedure.ResultCallWrappedSingleQueryProcedure4;
 import org.simantics.db.impl.query.CacheEntry;
+import org.simantics.db.impl.query.QueryCache;
 import org.simantics.db.impl.query.QueryProcessor;
 import org.simantics.db.impl.query.QuerySupport;
 import org.simantics.db.impl.query.TripleIntProcedure;
@@ -1896,7 +1897,9 @@ public class ReadGraphImpl implements ReadGraph {
 
                assert (request != null);
 
-               return processor.query(this, request, parent, null, null);
+               return QueryCache.resultReadEntry(this, request, parent, null, null);
+               
+               //return processor.query(this, request, parent, null, null);
 
 //             if (parent != null) {
 //
@@ -1948,7 +1951,9 @@ public class ReadGraphImpl implements ReadGraph {
 
                ListenerBase listener = procedure != null ? getListenerBase(procedure) : null;
 
-        return processor.query(this, request, parent, procedure, listener);
+               return QueryCache.resultReadEntry(this, request, parent, listener, procedure);
+               
+//        return processor.query(this, request, parent, procedure, listener);
         
 
 //             if (parent != null || listener != null) {
@@ -2079,7 +2084,9 @@ public class ReadGraphImpl implements ReadGraph {
                final ResultCallWrappedSingleQueryProcedure4<T> wrapper = new ResultCallWrappedSingleQueryProcedure4<T>(
                                procedure, request);
                
-               processor.query(this, request, parent, wrapper, listener);
+               QueryCache.runnerAsyncReadEntry(this, request, parent, listener, wrapper);
+               
+               //processor.query(this, request, parent, wrapper, listener);
                
                return wrapper.getResult();
 
@@ -2147,35 +2154,12 @@ public class ReadGraphImpl implements ReadGraph {
                assert (request != null);
 
                ListenerBase listener = getListenerBase(procedure);
+               assert(listener == null);
 
-               final ResultCallWrappedSingleQueryProcedure4<T> wrapper = new ResultCallWrappedSingleQueryProcedure4<T>(
-                               procedure, request);
-
-               processor.query(this, request, parent, wrapper, listener);
+//             final ResultCallWrappedSingleQueryProcedure4<T> wrapper = new ResultCallWrappedSingleQueryProcedure4<T>(
+//                             procedure, request);
 
-//             if (parent != null || listener != null || ((request.getFlags() & RequestFlags.SCHEDULE) > 0)) {
-//
-//
-//             } else {
-//
-//                     try {
-//
-////                           final ReadGraphImpl newGraph = newSync();
-//                             processor.tryQuery(this, request, procedure);
-////                           newGraph.waitAsync(null);
-//                             waitAsyncProcedure(procedure);
-//
-//                     } catch (Throwable t) {
-//                             if(Development.DEVELOPMENT) {
-//                                     if(Development.<Boolean>getProperty(DevelopmentKeys.WRITEGRAPH_EXCEPTION_STACKTRACES, Bindings.BOOLEAN)) {
-//                                     t.printStackTrace();
-//                                     }
-//                             }
-//                             procedure.exception(this, t);
-//                             waitAsyncProcedure(procedure);
-//                     }
-//
-//             }
+               QueryCache.runnerAsyncReadEntry(this, request, parent, listener, procedure);
 
        }
 
@@ -5408,7 +5392,8 @@ public class ReadGraphImpl implements ReadGraph {
                if (parent != null || listener != null) {
 
                        try {
-                               processor.query(this, request, parent, procedure,listener);
+                               QueryCache.runnerReadEntry(this, request, parent, listener, procedure);
+                               //processor.query(this, request, parent, procedure,listener);
                        } catch (DatabaseException e) {
                                Logger.defaultLogError(e);
                                // This throwable has already been transferred to procedure at this point - do nothing about it
@@ -5518,7 +5503,8 @@ public class ReadGraphImpl implements ReadGraph {
                if (parent != null || listener != null) {
 
                        try {
-                               processor.query(this, request, parent, procedure, listener);
+                               QueryCache.runnerAsyncReadEntry(this, request, parent, listener, procedure);
+                               //processor.query(this, request, parent, procedure, listener);
                        } catch (DatabaseException e) {
                                Logger.defaultLogError(e);
                        }