mplayer4anime/src/main/java/mplayer4anime/IPC/SingleInstanceHandler.java

50 lines
1.7 KiB
Java

package mplayer4anime.IPC;
import mplayer4anime.Controller;
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
// TODO: Rewrite and remove. Or just remove.
public class SingleInstanceHandler implements Runnable{
private ServerSocket servSock;
public SingleInstanceHandler(Controller mainCntrl, String argument){
int PORT = 65042;
// Creating client server socket;
try {
servSock = new ServerSocket(PORT, 10, InetAddress.getLocalHost());
Thread ssp = new Thread(new ServerSocketProvider(mainCntrl, servSock));
ssp.start();
} catch (IOException e) {
if (argument != null){
// Creating client socket;
try {
Socket clientSocket = new Socket(InetAddress.getLocalHost(), PORT);
OutputStream outStream = clientSocket.getOutputStream();
OutputStreamWriter outStreamWriter = new OutputStreamWriter(outStream);
outStreamWriter.write(argument + "\n");
outStreamWriter.flush();
outStream.close();
clientSocket.close();
} catch (IOException ex){
System.out.println("Internal issue: unable to create client socket.");
}
}
else
System.out.println("Application is already running.");
System.exit(0);
}
}
@Override
public void run() {
while (! Thread.currentThread().isInterrupted());
try {
servSock.close();
} catch (IOException ignore) {}
}
}