Author: mrogers
Date: 2008-05-23 21:57:57 +0000 (Fri, 23 May 2008)
New Revision: 20084

Removed:
   trunk/apps/RequestGenerator.java
Log:
Argh part 2.


Deleted: trunk/apps/RequestGenerator.java
===================================================================
--- trunk/apps/RequestGenerator.java    2008-05-23 21:57:16 UTC (rev 20083)
+++ trunk/apps/RequestGenerator.java    2008-05-23 21:57:57 UTC (rev 20084)
@@ -1,80 +0,0 @@
-// This software has been placed in the public domain by its author
-
-import java.util.ArrayList;
-import java.util.TreeSet;
-
-abstract class RequestGenerator
-{
-       public static Class CLASS = null; // Factory class
-       
-       TreeSet<Request> queue = new TreeSet<Request>();
-       double now = 0.0;
-       
-       // Factory method
-       static RequestGenerator create()
-       {
-               try {
-                       return (RequestGenerator) CLASS.newInstance();
-               }
-               catch (Exception e) {
-                       System.err.println (e);
-                       System.exit (2);
-                       return null;
-               }
-       }
-       
-       // Schedule the first request for each key
-       void init (ArrayList<Double> keys)
-       {
-               for (int i = 0, size = keys.size(); i < size; i++) {
-                       double rate = requestRate();
-                       double time = now - Math.log (Math.random()) / rate;
-                       queue.add (new Request (keys.get (i), rate, time));
-               }
-       }
-       
-       // Return the rate at which a given key will be requested
-       abstract double requestRate();
-       
-       // Return a key and schedule the next request for that key
-       double generateRequest()
-       {
-               Request r = queue.first();
-               queue.remove (r);
-               now = r.time;
-               double time = now - Math.log (Math.random()) / r.rate;
-               queue.add (new Request (r.key, r.rate, time));
-               return r.key;
-       }
-       
-       class Request implements Comparable<Request>
-       {
-               final double key, rate, time;
-               
-               Request (double key, double rate, double time)
-               {
-                       this.key = key;
-                       this.rate = rate;
-                       this.time = time;
-               }
-               
-               // Must be consistent with compareTo()
-               public boolean equals (Request r)
-               {
-                       return key == r.key && rate == r.rate && time == r.time;
-               }
-               
-               // Must be consistent with equals()
-               public int compareTo (Request r)
-               {
-                       if (time < r.time) return -1;
-                       if (time > r.time) return 1;
-                       // Arbitrarily break ties using rate, then key
-                       if (rate < r.rate) return -1;
-                       if (rate > r.rate) return 1;
-                       if (key < r.key) return -1;
-                       if (key > r.key) return 1;
-                       return 0;
-               }
-       }
-}


Reply via email to