From 293ff76ae9ca9f7c169cf1dabdeaaddce724a9b3 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Mon, 30 Mar 2020 13:28:22 +0100 Subject: [PATCH] Move the wait for client manager in the background thread, hopefully fixes #42 --- .../main/java/com/muwire/webui/MWStarter.java | 30 ++++++++++--------- .../java/com/muwire/webui/MuWireClient.java | 4 ++- .../java/com/muwire/webui/MuWireServlet.java | 13 ++------ 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/webui/src/main/java/com/muwire/webui/MWStarter.java b/webui/src/main/java/com/muwire/webui/MWStarter.java index b37a4269..35b7c182 100644 --- a/webui/src/main/java/com/muwire/webui/MWStarter.java +++ b/webui/src/main/java/com/muwire/webui/MWStarter.java @@ -1,29 +1,31 @@ package com.muwire.webui; -import java.io.File; - import com.muwire.core.Core; -import com.muwire.core.MuWireSettings; import com.muwire.core.UILoadedEvent; +import net.i2p.I2PAppContext; +import net.i2p.router.RouterContext; + class MWStarter extends Thread { - private final MuWireSettings settings; - private final File home; - private final String version; - private final MuWireClient client; + private final Core core; - MWStarter(MuWireSettings settings, File home, String version, MuWireClient client) { - this.settings = settings; - this.home = home; - this.version = version; - this.client = client; + MWStarter(Core core) { + this.core = core; setName("MW starter"); setDaemon(true); } public void run() { - Core core = new Core(settings, home, version); - client.setCore(core); + RouterContext ctx = (RouterContext) I2PAppContext.getGlobalContext(); + + while(!ctx.clientManager().isAlive()) { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + core.startServices(); core.getEventBus().publish(new UILoadedEvent()); } diff --git a/webui/src/main/java/com/muwire/webui/MuWireClient.java b/webui/src/main/java/com/muwire/webui/MuWireClient.java index 8f79e628..9a67ee96 100644 --- a/webui/src/main/java/com/muwire/webui/MuWireClient.java +++ b/webui/src/main/java/com/muwire/webui/MuWireClient.java @@ -92,7 +92,9 @@ public class MuWireClient { reader.close(); MuWireSettings settings = new MuWireSettings(props); - MWStarter starter = new MWStarter(settings, new File(home), version, this); + Core core = new Core(settings, new File(home), version); + setCore(core); + MWStarter starter = new MWStarter(core); starter.start(); } diff --git a/webui/src/main/java/com/muwire/webui/MuWireServlet.java b/webui/src/main/java/com/muwire/webui/MuWireServlet.java index 41b5f20b..9eb231d8 100644 --- a/webui/src/main/java/com/muwire/webui/MuWireServlet.java +++ b/webui/src/main/java/com/muwire/webui/MuWireServlet.java @@ -21,17 +21,8 @@ public class MuWireServlet extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { super.init(config); - RouterContext ctx = (RouterContext) I2PAppContext.getGlobalContext(); - - - while(!ctx.clientManager().isAlive()) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - throw new ServletException(e); - } - } - + + RouterContext ctx = (RouterContext) I2PAppContext.getGlobalContext(); String home = ctx.getConfigDir()+File.separator+"plugins"+File.separator+"MuWire"; version = config.getInitParameter("version");