Changeset e7718b1


Ignore:
Timestamp:
Jun 13, 2013 5:02:53 PM (7 years ago)
Author:
dev <dev@…>
Branches:
master
Children:
937f4f2
Parents:
29b599bc
Message:

Threaded the calling of runRouter() to improve startup times.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • router/java/src/net/i2p/router/MultiRouter.java

    r29b599bc re7718b1  
    8484        _defaultContext.clock().setOffset(0);
    8585       
     86        _out.println("RouterConsole for Router 0 is listening on: 127.0.0.1:" + (BASE_PORT-1));
     87
    8688        Runtime.getRuntime().addShutdownHook(new Thread() {
    8789            @Override
     
    8991                _out.println("Shutting down in a few moments..");
    9092                for(Router r : _routers) {
    91                         r.shutdown(-1);
     93                        r.shutdown(0);
    9294                }
    9395                try { Thread.sleep(1500); } catch (InterruptedException ie) {}
     
    9597            }
    9698        });
    97        
     99
    98100        for (int i = 0; i < nbrRouters; i++) {
    99101            Router router = new Router(buildRouterProps(i));
     
    101103            _routers.add(router);
    102104            _out.println("Router " + i + " was created");
     105            try { Thread.sleep(100); } catch (InterruptedException ie) {}
    103106        }
    104107       
    105108        for (int i = 0; i < nbrRouters; i++) {
    106                 Router r = _routers.get(i);
     109                final Router r = _routers.get(i);
    107110            long offset = r.getContext().random().nextLong(Router.CLOCK_FUDGE_FACTOR/2);
    108111            if (r.getContext().random().nextBoolean())
    109112                offset = 0 - offset;
    110113            r.getContext().clock().setOffset(offset, true);
    111             r.runRouter();
     114           
     115            /* Start the routers in separate threads since it takes some time. */
     116            (new Thread() {
     117                  public void run() {
     118                          r.runRouter();
     119                  }
     120            }).start();
     121            try { Thread.sleep(100); } catch (InterruptedException ie) {}
     122           
    112123            _out.println("Router " + i + " was started with time offset " + offset);
    113124        }
    114125        _out.println("All routers have been started");
    115126       
    116         /* Wait for routers to start services and generate keys.. */
    117         try { Thread.sleep(1000); } catch (InterruptedException ie) {}   
     127        /* Wait for routers to start services and generate keys
     128         * before doing the internal reseed. */
     129        int waitForRouters = (nbrRouters/10)*1000;
     130        _out.println("Waiting " + waitForRouters/1000 +  " seconds for routers to start" +
     131                     "before doing the internal reseed");
     132        try { Thread.sleep(waitForRouters); } catch (InterruptedException ie) {}   
    118133        internalReseed();
    119134       
     
    138153        Properties props = getRouterProps(id);
    139154        File f = new File(props.getProperty("router.configLocation"));
    140         f.getParentFile().mkdirs();
    141155        if (!f.exists()) {
     156                f.getParentFile().mkdirs();
    142157            try {
    143158                                DataHelper.storeProps(props, f);
     
    190205        Properties props = getClientProps();
    191206        File f = new File(rProps.getProperty("router.clientConfigFile"));
    192         f.getParentFile().mkdirs();
    193207        if (!f.exists()) {
     208                f.getParentFile().mkdirs();
    194209            try {
    195210                                DataHelper.storeProps(props, f);
Note: See TracChangeset for help on using the changeset viewer.