From ee6a3e9057bff6e30e6deff43100bcf2bf9bfba5 Mon Sep 17 00:00:00 2001
From: ulrich
Date: Sat, 27 Mar 2021 14:32:52 +0000
Subject: [PATCH] Anpassungen am FielHandler, Stop-Ablauf verfeinert

---
 src/de/uhilger/minsrv/handler/StopServerHandler.java |   59 +++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 35 insertions(+), 24 deletions(-)

diff --git a/src/de/uhilger/minsrv/handler/StopServerHandler.java b/src/de/uhilger/minsrv/handler/StopServerHandler.java
index fb2ef4e..400b0d2 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,39 @@
 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 {
 
   @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);
   }
-  
-  
+
+  class AppStopper extends TimerTask {
+
+    @Override
+    public void run() {
+      Logger.getLogger(StopServerHandler.class.getName()).info("Mini-Server beendet.");
+      App.stop();
+    }
+  }
+
 }

--
Gitblit v1.9.3