/* * RomRaider Open-Source Tuning, Logging and Reflashing * Copyright (C) 2006-2012 RomRaider.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ 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 = 50001; 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(); } } }