[freenet-cvs] r14604 - in trunk/freenet/src/freenet: client node node/simulator

toad at freenetproject.org toad at freenetproject.org
Sat Aug 11 14:32:37 UTC 2007


Author: toad
Date: 2007-08-11 14:32:37 +0000 (Sat, 11 Aug 2007)
New Revision: 14604

Modified:
   trunk/freenet/src/freenet/client/FetchContext.java
   trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
   trunk/freenet/src/freenet/client/InsertContext.java
   trunk/freenet/src/freenet/node/LoggingConfigHandler.java
   trunk/freenet/src/freenet/node/Node.java
   trunk/freenet/src/freenet/node/NodeClientCore.java
   trunk/freenet/src/freenet/node/NodeStarter.java
   trunk/freenet/src/freenet/node/simulator/RealNodePingTest.java
   trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
   trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java
Log:
Infrastructure to use Executor's

Modified: trunk/freenet/src/freenet/client/FetchContext.java
===================================================================
--- trunk/freenet/src/freenet/client/FetchContext.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/client/FetchContext.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -12,6 +12,7 @@
 import freenet.client.events.SimpleEventProducer;
 import freenet.crypt.RandomSource;
 import freenet.node.Ticker;
+import freenet.support.Executor;
 import freenet.support.api.BucketFactory;
 
 /** Context for a Fetcher. Contains all the settings a Fetcher needs to know about. */
@@ -53,6 +54,7 @@
 	public BlockSet blocks;
 	public Set allowedMIMETypes;
 	public final Ticker ticker;
+	public final Executor executor;
 	
 	public FetchContext(long curMaxLength, 
 			long curMaxTempLength, int maxMetadataSize, int maxRecursionLevel, int maxArchiveRestarts, int maxArchiveLevels,
@@ -61,8 +63,10 @@
 			boolean allowSplitfiles, boolean followRedirects, boolean localRequestOnly,
 			int maxDataBlocksPerSegment, int maxCheckBlocksPerSegment,
 			RandomSource random, ArchiveManager archiveManager, BucketFactory bucketFactory,
-			ClientEventProducer producer, boolean cacheLocalRequests, USKManager uskManager, HealingQueue hq, boolean ignoreTooManyPathComponents, Ticker ticker) {
+			ClientEventProducer producer, boolean cacheLocalRequests, USKManager uskManager, 
+			HealingQueue hq, boolean ignoreTooManyPathComponents, Ticker ticker, Executor executor) {
 		this.ticker = ticker;
+		this.executor = executor;
 		this.maxOutputLength = curMaxLength;
 		this.uskManager = uskManager;
 		this.maxTempLength = curMaxTempLength;
@@ -95,6 +99,7 @@
 		else
 			this.eventProducer = new SimpleEventProducer();
 		this.ticker = ctx.ticker;
+		this.executor = ctx.executor;
 		this.uskManager = ctx.uskManager;
 		this.ignoreTooManyPathComponents = ctx.ignoreTooManyPathComponents;
 		this.blocks = ctx.blocks;

Modified: trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java
===================================================================
--- trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/client/HighLevelSimpleClientImpl.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -191,7 +191,7 @@
 				MAX_SPLITFILE_BLOCKS_PER_SEGMENT, MAX_SPLITFILE_CHECK_BLOCKS_PER_SEGMENT,
 				random, archiveManager, bucketFactory, globalEventProducer, 
 				cacheLocalRequests, core.uskManager, healingQueue, 
-				forceDontIgnoreTooManyPathComponents ? false : core.ignoreTooManyPathComponents, core.getTicker());
+				forceDontIgnoreTooManyPathComponents ? false : core.ignoreTooManyPathComponents, core.getTicker(), core.getExecutor());
 	}
 
 	public InsertContext getInsertContext(boolean forceNonPersistent) {
@@ -199,6 +199,6 @@
 				forceNonPersistent ? new NullPersistentFileTracker() : persistentFileTracker,
 				random, INSERT_RETRIES, CONSECUTIVE_RNFS_ASSUME_SUCCESS,
 				SPLITFILE_INSERT_THREADS, SPLITFILE_BLOCKS_PER_SEGMENT, SPLITFILE_CHECK_BLOCKS_PER_SEGMENT, 
-				globalEventProducer, cacheLocalRequests, core.uskManager, blockEncoder);
+				globalEventProducer, cacheLocalRequests, core.uskManager, blockEncoder, core.getExecutor());
 	}
 }

