]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryProcessor.java
Multiple simultaneous readers
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / query / QueryProcessor.java
index a2fff0515b1975f98484ca969005ff40b5c32113..a6c987a9d0e10e0b2beda36f7a571a8633527063 100644 (file)
@@ -524,18 +524,18 @@ final public class QueryProcessor extends AbstractDisposable implements ReadGrap
                                        }
 
                                        // Fall back to using the fixed builtins.
-                                       result = querySupport.getBuiltin(id);
-                                       if (result != 0) {
-                                               procedure.execute(graph, result);
-                                               return;
-                                       } 
+//                                     result = querySupport.getBuiltin(id);
+//                                     if (result != 0) {
+//                                             procedure.execute(graph, result);
+//                                             return;
+//                                     } 
 
-                                       try {
-                                               result = querySupport.getRandomAccessReference(id);
-                                       } catch (ResourceNotFoundException e) {
-                                               procedure.exception(graph, e);
-                                               return;
-                                       }
+//                                     try {
+//                                             result = querySupport.getRandomAccessReference(id);
+//                                     } catch (ResourceNotFoundException e) {
+//                                             procedure.exception(graph, e);
+//                                             return;
+//                                     }
 
                                        if (result != 0) {
                                                procedure.execute(graph, result);
@@ -593,12 +593,12 @@ final public class QueryProcessor extends AbstractDisposable implements ReadGrap
                QueryCache.runnerExternalReadEntry(graph, query, parent, listener, procedure);
        }
 
-    @Override
-       public <T> T query(final ReadGraphImpl graph, final Read<T> query, final CacheEntry parent, final AsyncProcedure<T> procedure, final ListenerBase listener) throws DatabaseException {
-       
-       return QueryCache.resultReadEntry(graph, query, parent, listener, procedure);
-
-       }
+//    @Override
+//     public <T> T query(final ReadGraphImpl graph, final Read<T> query, final CacheEntry parent, final AsyncProcedure<T> procedure, final ListenerBase listener) throws DatabaseException {
+//     
+//     return QueryCache.resultReadEntry(graph, query, parent, listener, procedure);
+//
+//     }
 
        public <T> void queryMultiRead(final ReadGraphImpl graph, final MultiRead<T> query, final CacheEntry parent, final ListenerBase listener, final AsyncMultiProcedure<T> procedure) throws DatabaseException {
 
@@ -1340,7 +1340,7 @@ final public class QueryProcessor extends AbstractDisposable implements ReadGrap
 
                CacheEntry entry = e.entry;
 
-//             System.err.println("updateQuery " + entry);
+               System.err.println("updateQuery " + entry);
                
                /*
                 * If the dependency graph forms a DAG, some entries are inserted in the
@@ -3393,37 +3393,18 @@ final public class QueryProcessor extends AbstractDisposable implements ReadGrap
         assert(procedure != null);
 
         final ListenerBase listener = getListenerBase(procedure);
+        assert(listener == null);
 
         InternalProcedure<IntSet> ip = new InternalProcedure<IntSet>() {
 
-            AtomicBoolean first = new AtomicBoolean(true);
-
             @Override
             public void execute(final ReadGraphImpl graph, IntSet set) {
-                try {
-                    if(first.compareAndSet(true, false)) {
-                        procedure.execute(graph, set);
-//                      impl.state.barrier.dec(this);
-                    } else {
-                        procedure.execute(impl.newRestart(graph), set);
-                    }
-                } catch (Throwable t2) {
-                    Logger.defaultLogError(t2);
-                }
+               procedure.execute(graph, set);
             }
 
             @Override
             public void exception(ReadGraphImpl graph, Throwable t) {
-                try {
-                    if(first.compareAndSet(true, false)) {
-                        procedure.exception(graph, t);
-//                      impl.state.barrier.dec(this);
-                    } else {
-                        procedure.exception(impl.newRestart(graph), t);
-                    }
-                } catch (Throwable t2) {
-                    Logger.defaultLogError(t2);
-                }
+               procedure.exception(graph, t);
             }
 
         };
@@ -3449,44 +3430,25 @@ final public class QueryProcessor extends AbstractDisposable implements ReadGrap
 
        @Override
        final public void forRelationInfo(final ReadGraphImpl impl, final Resource subject, final AsyncProcedure<RelationInfo> procedure) {
-
+               
                assert(subject != null);
                assert(procedure != null);
 
                final ListenerBase listener = getListenerBase(procedure);
+               assert(listener == null);
 
                try {
                        
                        QueryCache.runnerRelationInfoQuery(impl, querySupport.getId(subject), impl.parent, listener, new InternalProcedure<RelationInfo>() {
 
-                               AtomicBoolean first = new AtomicBoolean(true);
-
                                @Override
                                public void execute(final ReadGraphImpl graph, RelationInfo set) {
-                                       try {
-                                               if(first.compareAndSet(true, false)) {
-                                                       procedure.execute(graph, set);
-//                                             impl.state.barrier.dec();
-                                               } else {
-                                                       procedure.execute(impl.newRestart(graph), set);
-                                               }
-                                       } catch (Throwable t2) {
-                                               Logger.defaultLogError(t2);
-                                       }
+                                       procedure.execute(graph, set);                                  
                                }
 
                                @Override
                                public void exception(ReadGraphImpl graph, Throwable t) {
-                                       try {
-                                               if(first.compareAndSet(true, false)) {
-                                                       procedure.exception(graph, t);
-//                                             impl.state.barrier.dec("ReadGraphSupportImpl.1353");
-                                               } else {
-                                                       procedure.exception(impl.newRestart(graph), t);
-                                               }
-                                       } catch (Throwable t2) {
-                                               Logger.defaultLogError(t2);
-                                       }
+                                       procedure.exception(graph, t);
                                }
 
                        });
@@ -4195,15 +4157,15 @@ final public class QueryProcessor extends AbstractDisposable implements ReadGrap
 
        }
 
-       @Override
-       final public <T> void query(final ReadGraphImpl impl, final AsyncRead<T> request, final CacheEntry parent, final AsyncProcedure<T> procedure, ListenerBase listener) throws DatabaseException {
-
-               assert(request != null);
-               assert(procedure != null);
-
-               QueryCache.runnerAsyncReadEntry(impl, request, parent, listener, procedure);
-
-       }
+//     @Override
+//     final public <T> void query(final ReadGraphImpl impl, final AsyncRead<T> request, final CacheEntry parent, final AsyncProcedure<T> procedure, ListenerBase listener) throws DatabaseException {
+//
+//             assert(request != null);
+//             assert(procedure != null);
+//
+//             QueryCache.runnerAsyncReadEntry(impl, request, parent, listener, procedure);
+//
+//     }
 
 //     @Override
 //     final public <T> T tryQuery(final ReadGraphImpl graph, final Read<T> request) throws DatabaseException {