Search in sources :

Example 1 with ModuleRunner

use of com.radixdlt.modules.ModuleRunner in project radixdlt by radixdlt.

the class Radix method start.

public static void start(RuntimeProperties properties) {
    long start = System.currentTimeMillis();
    var injector = Guice.createInjector(new RadixNodeModule(properties));
    final Map<String, ModuleRunner> moduleRunners = injector.getInstance(Key.get(new TypeLiteral<Map<String, ModuleRunner>>() {
    }));
    final var p2pNetworkRunner = moduleRunners.get(Runners.P2P_NETWORK);
    p2pNetworkRunner.start();
    final var systemInfoRunner = moduleRunners.get(Runners.SYSTEM_INFO);
    systemInfoRunner.start();
    final var syncRunner = moduleRunners.get(Runners.SYNC);
    syncRunner.start();
    final var mempoolReceiverRunner = moduleRunners.get(Runners.MEMPOOL);
    mempoolReceiverRunner.start();
    final var peerServer = injector.getInstance(PeerServerBootstrap.class);
    try {
        peerServer.start();
    } catch (InterruptedException e) {
        log.error("Cannot start p2p server", e);
    }
    final var undertow = injector.getInstance(Undertow.class);
    undertow.start();
    final var consensusRunner = moduleRunners.get(Runners.CONSENSUS);
    consensusRunner.start();
    final BFTNode self = injector.getInstance(Key.get(BFTNode.class, Self.class));
    long finish = System.currentTimeMillis();
    var systemCounters = injector.getInstance(SystemCounters.class);
    systemCounters.set(SystemCounters.CounterType.STARTUP_TIME_MS, finish - start);
    Runtime.getRuntime().addShutdownHook(new Thread(() -> shutdown(injector)));
    log.info("Node '{}' started successfully in {} seconds", self, (finish - start) / 1000);
}
Also used : BFTNode(com.radixdlt.hotstuff.bft.BFTNode) TypeLiteral(com.google.inject.TypeLiteral) ModuleRunner(com.radixdlt.modules.ModuleRunner) RadixNodeModule(com.radixdlt.RadixNodeModule) Self(com.radixdlt.hotstuff.bft.Self)

Aggregations

TypeLiteral (com.google.inject.TypeLiteral)1 RadixNodeModule (com.radixdlt.RadixNodeModule)1 BFTNode (com.radixdlt.hotstuff.bft.BFTNode)1 Self (com.radixdlt.hotstuff.bft.Self)1 ModuleRunner (com.radixdlt.modules.ModuleRunner)1