From b6a8f02169ecea91936e81c297e8ce0f1b2f107b Mon Sep 17 00:00:00 2001
From: ulrich
Date: Tue, 23 Mar 2021 16:35:55 +0000
Subject: [PATCH] ...

---
 src/de/uhilger/avdirektor/handler/OMXPlayer.java |   67 +++++++++++++++++++--------------
 1 files changed, 38 insertions(+), 29 deletions(-)

diff --git a/src/de/uhilger/avdirektor/handler/OMXPlayer.java b/src/de/uhilger/avdirektor/handler/OMXPlayer.java
index d8f1f00..de16ca0 100644
--- a/src/de/uhilger/avdirektor/handler/OMXPlayer.java
+++ b/src/de/uhilger/avdirektor/handler/OMXPlayer.java
@@ -1,11 +1,5 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
 package de.uhilger.avdirektor.handler;
 
-import com.sun.net.httpserver.HttpExchange;
 import de.uhilger.avdirektor.App;
 import de.uhilger.avdirektor.MeldeThread;
 import de.uhilger.avdirektor.ProzessLauscher;
@@ -20,6 +14,12 @@
 import java.util.logging.Logger;
 
 /**
+ * Methoden zur Ausfuehrung des Programmes omxplayer des Raspberry Pi 
+ * sowie zum Senden von Kommandos an eine laufende Instanz des 
+ * omxplayer.
+ * 
+ * Die Klasse OMXPlayer stellt als abstrakte Basisklasse ihre Methoden 
+ * den Handler-Klassen zur Verfuegung.
  *
  * @author ulrich
  */
@@ -27,21 +27,23 @@
   
   private static final Logger logger = Logger.getLogger(OMXPlayer.class.getName());
   
-  
   /**
    * Einen Prozess zum Abspielen mit dem omxplayer starten
-   * @param t
    * @param urlStr  URL der Quelle, die abgespielt werden soll
    * @param token
    * @return Antwort des Servers
    */
-  public String abspielen(HttpExchange t, String urlStr, String token) {
-    return abspielenMitParametern(t, urlStr, null, token);
+  /*
+  public String abspielen(String urlStr, String token) {
+    return abspielenMitParametern(urlStr, null, token);
   }
+  */
   
-  public String abspielenMitRueckmeldung(HttpExchange t, String urlStr, String meldeUrlStr, String token) {
-    return abspielenMitParameternUndRueckmeldung(t, urlStr, null, meldeUrlStr, token);
+  /*
+  public String abspielenMitRueckmeldung(String urlStr, String meldeUrlStr, String token) {
+    return abspielenMitParameternUndRueckmeldung(urlStr, null, meldeUrlStr, token);
   }
+  */
   
   /**
    * Einen Prozess zum Abspielen mit dem omxplayer starten 
@@ -50,22 +52,24 @@
   <a href="https://github.com/huceke/omxplayer/blob/master/README.md"target="_blank">Aufstellung der Parameter</a>.Die Zeichenkette parameter enthaelt Eintraege wie z.B.
    * App.OPT_LOCAL_AUDIO oder App.OPT_HDMI_AUDIO.
  Mehrere Parameter werden mit App.BLANK getrennt.
-   * @param t
    * @param urlStr  der URL der Quelle, die abgespielt werden soll
    * @param parameter  die Parameter, die vom omxplayer angewendet werden sollen
    * @param token
    * @return Antwort des Servers
    */
-  public String abspielenMitParametern(HttpExchange t, String urlStr, String parameter, String token) {
-    return abspielenMitParameternUndRueckmeldung(t, urlStr, parameter, null, token);
+  /*
+  public String abspielenMitParametern(String urlStr, String parameter, String token) {
+    return abspielenMitParameternUndRueckmeldung(urlStr, parameter, null, token);
   }
+  */
   
-  public String abspielenMitParameternUndRueckmeldung(HttpExchange t, String urlStr, String parameter, String meldeUrlStr, String token) {
+  public String abspielen(String urlStr, String parameter, String meldeUrlStr, String token) {
     String antwort;// = null;
     try {
-      Object o = t.getAttribute(App.PI_PLAYER);
+      //Object o = t.getAttribute(App.PI_PLAYER);
+      Process o = App.getPlayerProcess();
       if(o != null) {
-        tilgen(t);        
+        tilgen();        
       }
       StringBuilder kommando = new StringBuilder("omxplayer ");
       if(parameter != null) {
@@ -104,6 +108,8 @@
         mt.start();
       }
       //servletContext.setAttribute(App.PI_PLAYER, player_process);
+      //t.setAttribute(App.PI_PLAYER, player_process);
+      App.setPlayerProcess(player_process);
       //Runtime.getRuntime().exec("killall dbus-daemon");
       antwort = "Abspielen gestartet, url: " + urlStr;
     }
@@ -124,19 +130,20 @@
  entfernen und gibt so das Objekt wieder frei fuer die Ausfuehrung 
  weiterer Kommandos.
    *
-   * @param t 
    * @return die Antwort des Servers
    */
-  public String tilgen(HttpExchange t) {
+  public String tilgen() {
     String antwort; // = null;
     try {
-      Object o = t.getAttribute(App.PI_PLAYER);
+      //Object o = t.getAttribute(App.PI_PLAYER);
+      Process o = App.getPlayerProcess();
       if(o == null) {
-        t.setAttribute(App.PI_PLAYER, null);
+        //t.setAttribute(App.PI_PLAYER, null);
+        App.setPlayerProcess(null);
         // t.removeAttribute(App.PI_PLAYER);
         antwort = "Es ist kein Player zum Beenden vorhanden, aber der Servlet-Kontext wurde bereinigt.";
       } else {
-        kommando(t, App.CMD_STOP);
+        kommando(App.CMD_STOP);
         //t.removeAttribute(PI_PLAYER);
         antwort = "Player gestoppt, Kontext bereinigt.";
       }
@@ -150,30 +157,32 @@
   
   /**
    * Dem laufenden Abspielprozess ein Kommando uebermitteln
-   * @param t
    * @param k  das Kommando laut 
    * <a href="https://github.com/huceke/omxplayer/blob/master/README.md" target="_blank">Liste der Kommandos</a>
    * @return die Antwort des Servers
    */
-  public String kommando(HttpExchange t, String k) {
+  public String kommando(String k) {
     String antwort; // = null;
     try {
-      Object o = t.getAttribute(App.PI_PLAYER);
+      //Object o = t.getAttribute(App.PI_PLAYER);
+      Process o = App.getPlayerProcess();
       if(o == null) {
+        App.setPlayerProcess(null);
         //servletContext.removeAttribute(PI_PLAYER);
-        t.setAttribute(App.PI_PLAYER, null);
+        //t.setAttribute(App.PI_PLAYER, null);
         antwort = "Es wird nichts abgespielt dem ein Kommando gesendet werden kann.";
       } else {
-        Process player_process = (Process) o;
+        Process player_process = o;
         OutputStream os = player_process.getOutputStream();
         Writer out = new BufferedWriter(new OutputStreamWriter(os));
         out.write(k);
         out.flush();
         if(k.equals(App.CMD_STOP)) {
           out.close();
+          App.setPlayerProcess(null);
           //player_process.destroy();
           //player_process = null;
-          t.setAttribute(App.PI_PLAYER, null);
+          //t.setAttribute(App.PI_PLAYER, null);
           //servletContext.removeAttribute(PI_PLAYER);
         }
         antwort = "Kommando '" + k + "' ausgefuehrt.";

--
Gitblit v1.9.3