mirror of https://github.com/rusefi/RomRaider.git
cleanup
git-svn-id: https://svn2.assembla.com/svn/romraider/trunk@76 38686702-15cf-42e4-a595-3071df8bf5ea
This commit is contained in:
parent
49d58b1807
commit
ef92cb92c4
|
@ -22,13 +22,19 @@
|
|||
package com.romraider;
|
||||
|
||||
import static com.romraider.ECUEditorManager.getECUEditor;
|
||||
import static com.romraider.Version.PRODUCT_NAME;
|
||||
import static com.romraider.logger.ecu.EcuLogger.startLogger;
|
||||
import static com.romraider.swing.LookAndFeelManager.initLookAndFeel;
|
||||
import static com.romraider.util.LogManager.initDebugLogging;
|
||||
import static com.romraider.util.RomServer.isRunning;
|
||||
import static com.romraider.util.RomServer.sendRomToOpenInstance;
|
||||
import static com.romraider.util.RomServer.waitForRom;
|
||||
import com.romraider.util.SettingsManager;
|
||||
import com.romraider.util.SettingsManagerImpl;
|
||||
import org.apache.log4j.Logger;
|
||||
import static org.apache.log4j.Logger.getLogger;
|
||||
import static javax.swing.JOptionPane.INFORMATION_MESSAGE;
|
||||
import static javax.swing.JOptionPane.showMessageDialog;
|
||||
import static javax.swing.SwingUtilities.invokeLater;
|
||||
import static javax.swing.WindowConstants.EXIT_ON_CLOSE;
|
||||
import java.io.File;
|
||||
|
@ -51,9 +57,19 @@ public class ECUExec {
|
|||
// set look and feel
|
||||
initLookAndFeel();
|
||||
|
||||
// open editor or logger
|
||||
if (containsLoggerArg(args)) openLogger();
|
||||
else openEditor(args);
|
||||
// check if already running
|
||||
if (isRunning()) {
|
||||
if (args.length == 0 || containsLoggerArg(args)) showAlreadyRunningMessage();
|
||||
else sendRomToOpenInstance(args[0]);
|
||||
} else {
|
||||
// open editor or logger
|
||||
if (containsLoggerArg(args)) openLogger();
|
||||
else openEditor(args);
|
||||
}
|
||||
}
|
||||
|
||||
private static void showAlreadyRunningMessage() {
|
||||
showMessageDialog(null, PRODUCT_NAME + " is already running.", PRODUCT_NAME, INFORMATION_MESSAGE);
|
||||
}
|
||||
|
||||
private static boolean containsLoggerArg(String[] args) {
|
||||
|
@ -67,11 +83,6 @@ public class ECUExec {
|
|||
startLogger(EXIT_ON_CLOSE, settings);
|
||||
}
|
||||
|
||||
private static void openEditor(String[] args) {
|
||||
ECUEditor editor = getECUEditor();
|
||||
if (args.length > 0) openRom(editor, args[0]);
|
||||
}
|
||||
|
||||
private static void openRom(final ECUEditor editor, final String rom) {
|
||||
invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
|
@ -84,4 +95,21 @@ public class ECUExec {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void openEditor(String[] args) {
|
||||
ECUEditor editor = getECUEditor();
|
||||
if (args.length > 0) openRom(editor, args[0]);
|
||||
startRomListener(editor);
|
||||
}
|
||||
|
||||
private static void startRomListener(ECUEditor editor) {
|
||||
try {
|
||||
while (true) {
|
||||
String rom = waitForRom();
|
||||
openRom(editor, rom);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
LOGGER.error("Error occurred", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
package com.romraider.util;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import static org.apache.log4j.Logger.getLogger;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.Socket;
|
||||
|
||||
public final class RomServer {
|
||||
private static final Logger LOGGER = getLogger(RomServer.class);
|
||||
private static final String HOST = "localhost";
|
||||
private static final int PORT = 54321;
|
||||
|
||||
public static boolean isRunning() {
|
||||
try {
|
||||
ServerSocket sock = new ServerSocket(PORT);
|
||||
sock.close();
|
||||
return false;
|
||||
} catch (Exception ex) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public static String waitForRom() throws IOException {
|
||||
ServerSocket sock = new ServerSocket(PORT);
|
||||
try {
|
||||
return waitForRom(sock);
|
||||
} finally {
|
||||
sock.close();
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendRomToOpenInstance(String rom) {
|
||||
try {
|
||||
Socket socket = new Socket(HOST, PORT);
|
||||
OutputStream os = socket.getOutputStream();
|
||||
try {
|
||||
write(os, rom);
|
||||
} finally {
|
||||
socket.close();
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
LOGGER.error("Error occurred", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static void write(OutputStream os, String rom) {
|
||||
PrintWriter pw = new PrintWriter(os, true);
|
||||
try {
|
||||
pw.println(rom);
|
||||
} finally {
|
||||
pw.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static String waitForRom(ServerSocket sock) throws IOException {
|
||||
Socket client = sock.accept();
|
||||
try {
|
||||
return getRom(client);
|
||||
} finally {
|
||||
client.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static String getRom(Socket client) throws IOException {
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
|
||||
try {
|
||||
return br.readLine();
|
||||
} finally {
|
||||
br.close();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue