Author: toad
Date: 2008-07-12 02:48:03 +0000 (Sat, 12 Jul 2008)
New Revision: 21094

Modified:
   
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
Log:
EEEEEEEK!

Modified: 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java
===================================================================
--- 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-07-12 02:37:54 UTC (rev 21093)
+++ 
branches/db4o/freenet/src/freenet/client/async/ClientRequestSchedulerCore.java  
    2008-07-12 02:48:03 UTC (rev 21094)
@@ -131,23 +131,45 @@

                        public void run(ObjectContainer container, 
ClientContext context) {
                                long tStart = System.currentTimeMillis();
-                               registerMeSet = container.query(new Predicate() 
{
-                                       public boolean match(RegisterMe reg) {
-                                               if(reg.core != 
ClientRequestSchedulerCore.this) return false;
-                                               if(reg.key.addedTime > 
initTime) return false;
-                                               return true;
-                                       }
-                               }, new Comparator() {
+                               // FIXME REDFLAG EVIL DB4O BUG!!!
+                               // FIXME verify and file a bug
+                               // This code doesn't check the first bit!
+                               // I think this is related to the comparator...
+//                             registerMeSet = container.query(new Predicate() 
{
+//                                     public boolean match(RegisterMe reg) {
+//                                             if(reg.core != 
ClientRequestSchedulerCore.this) return false;
+//                                             if(reg.key.addedTime > 
initTime) return false;
+//                                             return true;
+//                                     }
+//                             }, new Comparator() {
+//
+//                                     public int compare(Object arg0, Object 
arg1) {
+//                                             RegisterMe reg0 = (RegisterMe) 
arg0;
+//                                             RegisterMe reg1 = (RegisterMe) 
arg1;
+//                                             RegisterMeSortKey key0 = 
reg0.key;
+//                                             RegisterMeSortKey key1 = 
reg1.key;
+//                                             return key0.compareTo(key1);
+//                                     }
+//                                     
+//                             });
+                               Query query = container.query();
+                               query.constrain(RegisterMe.class);
+                               
query.descend("core").constrain(ClientRequestSchedulerCore.this);
+                               Evaluation eval = new Evaluation() {

-                                       public int compare(Object arg0, Object 
arg1) {
-                                               RegisterMe reg0 = (RegisterMe) 
arg0;
-                                               RegisterMe reg1 = (RegisterMe) 
arg1;
-                                               RegisterMeSortKey key0 = 
reg0.key;
-                                               RegisterMeSortKey key1 = 
reg1.key;
-                                               return key0.compareTo(key1);
+                                       public void evaluate(Candidate 
candidate) {
+                                               RegisterMe reg = (RegisterMe) 
candidate.getObject();
+                                               if(reg.key.addedTime > 
initTime) {
+                                                       
candidate.include(false);
+                                               } else {
+                                                       candidate.include(true);
+                                               }
                                        }

-                               });
+                               };
+                               query.constrain(eval);
+                               
query.descend("key").descend("priority").orderAscending();
+                               
query.descend("key").descend("addedTime").orderAscending();
                        long tEnd = System.currentTimeMillis();
                        if(logMINOR)
                                Logger.minor(this, "RegisterMe query took 
"+(tEnd-tStart));


Reply via email to