/*
* ServerKiller.java - Utility class for the installer
* :tabSize=8:indentSize=8:noTabs=false:
* :folding=explicit:collapseFolds=1:
*
* Copyright (C) 2009 Eric Le Lay
*
* this code is freely adapted from org/gjt/sp/jedit/jEdit.java
* Copyright (C) 1998, 2005 Slava Pestov
*
* 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 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package installer;
import java.io.*;
import java.net.*;
/**
* Utility class to check for a running jEdit server,
* and stop it.
* Useful on windows platform, where the jedit.jar archive
* is locked and can't be overwritten by the installer.
*
* NB: The server file must be in the standard location (i.e. $HOME/.jedit/server)
* for the server to be found.
* @version $Id$
*/
public class ServerKiller
{
/**
* try to contact a running instance of jEdit Server
* and ask it to close.
* @return true either if no server was detected, or the server was shut-down,
* false otherwise
*/
public static boolean quitjEditServer()
{
/* {{{ default server file location */
String settingsDirectory = System.getProperty("user.home");
File portFile;
File f = new File(settingsDirectory);
portFile = new File(f,".jedit/server");
/* }}} */
if(portFile.exists())
{
try
{
BufferedReader in = new BufferedReader(new FileReader(portFile));
String check = in.readLine();
if(!check.equals("b"))
{
System.out.println("Wrong port file format");
return false;
}
int port = Integer.parseInt(in.readLine());
int key = Integer.parseInt(in.readLine());
Socket socket = new Socket(InetAddress.getByName(null),port);
DataOutputStream out = new DataOutputStream(
socket.getOutputStream());
out.writeInt(key);
// we can't close the socket cleanly, because we want
// to wait for complete exit, and then it's too late.
// so the socket is closed when the JVM is shut down.
String script;
script = "jEdit.exit(null,true);\n";
out.writeUTF(script);
// block until its closed
try
{
socket.getInputStream().read();
}
catch(Exception e)
{
//should get an exception !
}
in.close();
out.close();
}
catch(FileNotFoundException fnfe)
{
//it exists : we checked that earlier !
}
catch(UnknownHostException uhe)
{
//localhost doesn't exist ?
}
catch(IOException ioe)
{
System.out.println("Exception while trying to connect to existing server:");
System.out.println(ioe);
System.out.println("Don't worry too much !");
return false; //warn the user
}
}
return true;
}
/**
* try to connect to any running server instance and close it.
* exit with an error code on failure, but not if no server was found.
*/
public static void main(String[] args)
{
boolean success = quitjEditServer();
if(!success)
{
System.exit(-1);
}
}
}
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|