From cd15571f1325609b0ab5ecb7853d08669b3c41e3 Mon Sep 17 00:00:00 2001 From: ulrich Date: Mon, 22 Mar 2021 23:28:54 +0000 Subject: [PATCH] ThreadPool hinzugefuegt --- src/de/uhilger/avdirektor/handler/OMXPlayer.java | 138 +++++++++++++++++---------------------------- 1 files changed, 53 insertions(+), 85 deletions(-) diff --git a/src/de/uhilger/avdirektor/handler/OMXPlayer.java b/src/de/uhilger/avdirektor/handler/OMXPlayer.java index 252c8ce..33cb7bc 100644 --- a/src/de/uhilger/avdirektor/handler/OMXPlayer.java +++ b/src/de/uhilger/avdirektor/handler/OMXPlayer.java @@ -1,8 +1,3 @@ -/* - * 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; @@ -23,6 +18,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 */ @@ -30,85 +31,8 @@ private static final Logger logger = Logger.getLogger(OMXPlayer.class.getName()); - protected String getParam(Map map, String key) { - Object o = map.get(key); - if(o != null) { - return o.toString(); - } else { - return null; - } - } - - /* - - bei etwas wie - http://rpi4-az:9090/avd/play?t=/Filme/S/sound_city.m4v&p=--timeout=60%20--threshold=60 - - sind = nicht nur nach dem Query-Parameter sondern auch in dessen Wert - - also erstmal nach & zerlegen: - t=/Filme/S/sound_city.m4v - p=--timeout=60%20--threshold=60 - - dann die Position beim ersten = von links abschneiden - - */ - protected Map getQueryMap(HttpExchange t) { - HashMap map = new HashMap(); - String query = t.getRequestURI().getQuery(); - if(query != null && query.length() > 0) { - String qParts[] = query.split("&"); - for(String qPart : qParts) { - logger.finer("qPart: " + qPart); - String pParts[] = qPart.split("="); - map.put(pParts[0], pParts[1]); - logger.finer("pParts[0]: " + pParts[0] + ", pParts[1]: " + pParts[1]); - /* - if(qPart.contains(" ")) { - String pParts[] = qPart.split(" "); - for(String pPart : pParts) { - String ppParts[] = pPart.split("="); - map.put(ppParts[0], ppParts[1]); - logger.finer("ppParts[0]: " + ppParts[0] + ", ppParts[1]: " + ppParts[1]); - } - } else { - String pParts[] = qPart.split("="); - map.put(pParts[0], pParts[1]); - logger.finer("pParts[0]: " + pParts[0] + ", pParts[1]: " + pParts[1]); - } - */ - /* - String pParts[] = qPart.split("="); - for(String pPart : pParts) { - logger.finer("pPart: " + pPart); - } - */ - } - } - return map; - } - - protected String getResponseString(Map map, String cmd, String antwort) { - Set keys = map.keySet(); - StringBuilder buf = new StringBuilder(); - buf.append("play"); - buf.append(System.lineSeparator()); - keys.forEach((Object key) -> { - buf.append("key: "); - buf.append(key); - buf.append(System.lineSeparator()); - buf.append("value: "); - buf.append(map.get(key)); - buf.append(System.lineSeparator()); - //logger.log(Level.FINE, "key {0} value {1}", new Object[]{key, map.get(key)}); - }); - buf.append(antwort); - return buf.toString(); - } - /** * 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 @@ -128,7 +52,6 @@ <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 @@ -205,7 +128,6 @@ entfernen und gibt so das Objekt wieder frei fuer die Ausfuehrung weiterer Kommandos. * - * @param t * @return die Antwort des Servers */ public String tilgen() { @@ -233,7 +155,6 @@ /** * 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 @@ -271,6 +192,53 @@ return antwort; } + /* --- --- */ + + protected String getParam(Map map, String key) { + Object o = map.get(key); + if(o != null) { + return o.toString(); + } else { + return null; + } + } + + /* + Den Query-Teil einer URL in die Parameter zerlegen + */ + protected Map getQueryMap(HttpExchange t) { + HashMap map = new HashMap(); + String query = t.getRequestURI().getQuery(); + if(query != null && query.length() > 0) { + String qParts[] = query.split("&"); + for(String qPart : qParts) { + logger.finer("qPart: " + qPart); + String pParts[] = qPart.split("="); + map.put(pParts[0], pParts[1]); + logger.finer("pParts[0]: " + pParts[0] + ", pParts[1]: " + pParts[1]); + } + } + return map; + } + + protected String getResponseString(Map map, String cmd, String antwort) { + Set keys = map.keySet(); + StringBuilder buf = new StringBuilder(); + buf.append(cmd); + buf.append(System.lineSeparator()); + keys.forEach((Object key) -> { + buf.append("key: "); + buf.append(key); + buf.append(System.lineSeparator()); + buf.append("value: "); + buf.append(map.get(key)); + buf.append(System.lineSeparator()); + //logger.log(Level.FINE, "key {0} value {1}", new Object[]{key, map.get(key)}); + }); + buf.append(antwort); + return buf.toString(); + } + /* ------ Implementierung ProzessLauscher ----------------- */ @Override -- Gitblit v1.9.3