[freenet-cvs] r11370 - in trunk/apps/load-balancing-sims/phase7/sim: . generators messages

mrogers at freenetproject.org mrogers at freenetproject.org
Wed Dec 13 14:03:49 UTC 2006


Author: mrogers
Date: 2006-12-13 14:03:48 +0000 (Wed, 13 Dec 2006)
New Revision: 11370

Added:
   trunk/apps/load-balancing-sims/phase7/sim/generators/Client.java
Modified:
   trunk/apps/load-balancing-sims/phase7/sim/Node.java
   trunk/apps/load-balancing-sims/phase7/sim/generators/SimplePublisher.java
   trunk/apps/load-balancing-sims/phase7/sim/messages/ChkInsert.java
   trunk/apps/load-balancing-sims/phase7/sim/messages/ChkRequest.java
   trunk/apps/load-balancing-sims/phase7/sim/messages/Search.java
   trunk/apps/load-balancing-sims/phase7/sim/messages/SskInsert.java
   trunk/apps/load-balancing-sims/phase7/sim/messages/SskRequest.java
Log:
Don't inform the readers until the insert starts (plus ten minutes)

Modified: trunk/apps/load-balancing-sims/phase7/sim/Node.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/Node.java	2006-12-13 09:46:24 UTC (rev 11369)
+++ trunk/apps/load-balancing-sims/phase7/sim/Node.java	2006-12-13 14:03:48 UTC (rev 11370)
@@ -1,4 +1,5 @@
 package sim;
+import sim.generators.Client;
 import sim.handlers.*;
 import sim.messages.*;
 import java.util.HashMap;
@@ -544,6 +545,8 @@
 			return;
 		}
 		Search s = searchQueue.poll();
+		// Inform the client that the search has left the queue
+		if (s.client != null) s.client.searchStarted (s);
 		if (s instanceof ChkRequest)
 			handleChkRequest ((ChkRequest) s, null);
 		else if (s instanceof ChkInsert) {
@@ -587,9 +590,9 @@
 		addToSearchQueue (cr);
 	}
 	
-	public void generateChkInsert (int key)
+	public void generateChkInsert (int key, Client c)
 	{
-		ChkInsert ci = new ChkInsert (key, location);
+		ChkInsert ci = new ChkInsert (key, location, c);
 		if (LOG) log ("generating " + ci);
 		addToSearchQueue (ci);
 	}
@@ -601,9 +604,9 @@
 		addToSearchQueue (sr);
 	}
 	
-	public void generateSskInsert (int key, int value)
+	public void generateSskInsert (int key, int value, Client c)
 	{
-		SskInsert si = new SskInsert (key, value, location);
+		SskInsert si = new SskInsert (key, value, location, c);
 		if (LOG) log ("generating " + si);
 		addToSearchQueue (si);
 	}
@@ -639,7 +642,7 @@
 			break;
 			
 			case INSERT_CHK:
-			generateChkInsert ((Integer) data);
+			generateChkInsert ((Integer) data, null);
 			break;
 			
 			case REQUEST_SSK:
@@ -647,11 +650,11 @@
 			break;
 			
 			case INSERT_SSK:
-			generateSskInsert ((Integer) data, 0);
+			generateSskInsert ((Integer) data, 0, null);
 			break;
 			
 			case SSK_COLLISION:
-			generateSskInsert ((Integer) data, 1);
+			generateSskInsert ((Integer) data, 1, null);
 			break;
 			
 			case CHECK_TIMEOUTS:

Added: trunk/apps/load-balancing-sims/phase7/sim/generators/Client.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/generators/Client.java	                        (rev 0)
+++ trunk/apps/load-balancing-sims/phase7/sim/generators/Client.java	2006-12-13 14:03:48 UTC (rev 11370)
@@ -0,0 +1,7 @@
+package sim.generators;
+import sim.messages.Search;
+
+public interface Client
+{
+	public void searchStarted (Search s); // Callback
+}

Modified: trunk/apps/load-balancing-sims/phase7/sim/generators/SimplePublisher.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/generators/SimplePublisher.java	2006-12-13 09:46:24 UTC (rev 11369)
+++ trunk/apps/load-balancing-sims/phase7/sim/generators/SimplePublisher.java	2006-12-13 14:03:48 UTC (rev 11370)
@@ -5,9 +5,10 @@
 import sim.Event;
 import sim.EventTarget;
 import sim.Node;
+import sim.messages.*;
 import java.util.HashSet;
 
