From: Debayan Sutradhar Date: Mon, 28 Jun 2021 23:44:21 +0530 Subject: Better start at boot --- Better start at boot --- --- 'a/src/main/java/com/stream_pi/server/connection/MainServer.java' +++ b/src/main/java/com/stream_pi/server/connection/MainServer.java @@ -12,13 +12,13 @@ import java.util.Enumeration; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; -public class MainServer extends Thread { +public class MainServer extends Thread +{ private ServerListener serverListener; private Logger logger = Logger.getLogger(MainServer.class.getName()); private int port; private ServerSocket serverSocket = null; - //private Server server; private AtomicBoolean stop = new AtomicBoolean(false); @@ -42,23 +42,20 @@ public class MainServer extends Thread { public void stopListeningForConnections() { - - /*if(server !=null) - { - if(!server.isShutdown()) - server.shutdown(); - }*/ - try { logger.info("Stopping listening for connections ..."); if(serverSocket!=null) + { if(!serverSocket.isClosed()) { stop.set(true); serverSocket.close(); } - } catch (IOException e) { + } + } + catch (IOException e) + { e.printStackTrace(); } finally { @@ -67,13 +64,15 @@ public class MainServer extends Thread { } @Override - public void run() { + public void run() + { logger.warning("Starting main server on port "+port+" ..."); - try { + try + { logger.info("Starting server on port "+port+" ..."); serverSocket = new ServerSocket(port); - setupStageTitle(true); + setupStageTitle(); while(!stop.get()) { Socket s = serverSocket.accept(); @@ -81,7 +80,6 @@ public class MainServer extends Thread { logger.info("New client connected ("+s.getRemoteSocketAddress()+") !"); } - } catch (SocketException e) { @@ -89,7 +87,7 @@ public class MainServer extends Thread { { logger.info("Main Server stopped accepting calls ..."); - setupStageTitle(false); + serverListener.onServerStartFailure(); exceptionAndAlertHandler.handleMinorException(new MinorException("Sorry!","Server could not be started at "+port+".\n" + "This could be due to another process or another instance of Stream-Pi Server using the same port. \n\n" + @@ -105,38 +103,31 @@ public class MainServer extends Thread { } } - private void setupStageTitle(boolean isSuccess) + private void setupStageTitle() { try { - if(isSuccess) - { - StringBuilder ips = new StringBuilder(); + StringBuilder ips = new StringBuilder(); - Enumeration e = NetworkInterface.getNetworkInterfaces(); - while(e.hasMoreElements()) + Enumeration e = NetworkInterface.getNetworkInterfaces(); + while(e.hasMoreElements()) + { + NetworkInterface n = e.nextElement(); + Enumeration ee = n.getInetAddresses(); + while (ee.hasMoreElements()) { - NetworkInterface n = e.nextElement(); - Enumeration ee = n.getInetAddresses(); - while (ee.hasMoreElements()) + InetAddress i = ee.nextElement(); + String hostAddress = i.getHostAddress(); + if(i instanceof Inet4Address) { - InetAddress i = ee.nextElement(); - String hostAddress = i.getHostAddress(); - if(i instanceof Inet4Address) - { - ips.append(hostAddress); - if(e.hasMoreElements()) - ips.append(" / "); - } + ips.append(hostAddress); + if(e.hasMoreElements()) + ips.append(" / "); } } - - Platform.runLater(()-> serverListener.getStage().setTitle("Stream-Pi Server - IP(s): "+ips+" | Port: "+ port)); - } - else - { - Platform.runLater(()-> serverListener.getStage().setTitle("Stream-Pi Server - Offline")); } + + Platform.runLater(()-> serverListener.getStage().setTitle("Stream-Pi Server - IP(s): "+ips+" | Port: "+ port)); } catch (Exception e) { --- 'a/src/main/java/com/stream_pi/server/controller/Controller.java' +++ b/src/main/java/com/stream_pi/server/controller/Controller.java @@ -140,6 +140,14 @@ public class Controller extends Base imp } @Override + public void onServerStartFailure() + { + Platform.runLater(()-> getStage().setTitle("Stream-Pi Server - Offline")); + + disableTrayIcon = true; + } + + @Override public void othInit() { try @@ -246,12 +254,13 @@ public class Controller extends Base imp closeSettingsAnimation = createCloseSettingsAnimation(settingsNode, dashboardNode); } + private boolean disableTrayIcon = false; public void onCloseRequest(WindowEvent event) { try { if(Config.getInstance().getMinimiseToSystemTrayOnClose() && - SystemTray.isSupported()) + SystemTray.isSupported() && !disableTrayIcon) { minimiseApp(); event.consume(); --- 'a/src/main/java/com/stream_pi/server/controller/ServerListener.java' +++ b/src/main/java/com/stream_pi/server/controller/ServerListener.java @@ -33,4 +33,5 @@ public interface ServerListener void factoryReset(); void initSoundOnActionClicked(); + void onServerStartFailure(); } --- 'a/src/main/java/com/stream_pi/server/window/settings/GeneralSettings.java' +++ b/src/main/java/com/stream_pi/server/window/settings/GeneralSettings.java @@ -312,25 +312,25 @@ public class GeneralSettings extends VBo if(config.getStartOnBoot() != startOnBoot) { - if(StartupFlags.RUNNER_FILE_NAME == null) + StartAtBoot startAtBoot = new StartAtBoot(PlatformType.SERVER, ServerInfo.getInstance().getPlatform()); + if(startOnBoot) { - new StreamPiAlert("Uh Oh", "No Runner File Name Specified as startup arguments. Cant set run at boot.", StreamPiAlertType.ERROR).show(); - startOnBoot = false; - } - else - { - StartAtBoot startAtBoot = new StartAtBoot(PlatformType.SERVER, ServerInfo.getInstance().getPlatform()); - if(startOnBoot) + try { - startAtBoot.create(new File(StartupFlags.RUNNER_FILE_NAME)); + startAtBoot.create(StartupFlags.RUNNER_FILE_NAME); } - else + catch (MinorException e) { - boolean result = startAtBoot.delete(); - if(!result) - new StreamPiAlert("Uh Oh!", "Unable to delete starter file", StreamPiAlertType.ERROR).show(); + exceptionAndAlertHandler.handleMinorException(e); + startOnBoot = false; } } + else + { + boolean result = startAtBoot.delete(); + if(!result) + new StreamPiAlert("Uh Oh!", "Unable to delete starter file", StreamPiAlertType.ERROR).show(); + } } if(minimizeToSystemTrayOnClose)