mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-10-02 18:17:27 +13:00
Add startup connection timeout
This commit is contained in:
parent
67b2a7957f
commit
ba843e8b13
2 changed files with 22 additions and 23 deletions
|
@ -8,6 +8,7 @@ import io.xpipe.app.issue.LogErrorHandler;
|
||||||
import io.xpipe.app.issue.TrackEvent;
|
import io.xpipe.app.issue.TrackEvent;
|
||||||
import io.xpipe.app.prefs.AppPrefs;
|
import io.xpipe.app.prefs.AppPrefs;
|
||||||
import io.xpipe.app.util.ThreadHelper;
|
import io.xpipe.app.util.ThreadHelper;
|
||||||
|
import io.xpipe.beacon.BeaconException;
|
||||||
import io.xpipe.beacon.BeaconServer;
|
import io.xpipe.beacon.BeaconServer;
|
||||||
import io.xpipe.beacon.exchange.FocusExchange;
|
import io.xpipe.beacon.exchange.FocusExchange;
|
||||||
import io.xpipe.beacon.exchange.OpenExchange;
|
import io.xpipe.beacon.exchange.OpenExchange;
|
||||||
|
@ -40,7 +41,7 @@ public class LauncherCommand implements Callable<Integer> {
|
||||||
final List<String> inputs = List.of();
|
final List<String> inputs = List.of();
|
||||||
|
|
||||||
public static void runLauncher(String[] args) {
|
public static void runLauncher(String[] args) {
|
||||||
event("Launcher received commands: " + Arrays.asList(args));
|
TrackEvent.builder().category("launcher").type("debug").message("Launcher received commands: " + Arrays.asList(args)).handle();
|
||||||
|
|
||||||
var cmd = new CommandLine(new LauncherCommand());
|
var cmd = new CommandLine(new LauncherCommand());
|
||||||
cmd.setExecutionExceptionHandler((ex, commandLine, parseResult) -> {
|
cmd.setExecutionExceptionHandler((ex, commandLine, parseResult) -> {
|
||||||
|
@ -66,26 +67,19 @@ public class LauncherCommand implements Callable<Integer> {
|
||||||
cmd.execute(args);
|
cmd.execute(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static TrackEvent.TrackEventBuilder event(String msg) {
|
|
||||||
return TrackEvent.builder().category("launcher").type("debug").message(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkStart() {
|
private void checkStart() {
|
||||||
|
try {
|
||||||
if (BeaconServer.isRunning()) {
|
if (BeaconServer.isRunning()) {
|
||||||
try (var con = new LauncherConnection()) {
|
try (var con = new LauncherConnection()) {
|
||||||
con.constructSocket();
|
con.constructSocket();
|
||||||
con.performSimpleExchange(
|
con.performSimpleExchange(FocusExchange.Request.builder().mode(getEffectiveMode()).build());
|
||||||
FocusExchange.Request.builder().mode(getEffectiveMode()).build());
|
|
||||||
if (!inputs.isEmpty()) {
|
if (!inputs.isEmpty()) {
|
||||||
con.performSimpleExchange(
|
con.performSimpleExchange(OpenExchange.Request.builder().arguments(inputs).build());
|
||||||
OpenExchange.Request.builder().arguments(inputs).build());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OsType.getLocal().equals(OsType.MACOS)) {
|
if (OsType.getLocal().equals(OsType.MACOS)) {
|
||||||
Desktop.getDesktop().setOpenURIHandler(e -> {
|
Desktop.getDesktop().setOpenURIHandler(e -> {
|
||||||
con.performSimpleExchange(OpenExchange.Request.builder()
|
con.performSimpleExchange(OpenExchange.Request.builder().arguments(List.of(e.getURI().toString())).build());
|
||||||
.arguments(List.of(e.getURI().toString()))
|
|
||||||
.build());
|
|
||||||
});
|
});
|
||||||
ThreadHelper.sleep(1000);
|
ThreadHelper.sleep(1000);
|
||||||
}
|
}
|
||||||
|
@ -93,6 +87,10 @@ public class LauncherCommand implements Callable<Integer> {
|
||||||
TrackEvent.info("Another instance is already running on this port. Quitting ...");
|
TrackEvent.info("Another instance is already running on this port. Quitting ...");
|
||||||
OperationMode.halt(1);
|
OperationMode.halt(1);
|
||||||
}
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ErrorEvent.fromThrowable(ex).description("Unable to connect to existing running daemon instance as it did not respond." +
|
||||||
|
" Either try to kill the process xpiped manually or use the command xpipe daemon stop --force if the CLI is in your path.").handle();
|
||||||
|
}
|
||||||
|
|
||||||
// Even in case we are unable to reach another beacon server
|
// Even in case we are unable to reach another beacon server
|
||||||
// there might be another instance running, for example
|
// there might be another instance running, for example
|
||||||
|
|
|
@ -46,6 +46,7 @@ public class BeaconClient implements AutoCloseable {
|
||||||
|
|
||||||
public static BeaconClient connect(ClientInformation information) throws Exception {
|
public static BeaconClient connect(ClientInformation information) throws Exception {
|
||||||
var socket = new Socket(InetAddress.getLoopbackAddress(), BeaconConfig.getUsedPort());
|
var socket = new Socket(InetAddress.getLoopbackAddress(), BeaconConfig.getUsedPort());
|
||||||
|
socket.setSoTimeout(5000);
|
||||||
var client = new BeaconClient(socket, socket.getInputStream(), socket.getOutputStream());
|
var client = new BeaconClient(socket, socket.getInputStream(), socket.getOutputStream());
|
||||||
client.sendObject(JacksonMapper.getDefault().valueToTree(information));
|
client.sendObject(JacksonMapper.getDefault().valueToTree(information));
|
||||||
return client;
|
return client;
|
||||||
|
|
Loading…
Reference in a new issue