svn commit: r1470 - in logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse: reciever views

Author: seb Date: Wed Mar 28 11:43:27 2007 New Revision: 1470 Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SocketNode.java logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Log: Better management of the socket server Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java ============================================================================== --- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java (original) +++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SimpleSocketServer.java Wed Mar 28 11:43:27 2007 @@ -22,6 +22,7 @@ private int port = 4321; private ServerSocket serverSocket; + private boolean stop = false; public SimpleSocketServer() { } @@ -41,6 +42,7 @@ public void restart() { try { serverSocket.close(); + stop = false; startAndLoop(); } catch (IOException e) { PluginLogger.logError(e); @@ -48,12 +50,14 @@ } private void startAndLoop() { + stop = false; try { serverSocket = new ServerSocket(port); - while (true) { + while (!stop) { Socket socket = serverSocket.accept(); new Thread(new SocketNode(socket)).start(); } + serverSocket.close(); } catch (java.net.BindException e) { String errorMessage = "The port " + port + " is already in use."; PluginLogger.logError(errorMessage, e); @@ -80,7 +84,7 @@ } } - public boolean isPortFree() { + public static boolean isPortFree(Integer port) { try { Socket s = new Socket("localhost", port); return !s.isConnected(); @@ -88,5 +92,9 @@ return true; } } + + public void stop() { + stop = true; + } } Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SocketNode.java ============================================================================== --- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SocketNode.java (original) +++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/reciever/SocketNode.java Wed Mar 28 11:43:27 2007 @@ -23,17 +23,22 @@ Socket socket; ObjectInputStream ois; + boolean oisInError = false; public SocketNode(Socket socket) { this.socket = socket; try { ois = new ObjectInputStream(new BufferedInputStream(socket.getInputStream())); } catch (Exception e) { - + oisInError = true; } } public void run() { + if (oisInError) { + return; + } + LoggingEvent event; try { Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java ============================================================================== --- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java (original) +++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Wed Mar 28 11:43:27 2007 @@ -1,5 +1,6 @@ package ch.qos.logback.eclipse.views; +import java.net.Socket; import java.net.URL; import org.eclipse.jface.action.Action; @@ -181,14 +182,6 @@ } - private void launchSocketServer(Integer port) { - server = new SimpleSocketServer(); - if (port != null) { - server.setPort(port.intValue()); - } - startServerThread(server); - } - @Override public void setFocus() { viewer.getControl().setFocus(); @@ -199,6 +192,7 @@ super.dispose(); provider.dispose(); labelProvider.dispose(); + server.stop(); } public int getServerPort() { @@ -214,8 +208,25 @@ viewer.refresh(); } - public void updateServerPort(Integer serverPort) { - launchSocketServer(serverPort); + public void updateServerPort(Integer port) { + if (port != null) { + if (SimpleSocketServer.isPortFree(port)) { + server.stop(); + openAndCloseClientToServer(); + serverThread.interrupt(); + serverThread = null; + server.setPort(port); + startServerThread(server); + } + } + } + + private void openAndCloseClientToServer() { + try { + Socket s = new Socket("localhost", server.getPort()); + } catch (Exception e) { + //do nothing + } } private void initServer() { @@ -227,7 +238,7 @@ } private void startServerThread(SimpleSocketServer server) { - if (server.isPortFree()) { + if (SimpleSocketServer.isPortFree(server.getPort())) { serverThread = new Thread(server); serverThread.start(); PluginLogger.logInfo("Now listening on port: " + server.getPort());
participants (1)
-
noreply.seb@qos.ch