Modified: trunk/freenet/src/freenet/client/InsertContext.java
===================================================================
--- trunk/freenet/src/freenet/client/InsertContext.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/client/InsertContext.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -8,6 +8,7 @@
 import freenet.client.events.ClientEventProducer;
 import freenet.client.events.SimpleEventProducer;
 import freenet.crypt.RandomSource;
+import freenet.support.Executor;
 import freenet.support.api.BucketFactory;
 import freenet.support.io.NullPersistentFileTracker;
 import freenet.support.io.PersistentFileTracker;
@@ -32,10 +33,11 @@
 	public final boolean cacheLocalRequests;
 	public final USKManager uskManager;
 	public final BackgroundBlockEncoder backgroundBlockEncoder;
+	public final Executor executor;
 	
 	public InsertContext(BucketFactory bf, BucketFactory persistentBF, PersistentFileTracker tracker, RandomSource random,
 			int maxRetries, int rnfsToSuccess, int maxThreads, int splitfileSegmentDataBlocks, int splitfileSegmentCheckBlocks,
-			ClientEventProducer eventProducer, boolean cacheLocalRequests, USKManager uskManager, BackgroundBlockEncoder blockEncoder) {
+			ClientEventProducer eventProducer, boolean cacheLocalRequests, USKManager uskManager, BackgroundBlockEncoder blockEncoder, Executor executor) {
 		this.bf = bf;
 		this.persistentFileTracker = tracker;
 		this.persistentBucketFactory = persistentBF;
@@ -51,6 +53,7 @@
 		this.splitfileSegmentCheckBlocks = splitfileSegmentCheckBlocks;
 		this.cacheLocalRequests = cacheLocalRequests;
 		this.backgroundBlockEncoder = blockEncoder;
+		this.executor = executor;
 	}
 
 	public InsertContext(InsertContext ctx, SimpleEventProducer producer, boolean forceNonPersistent) {
@@ -69,6 +72,7 @@
 		this.splitfileSegmentCheckBlocks = ctx.splitfileSegmentCheckBlocks;
 		this.cacheLocalRequests = ctx.cacheLocalRequests;
 		this.backgroundBlockEncoder = ctx.backgroundBlockEncoder;
+		this.executor = ctx.executor;
 	}
 
 	public InsertContext(InsertContext ctx, SimpleEventProducer producer) {
@@ -87,6 +91,7 @@
 		this.splitfileSegmentCheckBlocks = ctx.splitfileSegmentCheckBlocks;
 		this.cacheLocalRequests = ctx.cacheLocalRequests;
 		this.backgroundBlockEncoder = ctx.backgroundBlockEncoder;
+		this.executor = ctx.executor;
 	}
 
 }

Modified: trunk/freenet/src/freenet/node/LoggingConfigHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/LoggingConfigHandler.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/node/LoggingConfigHandler.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -10,6 +10,7 @@
 import freenet.config.InvalidConfigValueException;
 import freenet.config.OptionFormatException;
 import freenet.config.SubConfig;
+import freenet.support.Executor;
 import freenet.support.FileLoggerHook;
 import freenet.support.Logger;
 import freenet.support.LoggerHook;
@@ -55,9 +56,11 @@
 	private String logRotateInterval;
 	private long maxCachedLogBytes;
 	private int maxCachedLogLines;
+	private final Executor executor;
 	
