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");


Reply via email to