-public class SimplePublisher implements EventTarget
+public class SimplePublisher implements Client, EventTarget
 {
 	// FIXME: what fraction of keys are CHKs in real life?
 	private final static double FRACTION_CHKS = 0.5;
@@ -44,12 +45,7 @@
 	{
 		// Insert a random key
 		int key = Node.locationToKey (Math.random());
-		node.generateChkInsert (key);
-		// Inform each reader after an average of ten minutes
-		for (Node n : readers) {
-			double delay = 595.0 + Math.random() * 10.0;
-			Event.schedule (n, delay, Node.REQUEST_CHK, key);
-		}
+		node.generateChkInsert (key, this);
 		// Schedule the next insert after an exp. distributed delay
 		if (inserts > 0 && --inserts == 0) return;
 		double delay = -Math.log (Math.random()) / rate;
@@ -60,18 +56,27 @@
 	{
 		// Insert a random key
 		int key = Node.locationToKey (Math.random());
-		node.generateSskInsert (key, 0);
-		// Inform each reader after an average of ten minutes
-		for (Node n : readers) {
-			double delay = 595.0 + Math.random() * 10.0;
-			Event.schedule (n, delay, Node.REQUEST_SSK, key);
-		}
+		node.generateSskInsert (key, 0, this);
 		// Schedule the next insert after an exp. distributed delay
 		if (inserts > 0 && --inserts == 0) return;
 		double delay = -Math.log (Math.random()) / rate;
 		Event.schedule (this, delay, PUBLISH, null);
 	}
 	
+	// Client interface
+	
+	public void searchStarted (Search s)
+	{
+		// Inform each reader after an average of ten minutes
+		for (Node n : readers) {
+			double d = 595.0 + Math.random() * 10.0;
+			if (s instanceof ChkInsert)
+				Event.schedule (n, d, Node.REQUEST_CHK, s.key);
+			else if (s instanceof SskInsert)
+				Event.schedule (n, d, Node.REQUEST_SSK, s.key);
+		}
+	}
+	
 	// EventTarget interface
 	
 	public void handleEvent (int type, Object data)

Modified: trunk/apps/load-balancing-sims/phase7/sim/messages/ChkInsert.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/messages/ChkInsert.java	2006-12-13 09:46:24 UTC (rev 11369)
+++ trunk/apps/load-balancing-sims/phase7/sim/messages/ChkInsert.java	2006-12-13 14:03:48 UTC (rev 11370)
@@ -1,11 +1,12 @@
 package sim.messages;
+import sim.generators.Client;
 
 public class ChkInsert extends Search
 {
 	// Start a new insert
-	public ChkInsert (int key, double location)
+	public ChkInsert (int key, double location, Client client)
 	{
-		super (key, location);
+		super (key, location, client);
 	}
 	
 	// Forward an insert

Modified: trunk/apps/load-balancing-sims/phase7/sim/messages/ChkRequest.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/messages/ChkRequest.java	2006-12-13 09:46:24 UTC (rev 11369)
+++ trunk/apps/load-balancing-sims/phase7/sim/messages/ChkRequest.java	2006-12-13 14:03:48 UTC (rev 11370)
@@ -5,7 +5,7 @@
 	// Start a new request
 	public ChkRequest (int key, double location)
 	{
-		super (key, location);
+		super (key, location, null);
 	}
 	
 	// Forward a request

Modified: trunk/apps/load-balancing-sims/phase7/sim/messages/Search.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/messages/Search.java	2006-12-13 09:46:24 UTC (rev 11369)
+++ trunk/apps/load-balancing-sims/phase7/sim/messages/Search.java	2006-12-13 14:03:48 UTC (rev 11370)
@@ -1,4 +1,5 @@
 package sim.messages;
+import sim.generators.Client;
 
 public class Search extends Message
 {
@@ -7,14 +8,16 @@
 	public final int key; // The target of the search
 	public double closest; // The closest location seen so far
 	public int htl; // Hops to live for backtracking
+	public Client client; // Stored here for convenience
 	
 	// Start a new search
-	public Search (int key, double location)
+	public Search (int key, double location, Client client)
 	{
 		id = Message.nextId++;
 		this.key = key;
 		closest = location;
 		htl = MAX_HTL;
+		this.client = client;
 	}
 	
 	// Forward a search
@@ -24,6 +27,7 @@
 		this.key = key;
 		this.closest = closest;
 		this.htl = htl;
+		client = null;
 	}
 	
 	public int size()

Modified: trunk/apps/load-balancing-sims/phase7/sim/messages/SskInsert.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/messages/SskInsert.java	2006-12-13 09:46:24 UTC (rev 11369)
+++ trunk/apps/load-balancing-sims/phase7/sim/messages/SskInsert.java	2006-12-13 14:03:48 UTC (rev 11370)
@@ -1,13 +1,14 @@
 package sim.messages;
+import sim.generators.Client;
 
 public class SskInsert extends Search
 {
 	public final int data;
 	
 	// Start a new insert
-	public SskInsert (int key, int data, double location)
+	public SskInsert (int key, int data, double location, Client client)
 	{
-		super (key, location);
+		super (key, location, client);
 		this.data = data;
 	}
 	

Modified: trunk/apps/load-balancing-sims/phase7/sim/messages/SskRequest.java
===================================================================
--- trunk/apps/load-balancing-sims/phase7/sim/messages/SskRequest.java	2006-12-13 09:46:24 UTC (rev 11369)
+++ trunk/apps/load-balancing-sims/phase7/sim/messages/SskRequest.java	2006-12-13 14:03:48 UTC (rev 11370)
@@ -7,7 +7,7 @@
 	// Start a new request
 	public SskRequest (int key, double location, boolean needPubKey)
 	{
-		super (key, location);
+		super (key, location, null);
 		this.needPubKey = needPubKey;
 	}
 	




More information about the cvs mailing list