-	public LoggingConfigHandler(SubConfig loggingConfig) throws InvalidConfigValueException {
+	public LoggingConfigHandler(SubConfig loggingConfig, Executor executor) throws InvalidConfigValueException {
 		this.config = loggingConfig;
+		this.executor = executor;
     	
     	loggingConfig.register("enabled", true, 1, true, false, "LogConfigHandler.enabled", "LogConfigHandler.enabledLong",
     			new BooleanCallback() {

Modified: trunk/freenet/src/freenet/node/Node.java
===================================================================
--- trunk/freenet/src/freenet/node/Node.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/node/Node.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -85,6 +85,7 @@
 import freenet.store.FreenetStore;
 import freenet.store.KeyCollisionException;
 import freenet.support.DoubleTokenBucket;
+import freenet.support.Executor;
 import freenet.support.Fields;
 import freenet.support.FileLoggerHook;
 import freenet.support.HTMLEncoder;
@@ -324,6 +325,7 @@
 	
 	// General stuff
 	
+	public final Executor executor;
 	public final PacketSender ps;
 	final DNSRequester dnsr;
 	final NodeDispatcher dispatcher;
@@ -519,12 +521,13 @@
 	 * @param the loggingHandler
 	 * @throws NodeInitException If the node initialization fails.
 	 */
-	 Node(PersistentConfig config, RandomSource random, LoggingConfigHandler lc, NodeStarter ns) throws NodeInitException {
+	 Node(PersistentConfig config, RandomSource random, LoggingConfigHandler lc, NodeStarter ns, Executor executor) throws NodeInitException {
 		// Easy stuff
 		logMINOR = Logger.shouldLog(Logger.MINOR, this);
 		String tmp = "Initializing Node using Freenet Build #"+Version.buildNumber()+" r"+Version.cvsRevision+" and freenet-ext Build #"+NodeStarter.extBuildNumber+" r"+NodeStarter.extRevisionNumber+" with "+System.getProperty("java.vm.vendor")+" JVM version "+System.getProperty("java.vm.version")+" running on "+System.getProperty("os.arch")+' '+System.getProperty("os.name")+' '+System.getProperty("os.version");
 		Logger.normal(this, tmp);
 		System.out.println(tmp);
+		this.executor = executor;
 	  	nodeStarter=ns;
 		if(logConfigHandler != lc)
 			logConfigHandler=lc;

Modified: trunk/freenet/src/freenet/node/NodeClientCore.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeClientCore.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/node/NodeClientCore.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -44,6 +44,7 @@
 import freenet.node.useralerts.UserAlertManager;
 import freenet.store.KeyCollisionException;
 import freenet.support.Base64;
+import freenet.support.Executor;
 import freenet.support.Logger;
 import freenet.support.SimpleFieldSet;
 import freenet.support.api.BooleanCallback;
@@ -273,7 +274,7 @@
 		healingQueue = new SimpleHealingQueue(requestStarters.chkPutScheduler,
 				new InsertContext(tempBucketFactory, tempBucketFactory, persistentTempBucketFactory, 
 						random, 0, 2, 1, 0, 0, new SimpleEventProducer(), 
-						!Node.DONT_CACHE_LOCAL_REQUESTS, uskManager, backgroundBlockEncoder), RequestStarter.PREFETCH_PRIORITY_CLASS, 512 /* FIXME make configurable */);
+						!Node.DONT_CACHE_LOCAL_REQUESTS, uskManager, backgroundBlockEncoder, node.executor), RequestStarter.PREFETCH_PRIORITY_CLASS, 512 /* FIXME make configurable */);
 		
 		// FIXME remove this code, the new behaviour should be handled by all clients
 		
@@ -1063,6 +1064,10 @@
 	public Ticker getTicker() {
 		return node.ps;
 	}
+	
+	public Executor getExecutor() {
+		return node.executor;
+	}
 
 	public File getPersistentTempDir() {
 		return persistentTempBucketFactory.getDir();

Modified: trunk/freenet/src/freenet/node/NodeStarter.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStarter.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/node/NodeStarter.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -16,7 +16,9 @@
 import freenet.crypt.DiffieHellman;
 import freenet.crypt.RandomSource;
 import freenet.crypt.Yarrow;
+import freenet.support.Executor;
 import freenet.support.Logger;
+import freenet.support.PooledExecutor;
 import freenet.support.SimpleFieldSet;
 import freenet.support.LoggerHook.InvalidThresholdException;
        
@@ -74,7 +76,7 @@
     		System.out.println("Usage: $ java freenet.node.Node <configFile>");
     		return new Integer(-1);
     	}
-    	 
+    	
     	File configFilename;
     	if(args.length == 0) {
     		System.out.println("Using default config filename freenet.ini");
@@ -86,7 +88,9 @@
     	// use dyndns hostnames
     	java.security.Security.setProperty("networkaddress.cache.ttl" , "0");
     	java.security.Security.setProperty("networkaddress.cache.negative.ttl" , "0");
-    	  	
+    	
+    	Executor executor = new PooledExecutor();
+    	
     	try{
     		cfg = FreenetFilePersistentConfig.constructFreenetFilePersistentConfig(configFilename);	
     	}catch(IOException e){
@@ -99,7 +103,7 @@
     	SubConfig loggingConfig = new SubConfig("logger", cfg);
     	
     	try {
-    		logConfigHandler = new LoggingConfigHandler(loggingConfig);
+    		logConfigHandler = new LoggingConfigHandler(loggingConfig, executor);
     	} catch (InvalidConfigValueException e) {
     		System.err.println("Error: could not set up logging: "+e.getMessage());
     		e.printStackTrace();
@@ -144,7 +148,7 @@
 		
     	WrapperManager.signalStarting(500000);
     	try {
-    		node = new Node(cfg, random, logConfigHandler,this);
+    		node = new Node(cfg, random, logConfigHandler,this, executor);
     		node.start(false);
     		System.out.println("Node initialization completed.");
     	} catch (NodeInitException e) {
@@ -325,7 +329,7 @@
 	 */
 	public static Node createTestNode(int port, String testName, boolean doClient, 
 			boolean doSwapping, boolean disableProbabilisticHTLs, short maxHTL,
-			int dropProb, int swapInterval, RandomSource random) throws NodeInitException {
+			int dropProb, int swapInterval, RandomSource random, Executor executor) throws NodeInitException {
 		
 		File baseDir = new File(testName);
 		File portDir = new File(baseDir, Integer.toString(port));
@@ -354,7 +358,7 @@
 		
 		PersistentConfig config = new PersistentConfig(configFS);
 		
-		return new Node(config, random, null, null);
+		return new Node(config, random, null, null, executor);
 	}
 	
 }

Modified: trunk/freenet/src/freenet/node/simulator/RealNodePingTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodePingTest.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/node/simulator/RealNodePingTest.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -12,7 +12,9 @@
 import freenet.node.NodeInitException;
 import freenet.node.NodeStarter;
 import freenet.node.PeerNode;
+import freenet.support.Executor;
 import freenet.support.Logger;
+import freenet.support.PooledExecutor;
 import freenet.support.LoggerHook.InvalidThresholdException;
 
 /**
@@ -30,8 +32,9 @@
     public static void main(String[] args) throws FSParseException, PeerParseException, InterruptedException, ReferenceSignatureVerificationException, NodeInitException, InvalidThresholdException {
         RandomSource random = NodeStarter.globalTestInit("pingtest");
         // Create 2 nodes
-        Node node1 = NodeStarter.createTestNode(5001, "pingtest", false, false, true, Node.DEFAULT_MAX_HTL, 0, Node.DEFAULT_SWAP_INTERVAL, random);
-        Node node2 = NodeStarter.createTestNode(5002, "pingtest", false, false, true, Node.DEFAULT_MAX_HTL, 0, Node.DEFAULT_SWAP_INTERVAL, random);
+        Executor executor = new PooledExecutor();
+        Node node1 = NodeStarter.createTestNode(5001, "pingtest", false, false, true, Node.DEFAULT_MAX_HTL, 0, Node.DEFAULT_SWAP_INTERVAL, random, executor);
+        Node node2 = NodeStarter.createTestNode(5002, "pingtest", false, false, true, Node.DEFAULT_MAX_HTL, 0, Node.DEFAULT_SWAP_INTERVAL, random, executor);
         // Connect
         node1.connect(node2);
         node2.connect(node1);

Modified: trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeRequestInsertTest.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -19,9 +19,11 @@
 import freenet.node.Node;
 import freenet.node.NodeInitException;
 import freenet.node.NodeStarter;
+import freenet.support.Executor;
 import freenet.support.Fields;
 import freenet.support.HexUtil;
 import freenet.support.Logger;
+import freenet.support.PooledExecutor;
 import freenet.support.SimpleFieldSet;
 import freenet.support.LoggerHook.InvalidThresholdException;
 import freenet.support.math.BootstrappingDecayingRunningAverage;
@@ -49,9 +51,10 @@
         DiffieHellman.init(random);
         Node[] nodes = new Node[NUMBER_OF_NODES];
         Logger.normal(RealNodeRoutingTest.class, "Creating nodes...");
+        Executor executor = new PooledExecutor();
         for(int i=0;i<NUMBER_OF_NODES;i++) {
             nodes[i] = 
-            	NodeStarter.createTestNode(5001+i, wd, false, true, true, MAX_HTL, 20 /* 5% */, Node.DEFAULT_SWAP_INTERVAL, random);
+            	NodeStarter.createTestNode(5001+i, wd, false, true, true, MAX_HTL, 20 /* 5% */, Node.DEFAULT_SWAP_INTERVAL, random, executor);
             Logger.normal(RealNodeRoutingTest.class, "Created node "+i);
         }
         SimpleFieldSet refs[] = new SimpleFieldSet[NUMBER_OF_NODES];

Modified: trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java
===================================================================
--- trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java	2007-08-11 14:22:55 UTC (rev 14603)
+++ trunk/freenet/src/freenet/node/simulator/RealNodeRoutingTest.java	2007-08-11 14:32:37 UTC (rev 14604)
@@ -14,7 +14,9 @@
 import freenet.node.Node;
 import freenet.node.NodeInitException;
 import freenet.node.NodeStarter;
+import freenet.support.Executor;
 import freenet.support.Logger;
+import freenet.support.PooledExecutor;
 import freenet.support.LoggerHook.InvalidThresholdException;
 import freenet.support.math.BootstrappingDecayingRunningAverage;
 import freenet.support.math.RunningAverage;
@@ -43,9 +45,10 @@
         DiffieHellman.init(random);
         Node[] nodes = new Node[NUMBER_OF_NODES];
         Logger.normal(RealNodeRoutingTest.class, "Creating nodes...");
+        Executor executor = new PooledExecutor();
         for(int i=0;i<NUMBER_OF_NODES;i++) {
             nodes[i] = 
-            	NodeStarter.createTestNode(5001+i, wd, false, true, true, MAX_HTL, 0 /* no dropped packets */, /* Node.DEFAULT_SWAP_INTERVAL */ 0, random);
+            	NodeStarter.createTestNode(5001+i, wd, false, true, true, MAX_HTL, 0 /* no dropped packets */, /* Node.DEFAULT_SWAP_INTERVAL */ 0, random, executor);
             Logger.normal(RealNodeRoutingTest.class, "Created node "+i);
         }
         Logger.normal(RealNodeRoutingTest.class, "Created "+NUMBER_OF_NODES+" nodes");




More information about the cvs mailing list