From de686ec446b786a7f30089da0b900ce634922737 Mon Sep 17 00:00:00 2001 From: ulrich Date: Sat, 27 Mar 2021 17:44:54 +0000 Subject: [PATCH] Kommentare ergaenzt --- src/de/uhilger/minsrv/handler/StopServerHandler.java | 71 +++++++++++++++++++++++------------ 1 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/de/uhilger/minsrv/handler/StopServerHandler.java b/src/de/uhilger/minsrv/handler/StopServerHandler.java index fb2ef4e..1d21ae0 100644 --- a/src/de/uhilger/minsrv/handler/StopServerHandler.java +++ b/src/de/uhilger/minsrv/handler/StopServerHandler.java @@ -1,21 +1,20 @@ /* - mc2 - Mediacenter neu - Copyright (C) 2021 Ulrich Hilger + mini-server - Ein minimalistischer HTTP-Server + Copyright (C) 2021 Ulrich Hilger - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. + 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 Affero General Public License for more details. - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. -*/ - + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + */ package de.uhilger.minsrv.handler; import com.sun.net.httpserver.HttpExchange; @@ -23,27 +22,51 @@ import de.uhilger.minsrv.App; import java.io.IOException; import java.io.OutputStream; +import java.util.Timer; +import java.util.TimerTask; import java.util.logging.Logger; /** + * Ein HTTP-Handler zum Stoppen der Anwendung * - * @author ulrich + * @author Ulrich Hilger */ public class StopServerHandler implements HttpHandler { + /** + * Den Server geordnet herunterfahren und + * dann die Anwendung beenden. + * + * @param e das Objekt mit Methoden zur Untersuchung der Anfrage sowie zum + * Anfertigen und Senden der Antwort + * @throws IOException falls etwas schief geht entsteht dieser Fehler + */ @Override - public void handle(HttpExchange exchange) throws IOException { - Logger.getLogger(StopServerHandler.class.getName()).info(exchange.getRequestURI().toString()); + public void handle(HttpExchange e) throws IOException { + Logger.getLogger(StopServerHandler.class.getName()).info(e.getRequestURI().toString()); String response = "Server stopped"; - exchange.sendResponseHeaders(200, response.length()); - OutputStream os = exchange.getResponseBody(); + e.sendResponseHeaders(200, response.length()); + OutputStream os = e.getResponseBody(); os.write(response.getBytes()); os.flush(); os.close(); - Logger.getLogger(StopServerHandler.class.getName()).info("stopping app."); - App.stop(); - //exchange.getHttpContext().getServer().stop(5); + Logger.getLogger(StopServerHandler.class.getName()).info("stopping server."); + e.getHttpContext().getServer().stop(1); + Timer timer = new Timer(); + timer.schedule(new AppStopper(), 2000); } - - + + /** + * Die Klasse AppStopper ermöglicht das asnychrone bzw. + * zeitgesteuerte Stoppen der Anwendung. + */ + class AppStopper extends TimerTask { + + @Override + public void run() { + Logger.getLogger(StopServerHandler.class.getName()).info("Mini-Server beendet."); + App.stop(); + } + } + } -- Gitblit v1.9.3